본문 바로가기

* [R_Python] 데이터분석 정리/[Python] 머신러닝

로지스틱 회귀와 소프트맥스 회귀

 

로지스틱 회귀

- 회귀 알고리즘을 분류 문제에 사용할 때 로지스틱 회귀 사용

 

 

1. 확률 추정 

- 결과 값에 시그모이드 함수를 씌워 0과 1사이의 (확률) 값으로 변환해줌

 

- 로지스틱 회귀 모델의 확률 추정(벡터 표현식)

$ \hat{p} = h_{\theta} (x) = \sigma ( \theta^{T} x ) $

- 로지스틱 함수 

$ \sigma (t) = $ $ 1 \over 1+exp(-t) $

 

2. 클래스 예측

 

3. 훈련과 비용 함수

- 훈련할 때, 양성 샘플 (y=1)은 높은 확률을 정하고, 음성 샘플(y=0)은 낮은 확률을 추정하는 모델의 파라미터 $ \theta $를 찾음

- 식 4-16에 t가 0에 가까워질수록 -log(t)가 매우 커짐 (틀릴수록, 비용이 커짐)

- 전체 비용 함수는 전체 데이터 셋의 식 4-16을 평균한 것 (식 4-17)

- 식 4-17의 비용함수는 정규방정식처럼 알려진 최솟값을 계산하는 식이 없음

  (그러나 볼록함수 이므로 경사하강법이 전역 최솟값을 찾는 것을 보장)

 

python 코드

- 사이킷 런 : LogisticRegression()

 

 

 

소프트맥스 회귀(=다항 로지스틱 회귀)

- 로지스틱이 다중 클래스를 지원화도록 일반화 된 모델

 

1. 확률 추정

- 샘플 x가 주어지면 각 클래스 k에 대한 점수 $s_{k} x$를 계산 (식 4-19)

- 각 클래스의 점수 $s_{k} x$가 계산되면 소프트맥스 함수(식4-20)에 통과 (결과 = 클래스 k에 속할 확률)

- 예측시 추정 확률이 가장 높은 클래스를 선택 (식4-21)

 

where k : 클래스 수

 

2. 훈련 방법

- 크로스 엔트로피 비용 함수 최소화하여 사용

(타깃 클래스는 높은 확률, 다른 클래스에는 낮은 확률을 부여하도록 추정)

- 클래스가 2개일 땐 로지스틱 비용함수와 동일

 

python 코드

- 사이킷 런 : LogisticRegression(multi_class="multinomial")