• toc {:toc}

이 글은 김성범 교수님의 [핵심 머신러닝] 로지스틱회귀모델 강의를 정리했음을 밝힙니다.

로지스틱 회귀란?

로지스틱 회귀의 정의

로지스틱 회귀 (영어: logistic regression) 는 영국의 통계학자인 D. R. Cox 가 1958 년 [1] 에 제안한 확률 모델로서 독립 변수의 선형 결합을 이용하여 사건의 발생 가능성을 예측하는 데 사용되는 통계 기법이다.
로지스틱 회귀는 일반적인 선형 모델의 특수한 경우로 볼 수 있으므로 선형 회귀와 유사하다. (출처: 위키피디아)

로지스틱 회귀 또한 선형 회귀와 같이 변수간의 관계를 통해 값을 도출한다. 하지만 연속형 데이터를 다루는 선형 회귀와 다르게 종속 변수가 통과 여부와 같은 범주형 데이터를 대상으로 한다는 점에서 차이가 있다.


로지스틱 회귀에서는 데이터가 특정 범주에 속하는 것을 예측하기 위해 다음의 과정을 거친다.

  1. 모든 속성들의 계수와 절편을 0 으로 초기화한다.
  2. 각 속성들의 값에 계수를 곱해서 log-odds 를 구한다.
  3. log-odds 를 sigmoid 함수에 넣어서 [0, 1] 범위의 확률
You can't use 'macro parameter character #' in math mode\pi $$를 구한다. 4. 출력한 확률값을 Negative Log Likelihood 혹은 Binary Cross Entropy를 통해 오차를 최소화하는 방향으로 학습한다. <br> 과정이 쉽사리 이해되지 않을 것이다. 로지스틱 회귀의 과정을 수식과 함께 따라가보자. ## 로지스틱 회귀 배경 범주형 데이터를 예측하기 위해서는 예측값이 0 또는 1을 나타내야 하고 이를 파라미터를 포함한 선형 회귀식으로 나타내면 아래 1)과 같다. Y는 예측값, X는 입력값을 나타내고,

\beta_0,\space\beta_i, \space\epsilon

\begin{gather*}

NaN. \space\space Y_i = \beta_0+\beta_1X_i+\epsilon_i, \quad Y_i=0 \space or \space 1

\ \

NaN. \space\space Assume \space E(\epsilon_i)=0, \quad E(Y_i) = \beta_0+\beta_1X_i \ \

NaN. \space\space P(Y_i=1) = \pi_i \ \

NaN. \space\space P(Y_i=0) = 1-\pi_i\ \

NaN. \space\space E(Y_i) = 1\cdot\pi_i + 0\cdot(1-\pi_i)=\pi_i \ \

NaN. \space\space E(Y_i) = \pi_i = \beta_0+\beta_1X_i

\end{gather*}

\epsilon_i

Y_i

\mu

1-\mu

Bern(x; \mu) = \mu^x(1-\mu)^{(1-x)}

\pi_i

1-\pi_i

\phi(z)=\frac 1 {1+e^{-z}}

-\infty~\infty

\frac {d\phi(z)} {dz} = \frac 1 {1+e^{-z}}(1-\frac 1 {1+e^{-z}}) = \phi(z)(1-\phi(z))

\begin{gather*}

1)\quad E(Y) = \pi(X=x)=\frac 1 {1+e^{-(\beta_0+\beta_1x)}} \ \

2)\quad E(Y) = \pi(X) =\frac 1 {1+e^{-(\beta_0+\beta_1x+\dots+\beta_px_p)}}

\end{gather*}

You can't use 'macro parameter character #' in math mode 1번은 단순 로지스틱 회귀모델, 2번은 다항 로지스틱 회귀모델의 식이다. 로지스틱 회귀를 하는 목적을 다시 생각해보면 우리는 사건의 발생가능성을 예측하는 것이 목적이고 더 자세하게 들어가면 입력값과 작용하는 최적의 **파라미터의 값**을 구하는 것이 우리의 목적이다. 하지만 로지스틱 함수를 적용한 로지스틱 회귀식은 비선형적이기 때문에 직관적으로 파라미터를 이해할 수 없다. 때문에 로지스틱 회귀에서는 logit이라는 개념이 추가된다. <br> --- ## Logit(Log-Odds) Logit이라는 개념은 Log와 Odds의 개념이 합쳐진 것을 말한다. 여기에 사용되는 Odds에 대해 알아보자. <br> ### Odds(승산) Odds는 승산을 뜻한다. - 승산 : 성공 확률을 p로 정의할 때, 실패 대비 성공 확률 비율

\begin{gather*}

Odd = \frac p {1-p} \ \

p = 1 \to odd = \infty \ \

p = 0 \to odd = 0

\end{gather*}

\begin{gather*}

Odds = \frac {\pi(X=x)} {1-\pi(X=x)} \ \

log(Odds) = log\left(\frac {\pi(X=x)} {1-\pi(X=x)}\right)

= log\left(\frac {\frac 1 {1+e^{-(\beta_0+\beta_1x)}}} {1-\frac 1 {1+e^{-(\beta_0+\beta_1x)}}}\right)

= -log(e^{-(\beta_0+\beta_1x)})

= \beta_0+\beta_1x

\end{gather*}

You can't use 'macro parameter character #' in math mode logit 변환을 시행하면 위와 같은 형태로 선형의 형태로 나오기 때문에 x가 증가할 때 log(Odds)가 증가한다는 이전보다 직관적인 해석이 가능해진다. 개인적으로는 정의에서 말했던 선형 회귀의 특별한 경우라는 말 뜻은 위처럼 logit 변환을 했을 때 선형으로 볼 수 있기 때문이라 생각했다. 자, 이제 다중 로지스틱 회귀 모델로 확장시켜보자. ## 다중 로지스틱 회귀모델

\begin{gather*}

\pi(X) =\frac 1 {1+e^{-(\beta_0+\beta_1x+\dots+\beta_px_p)}}

\ \

Odds = \frac {\pi(X=x)} {1-\pi(X=x)} = e^{-(\beta_0+\beta_1x_1+\dots+\beta_px_p)}

\ \

log(Odds) = log(\frac {\pi(X=x)} {1-\pi(X=x)}) = \beta_0+\beta_1x_1+\dots+\beta_px_p

\end{gather*}

You can't use 'macro parameter character #' in math mode 위와 같은 형태로 표현이 된다. 다음은 로지스틱 회귀모델을 어떻게 학습할 것인가에 대한 것이다. ## 학습 선형 회귀에서와 같이 제곱 오차 함수를 사용한다고 생각해보자. 제곱 오차 함수의 식은 아래와 같았다.

Loss = \sum_i (y_i-f(x_i, w))

Misplaced &함수 f가 선형이었을 때는 제곱을 할 경우 최고차항이 2차인 그래프로 그려지면서 최소점을 찾을 수 있었다. 하지만 함수 f가 로지스틱 함수(시그모이드 함수)일 때는 제곱을 할 경우 파라미터가 비선형적으로 되기 때문에 Local Minima가 발생하고 Gradient Descent를 진행했을 때 Local Minima에 빠지는 경우가 발생한다. 때문에 제곱 오차 함수를 사용하는 대신 Likelihood 개념을 사용한다. Local Minima에 대한 설명은 [Global & Local Minima, Saddle Point](https://mouseku.github.io/blog/devlog/ml/dl/2022-11-01-minima-saddle-point/) 에서 설명했다. <br> ### 최대 우도 추정법(Maximum Likelihood Estimation) 우도에 대한 이해에 관해서는 [확률(Probability) vs 가능도(Likelihood)](https://jinseob2kim.github.io/probability_likelihood.html)를 참고하고 최대한 이해하고자 노력했다. (정확히 이해한 것 같지는 않다.) 위에서 우리는 확률함수를 정의했다.

f_i(y_i) = \pi(x_i)^{y_i}(1-\pi(x_i))^{1-y_i}

L = \prod_if_i(y_i) = \prod_i\pi(x_i)^{y_i}(1-\pi(x_i))^{1-y_i}

\begin{gather*}

logL = log\left[\prod_i\pi(x_i)^{y_i}(1-\pi(x_i))^{1-y_i}\right] \ \

1-1) \quad =\sum_i \left(y_i log\pi(x_i)+(1-y_i)log(1-\pi(x_i))\right) \ \

1-2) \quad =log \prod_i \left[\frac {\pi(x_i)} {1-\pi(x_i)}\right]-\sum_i log(1-\pi(x_i)) \ \

  1. \quad=\sum_i y_i log\left[\frac {\pi(x_i)} {1-\pi(x_i)} \right]-\sum_i log(1-\pi(x_i)) \ \

  2. \quad= \sum_i y_i (\beta_0+\beta_1x_1+\dots+\beta_px_p)-\sum_i log(1+e^{\beta_0+\beta_1x_1+\dots+\beta_px_p})

\end{gather*}

\beta

\beta

You can't use 'macro parameter character #' in math mode <br> 하지만 이렇게 구한 log likelihood 함수도 Loss function으로 생각할수는 없다. 이는 Loss의 의미를 생각했을 때 손실이 낮아지는 파라미터값이 최적의 값이지만 log likelihood는 최대가 되는 값이 최적의 값이기 때문이다. 때문에 -를 붙여 Negative Log Likelihood(NLL)를 손실함수로 사용한다. <br> 로지스틱 회귀를 정리하는 3일동안 계속해서 왜 log likelihood와 Cross-Entropy의 차이, log likelihood는 Loss function으로 사용하지 않는 것인지 둘 사이의 관계를 명확하게 이해하지 못했다. 이 부분은 추후 추가해야 할 것 같다. <br> ### Cross Entropy Cross-Entropy의 설명은 아래 포스트에서 설명했다. - Cross Entropy : 두 확률분포 (

p(x), q(x)

\hat y

y

Cross Entropy = -\sum p(x) log\space q(x)

= - \sum y log \hat y

You can't use 'macro parameter character #' in math mode - Cross Entropy : 음의 log likelihood function의 기댓값 - Cross Entropy를 최소화하는 것은 log likelihood function을 최대화하는 것과 같다. - Cross Entropy를 최소화하는 것은 입력 분포 p(x)와 출력분포 q(x)의 차이를 최소화하는 것이다. <br> #### Binary Cross Entropy 이진 분류를 진행한다고 생각하고 Cross Entropy를 생각해보자. 이진 분류이기 때문에 출력되는 클래스가 0, 1이다. y = 1일 경우

CE = - \sum log \hat y

CE = - \sum log (1-\hat y)

BCE = - \sum (y log \hat y +(1-y) log (1-\hat y))

y log \hat y

log(1-\hat y)

y log \hat y

NLL= - \sum_i (y_i log\pi(x_i)+(1-y_i)log(1-\pi(x_i)))

\pi