안녕하세요 pulluper 입니다. 😀
이번 포스팅에서는 Logistic Regression model 에 대하여 알아보겠습니다.
이전의 [Linear Regression] 에서는 종속변수 Y가 연속적 이었습니다. 즉, 철수가 시험공부시간을 예측하는데, 예측점수 y는 0~100 까지의 연속적인 data입니다. 그런데, 만약 이번에는 종속변수가 범주형 (0, 1 혹은 여러 class) 이라면 그대로 Linear Reression 을 사용하기는 문제가 있습니다. 다음 그림에서 x축은 공부 시간이고, y축은 시험에 합격, 불합격을 나타내는 0, 1 의 binary label 입니다.
이를 linear regression 으로 다음과 같은 직선을 얻었다고 가정해 봅시다. y = 0.25x - 0.5 그리고 자료들을 이 직선에 넣었을 때, 0.5 이상인 값들을 합격으로, 그 이하는 불합격으로 판단 할 수는 있습니다.
그런데, 아래 그림과 같이 새로운 data 가 들어왔을 때, 기존의 판단의 근거로 사용했던 직선에서 오른쪽 점선 직선으로 변경이 됩니다, 이를 기준으로 사용하기에는 0.5라는 수치는 판단오류를 너무 많이 나게 합니다. 이렇듯 Linear Regression 은 이상치에 대하여 민감한 단점이 있습니다. 그리고 어느 직선이든 기울기가 0이 아니면 그 범위는 $[-\infty, \infty]$ 이기 때문에, 학습할 때, 직선으로는 정확한 판단을 하기가 어렵고, test 에서 학습에 사용되지 않은 data에 대하여 예측을 잘 못할 가능성이 큽니다. 이를 해결하기 위해서 직선이 아닌 곡선으로 fitting 하기 위한 방법이 logistic regression 입니다.
그러면 범주형 data는 어떻게 regression 하면 좋을까요? 바로 logistic regression을 이용하면 됩니다! logit을 알기 전에 먼저 odds 의 개념부터 정리하고 가겠습니다.
Odds란 성공횟수 / 실패횟수 에 관한 비입니다. 예를들어, 주사위를 던질 때, (1, 3)이 나오면 승리하는 것이고, (2, 4, 5, 6) 이 나오면 패배 하는 게임에서 $odds = \frac{2}{4} = 0.5$ 입니다. 이것은 성공확률 / 실패확률 과 같으며, 어떤 사건에 대한 확률이 p이고 그것에 대한 odds는 $odds = \frac{p}{1-p}$ 입니다. (사건과 ~사건은 배반사건이며, 전체를 이룬다) p 는 $[0, 1]$ 의 범위를 가지며, 다음과 같은 그래프로 표현 가능합니다. 점근선은 1이며, $[0, 1]$ 의 정의역에서 $[0, \infty]$의 치역을 갖습니다
Logit 은 odds 에 log 를 취한것과 같습니다. 이때, 치역이 $[-\infty, \infty]$ 이고, (0.5, 0) 에 대하여 symmetric 합니다. 이 그래프는 다음과 같습니다.
logit 을 a 라고 가정하고, p에 대하여 정리를 하면, 다음과 같이 $p=\frac{1}{e^{-a} + 1}$ 이 나옵니다. 이 의미는, $[-\infty, \infty]$ 의 a를 $[0, 1]$ 의 p로 변환시켜 주는 것입니다. 선형회귀의 식은, 보통 $[-\infty, \infty]$ 을 갖기 때문에, a 대신 넣어주면, 그 값을 0~1로변환시켜주는 logistic function 으로 사용됩니다. 이것은 sigmoid function 이라고도 불립니다. 유도과정은 다음과 같습니다.
$\begin{align} \log (\frac{p}{1-p}) &= a \\ \frac{p}{1-p} &= e^a \\ \frac{1-p}{p} &= e^{-a} \\ \frac{1}{p} &= e^{-a} + 1 \\ p &= \frac{1}{e^{-a} + 1} \\ \end{align}$
그렇다면, linear regression 을 $Wx + b$라고 했을 때, logistic(sigmoid) function 에 넣으면, $\frac{1}{e^{-Wx + b} + 1}$ 이 되고 이것은 다음 그림처럼 곡선을 따라서 fitting 하게 됩니다. 이를 통해 범주형 data에 대한 regression 을 더 잘 할수 있습니다. 👏👏👏
이제 sigmoid 함수를 이용한 output에 대하여, 어떻게 학습을 하는지 알아보겠습니다.
Linear regression 에서 사용했던 OLS/ GD / MLE 를 사용해보겠습니다
OLS (ordinary least square) 를 사용해보려 하는데, 다음과 같은 의견이 있었습니다. sigmoid function 은 OLS 같은 방식을 배제시킨다는.. 따라서 GD, newton 방법, MLE 등을 이용해야 합니다.
MLE
logistic regression은 binary cross entropy 의 loss 를 사용합니다. 이번에 MLE를 통해서 BCE의 유도과정을 알아보겠습니다.
위에서 구한 $\frac{1}{1 + e^{-Wx + b}}$ 는 0~1 의 값을 가집니다.
이는 bernoulli 분포를 가진다고 가정하기 적당합니다. bernoulli 는 확률변수 Y 에 대하여 다음과 같은 pdf를 갖습니다, $p(Y|\theta) = L(\theta|Y)= (\theta)^Y (1-\theta)^{1-Y} ,where Y \in {0, 1}$ 따라서 data들의 likelihood 는 pdf들의 곱 입니다 .
이를 정리하면, $L(\theta | Y) = \prod_{i} \theta^y_i (1-\theta)^{(1-y_i)}$ 입니다. 여기에 log를 씌워 log likelihood 를 만들면, $ \log(L) = \sum_{i} y_i \log(\theta) + \sum_i (1-y_i) \log(1-\theta)$ 입니다. $\theta$ 는 0 ~ 1 을 가지는 확률이고 이는 우리가 구한 $f(x|W, b) = \dfrac{1}{1 + e^{-Wx + b}}$ 로 대체될 수 있습니다.
이를 정리하면 $ \log(L) = \sum_{i} y_i \log(f(x)) + \sum_i (1-y_i) \log(1-f(x))$ 입니다. MLE에서는 이것을 maximize 시켜야 하므로, -1 을 곱한 후 minimize 시키는 방법으로 (binary) cross entropy 를 구할 수 있습니다.
GD (Gradient Descent)
이제 위에서 구한 binary cross entropy 함수 $bce(X, Y) = - (\sum_{i} y_i \log(f(x_i)) + \sum_i (1-y_i) \log(1-f(x_i)))$ 를 minimize 시켜야 하므로 이를 Gradient Descent 방법으로 줄여서 W, b를 업데이트 할 수 있습니다.
Quiz
오늘 다뤘던 내용을 마무리 하기전 quiz 로 복습을 해 보겠습니다.
1. odds 란?
2. logit 이란?
3. sigmoid 유도과정은?
4. bernoiulli 분포란?
5. binary cross entropy 를 MLE 를 통해 유도한다면?
이번에는 두가지 클래스 분류를 할 수 있는 Logistic Regression에 대하여 sigmoid 와 binary cross entropy 에 대하여 알아보았습니다. 다음 포스팅에서는 multi class 에 대한 분류를 할 수 있는 softmax regression 에 대하여 알아보겠습니다. 질문과 토론은 항상 환영합니다. 감사합니다~뿅!! 😎😎😎
reference :
https://hyunlee103.tistory.com/12
https://nittaku.tistory.com/478
https://csm-kr.tistory.com/35?category=1268905
'Basic ML' 카테고리의 다른 글
[Theme 06] Perceptron, XOR, MLP, Universal Approximation Theorem (3) | 2023.01.24 |
---|---|
[Theme 05] MLE (Maximum likelihood estimation) 을 통한 Loss (0) | 2022.07.05 |
[Theme 04] Multinomial Logistic Regression (Softmax Regression) (0) | 2022.06.30 |
[Theme 02] Linear Regression(선형회귀) (Feat. OLS/GD/MLE) (4) | 2022.04.28 |
[Theme 01] What is Artificial Intelligence / Machine Learning / Deep Learning? (2) | 2022.03.30 |
댓글