[혼자 공부하는 머신러닝 + 딥러닝] 9강_로지스틱 회귀 알고리즘을 배우고 이진 분류 문제에서 클래스 확률 예측하기
9강_로지스틱 회귀 알고리즘을 배우고 이진 분류 문제에서 클래스 확률 예측하기
- 로지스틱 회귀 알고리즘을 배우고 이진 분류 문제에서 클래스 확률을 예측함.
- <혼자 공부하는 머신러닝+딥러닝>의 코드 저장소
럭키백의 확률
- "k-최근접 이웃은 주변 이웃을 찾아주니까 이웃의 클래스 비율을 확률이라고 출력하면 되지 않을까?"
데이터 준비
- read_csv()
- 데이터 읽어들임
- head()
- 처음 5개 행 출력
- unique()
- 열의 값 추출
- to_numpy()
- 넘파이 배열로 바꿈
- 데이터 세트 2개 (훈련, 테스트)
- 표준화 전처리
- 훈련 세트의 통계 값으로 테스트 세트를 변환해야 함.
k-최근접 이웃 분류기의 확률 예측
- 다중분류
- 타깃 데이터에 2개 이상의 클래스가 포함된 문제
- 사이킷런에서는 문자열로 된 타깃값을 숫자로 바꾸지 않고 그대로 사용할 수 있음. (순서는 알파벳 순)
- predict()
- 타깃값으로 예측을 출력
- predict_proba()
- 클래스별 확률값 반환
- round()
- 소수점 첫째 자리에서 반올림 (decimals 매개변수로 아래 자릿수 지정 가능)
- kneighbors()
- 2차원 배열이어야 함
로지스틱 회귀
- 로지스틱 회귀는 이름은 회귀이지만 분류 모델.(선형회귀와 동일하게 선형 방정식을 학습)
- z 는 어떤값도 가능하지만 확률이 되기 위해 0~1사이값이 되어야 함. (시그모이드 함수, 로지스틱 함수 사용)
로지스틱 회귀로 이진 분류 수행하기
- 불리언 인덱싱
- True, False 값을 전달하여 행을 선택할 수 있는것 (넘파이 배열)
- 비교 연산자를 사용하면 모두 True로 만들 수 있음
- predict_proba()
- 예측 확률 제공 (음성 클래스와 양성 클래스에 대한 확률 출력)
- decisioin_function()
- z 값 출력 (양성 클래스)
- expit() - scipy 라이브러리
- z 값을 시그모이드 함수에 통과시키면 확률을 얻을 수 있음
- coef_ / intercept
- 로지스틱 모델이 학습한 선형 방정식의 계수
로지스틱 회귀로 다중 분류 수행하기
- 다중분류는 클래스마다 z 값을 하나씩 계산함.
- 가장 높은 z 값을 출력하는 클래스가 예측 클래스가 됨.
- 다중분류는 소프트맥스 함수를 사용하여 7개의 z값을 확률로 변환함.
- 소프트맥스 함수
- 여러 개의 선형 방정식의 출력값을 0~1 사이로 압축하고 전체 합이 1이 되도록 만듬.
- 이를 위해 지수 함수를 사용하기 때문에 정규화된 지수 함수라고도 부름
- decision_function()
- z1~z7 까지의 값을 구한 다음 소프트맥스 함수를 사용해 확률로 바꿈.
- softmax() - scipy.special
- axis 매개변수 : 소프트맥스를 계산할 축을 지정함.
로지스틱 회귀로 확률 예측
- 분류 모델은 예측뿐만 아니라 예측의 근거가 되는 확률을 출력할 수 있음.
- k-최근접 이웃 모델은 이웃한 샘플의 클래스 비율이므로 항상 정해진 확률만 출력함.
- 로지스틱 회귀는 회귀 모델이 아닌 분류 모델이며, 선형 회귀처럼 선형 방정식을 사용함.
- 계산한 값을 0~1 사이로 압축 (0~100% 확률)
- 하나의 선형 방정식을 훈련함
- 시그모이드 함수에 통과시켜 양성 클래스에 대한 확률을 구함
- 음성클래스의 확률은 (1 - 양성 클래스의 확률)
- 다중 분류일 경우에는 클래스 개수만큼 방정식 훈련
- 출력값을 소프트맥스 함수를 통과시켜 전체 클래스에 대한 합이 항상 1이 되도록 만듬.
키워드로 끝내는 핵심 포인트
- 로지스틱 회귀
- 선형 방정식을 사용한 분류 알고리즘
- 선형 회귀와 달리 시그모이드 함수나 소프트맥스 함수를 사용하여 클래스 확률을 출력할 수 있음.
- 다중 분류
- 타깃 클래스가 2개 이상인 분류 문제
- 로지스틱 회귀는 다중 분류를 위해 소프트맥스 함수를 사용하여 클래스를 예측함.
- 시그모이드 함수
- 선형 방정식의 출력을 0과 1 사이의 값으로 압축하며 이진 분류를 위해 사용함.
- 소프트맥스 함수
- 다중 분류에서 여러 선형 방정식의 출력 결과를 정규화하여 합이 1이 되도록 만듬.
핵심 패키지와 함수
- scikit-learn
- LogisticRegression
- 선형 분류 알고리즘인 로지스틱 회귀를 위한 클래스
- predict_proba()
- 메서드는 예측 확률을 반환함.
- 이진 분류의 경우: 샘플마다 음성 클래스와 양성 클래스에 대한 확률을 반환함
- 다중 분류의 경우: 샘플마다 모든 클래스에 대한 확률 반환
- decision_function()
- 모델이 학습한 선형 방정식의 출력을 반환
- 이진 분류의 경우: 양성 클래스의 확률이 반환, 이 값이 0보다 크면 양성 클래스, 작거나 같으면 음성 클래스로 예측
- 다중 분류의 경우: 각 클래스마다 선형 방정식을 계산, 가장 큰 값의 클래스가 예측 클래스가 됨.
확인 문제
- 2개보다 많은 클래스가 있는 분류 문제
- 로지스틱 회귀가 이진 분류에서 확률을 출력하기 위해 사용하는 함수
- decision_function() 메서드의 출력이 0일때 시그모이드 함수의 값
댓글
댓글 쓰기