2020. 12. 31. 18:17ㆍ머신러닝 교과서 with 파이썬, 사이킷런, 텐서플로
로지스틱 회귀분석은 시그모이드 함수를 활성화 함수로, 로그 가능도 함수를 비용함수로 사용한다.
활성화함수
오즈비(odds ratio) : 특정 이벤트가 발생할 확률
$$\frac{P}{(1 - P)}$$
여기서 P는 양성 샘플일 확률로, 예측하려는 대상이 발생할 확률을 가리킨다.
보통 오즈비에 로그 함수를 취해 로짓 함수를 정의한다.
$$ logit(P) = log \frac{P}{(1 - P)} $$
특성의 가중치 합과 로그 오즈 사이의 선형관계는 다음과 같이 표현이 가능하다.
$$ logit(P(y=1 \mid x)) = W_0X_0 + W_1X_1 + W_2X_2 + \cdots + W_mX_m = W^T X$$
* (P(y=1|x)은 x의 상황이 주어졌을 때의 1이 될 조건부확률임.
해당 알고리즘을 통해 찾고자하는 것은 어떤 샘플이 특정 클래스에 속할 확률을 예측하는 것이기 때문에 logit 함수를 거꾸로 뒤집어서 사용한다. 이를 로지스틱 시그모이드 함수 또는 시그모이드 함수라고 말한다.
$$ \Phi(z) = \frac{1}{(1 + e^{-z})} $$
이렇게 만들어진 로지스틱 시그모이드 함수는 다음과 같이 s자 형태를 띈다.
$$ \hat{y} = 1, \{\phi(z) \ge 0.5\} $$
$$ \hat{y} = 0, \{\phi(z) < 0.5\} $$
z가 커질수록 e가 작아지기 때문에 \(\phi(z)\)는 1에 수렴한다. 반대로 z가 작아질수록 e가 커지고 분모가 커지기 때문에 \(\phi(z)\)은 0에 수렴한다. z가 0인 경우에는 \(\phi(z)\)의 값이 0.5가 된다. 이와 같은 원리로 로지스틱 회귀분석은 최종 입력값인 z가 0보다 큰지 작은 지에 따라 클래스를 분류한다. 즉 \(\phi(z)\)를 z로 표현하면 다음과 같이 표현할 수 있다. 로지스틱 회귀분석에서는 로지스틱 시그모이드 함수를 활성화 함수로 활용한다.
$$ \hat{y} = 1, \{z \ge 0\} $$
$$ \hat{y} = 0, \{z < 0\} $$
비용함수
- 기존(Perceptron)의 비용함수 : 제곱 오차합 비용으로 정의 (SSE)
$$ J(w) = \sum_i \frac{1}{2}(\phi(z^i)-y^i)^2 $$
SSE
- 로지스틱 회귀분석에서의 비용함수 : 로그가능도 함수를 활용해 정의.
$$ l(w) = logL(w) = \sum_{i=1}^{n} \left[y^{(i)} log(\phi(z^{(i)})) + (1-y^{(i)})log(1-\phi(z^{(i)}) \right] $$
로그 가능도 함수
가능도 함수의 정의
가능도 함수는 양성샘플일 확률의 \(y^i \)과 음성샘플일 확률(1-양성샘플일 확률)의 \(1- y^i \)제곱 간의 수열의 곱에 로그를 취한 것이다.
$$ L(w) = \prod_{i=1}^{n} (\phi(z^{(i)}))^{y^{(i)}} (1 -\phi(z^{(i)}))^{1-y^{(i)}} $$
가능도 함수의 특징
- 양성샘플일 경우에는 음성샘플일 확률이 1이 되고 양성샘플일 확률만 남음
- 음성샘플일 경우에는 양성샘플일 확률이 1이 되고 음성샘플일 확률만 남음
- 이를 최대화하기 위해선 양성샘플일 확률은 가능한 크고, 음성샘플일 확률은 가능한 작아야함
- 해당 식이 성립하기 위한 조건은 각 샘플이 독립적이라고 가정해야함.
가능도 함수에 로그 함수를 적용한 것이 로그 가능도 함수이다.
$$ logL(w) = \sum_{i=1}^{n} \left[y^{(i)} log(\phi(z^{(i)})) + (1-y^{(i)})log(1-\phi(z^{(i)}) \right] $$
로그 가능도 함수의 장점
1. 로그 함수를 적용하면 가능도가 매우 작을 때 발생하는 수치상의 underflow를 방지할 수 있다.
2. 계수의 곱을 계수의 합으로 바꿀 수 있다.
3. 미분을 통해 도함수를 도출하고 최대값을 도출하기 쉽다.
로지스틱 회귀분석은 이를 활용해 다음과 같이 비용함수를 정의한다.
$$ J(w) = \sum_{i=1}^{n} \left[-y^{(i)} log(\phi(z^{(i)})) - (1-y^{(i)})log(1-\phi(z^{(i)}) \right] $$
로지스틱 회귀분석에서의 비용함수
이를 binary classification 문제로 바라본다면 y의 값은 0과 1의 값이 존재하게 된다.
그렇다면 비용함수는 y가 1일 때 \(-log(\phi(z))\), 0일 때는 \(-log(1 - \phi(z))\)의 값을 가지게 된다.
이를 그래프로 그리면 다음과 같은 모습이 나온다.
x축은 시그모이드 함수의 활성화 값이다. y축은 로지스틱 비용이다. 실선을 보면 클래스 1에 속한 샘플을 정확히 예측하면 비용이 0에 가까워지지만 잘못 예측했을 때의 비용은 무한대로 가까워진다. 점선도 마찬가지로 클래스 0에 속한 샘플을 정확히 예측하면 비용이 0에 가까워지지만 잘못 예측했을 때의 비용은 무한대로 가까워진다. 즉, 잘못된 예측에 더 큰 비용을 부여한다는 점이 로그 가능도 함수를 비용함수로 정의했을 때의 장점이다.
'머신러닝 교과서 with 파이썬, 사이킷런, 텐서플로' 카테고리의 다른 글
[6] 의사결정나무의 정보이득과 불순도 (0) | 2021.01.06 |
---|---|
[5] 커널 SVM을 활용한 비선형 문제 해결하기 (0) | 2021.01.04 |
[4] 서포트 벡터 머신(SVM) 원리 이해하기 (선형) (0) | 2020.12.31 |
[2] 아달린(Adaline, 적응형 선형 뉴런) 구현해보기 (0) | 2020.12.31 |
[1] 퍼셉트론(Perceptron) 구현해보기 (1) | 2020.12.31 |