우리는 지난시간에 로지스틱 함수를 배웠습니다.
$f(x)=\frac{1}{1+e^{-(\beta_{0}+\beta_{1}x)}}$
이제 위 함수의 계수들을 정할 차례입니다. 우리가 가진 데이터를 가장 잘 표현할 수 있도록 계수들을 정해야 하는데요. 우리가 가진 데이터는 아래와 같습니다.
번호 | 공부시간 | 통과여부 |
1 | 1.5 | 0 |
2 | 1.8 | 0 |
3 | 2.3 | 1 |
4 | 3.3 | 0 |
5 | 4.6 | 1 |
6 | 6.5 | 1 |
우리가 하고 싶은 일은 위 데이터를 잘 표현하는 로지스틱 함수를 찾는 것입니다. 오차를 정의하고, 오차를 최소화하는 방식으로 로지스틱 함수를 찾을 것입니다. 오차는 실제값과 예측값의 차이입니다. 예를 들어 번호1의 오차를 $\varepsilon_{1}$이라고 한다면 $\varepsilon_{1}$ 은 아래와 같이 정의됩니다.
$\varepsilon_{1}=\frac{1}{1+e^{-(\beta_{0}+1.5\beta_{1})}}-0$
우변의 첫째항은 예측값이고, 둘째항은 실제값입니다. 나머지 번호들의 오차도 정의해봅시다.
$\varepsilon_{2}=\frac{1}{1+e^{-(\beta_{0}+1.8\beta_{1})}}-0$
$\varepsilon_{3}=\frac{1}{1+e^{-(\beta_{0}+2.3\beta_{1})}}-1$
$\varepsilon_{4}=\frac{1}{1+e^{-(\beta_{0}+3.3\beta_{1})}}-0$
$\varepsilon_{5}=\frac{1}{1+e^{-(\beta_{0}+4.6\beta_{1})}}-1$
$\varepsilon_{6}=\frac{1}{1+e^{-(\beta_{0}+6.5\beta_{1})}}-1$
오차들의 합을 최소화 하는 것은 의미가 없습니다. 한 번호의 오차가 3이고, 다른 번호의 오차가 -3이라면 둘다 오차가 발생한 것임에도 합하면 오차가 0이 됩니다. 따라서 오차에 절댓값을 씌우거나 제곱을 해주어야 합니다. 일반적으로 오차들의 제곱합니다. 오차를 제곱한 값을 편의상 '비용(Cost)'이라고 놓겠습니다. 1번 데이터의 비용을 $Cost_{1}$ 이라고 놓겠습니다.
$Cost_{1}=\left ( \frac{1}{1+e^{-(\beta_{0}+1.5\beta_{1})}}-0 \right )^2$
이 비용들을 전부 더해주면 아래와 같습니다.
$\left ( \frac{1}{1+e^{-(\beta_{0}+1.5\beta_{1})}}-0 \right )^2+\left ( \frac{1}{1+e^{-(\beta_{0}+1.8\beta_{1})}}-0 \right )^2+\left ( \frac{1}{1+e^{-(\beta_{0}+2.3\beta_{1})}}-1 \right )^2 \\+\left ( \frac{1}{1+e^{-(\beta_{0}+3.3\beta_{1})}}-0 \right )^2 +\left ( \frac{1}{1+e^{-(\beta_{0}+4.6\beta_{1})}}-1 \right )^2+\left ( \frac{1}{1+e^{-(\beta_{0}+6.5\beta_{1})}}-1 \right )^2$
위 함수는 $\beta_{0}$과 $\beta_{1}$의 함수입니다. 이 함수를 J라고 놓겠습니다.
$J\left ( \beta_{1},\beta_{2} \right )=\left ( \frac{1}{1+e^{-(\beta_{0}+1.5\beta_{1})}}-0 \right )^2+\left ( \frac{1}{1+e^{-(\beta_{0}+1.8\beta_{1})}}-0 \right )^2+\left ( \frac{1}{1+e^{-(\beta_{0}+2.3\beta_{1})}}-1 \right )^2 \\+\left ( \frac{1}{1+e^{-(\beta_{0}+3.3\beta_{1})}}-0 \right )^2 +\left ( \frac{1}{1+e^{-(\beta_{0}+4.6\beta_{1})}}-1 \right )^2+\left ( \frac{1}{1+e^{-(\beta_{0}+6.5\beta_{1})}}-1 \right )^2$
비용들을 전부 더해준 위 함수를 비용함수(Cost Function) 이라고 부릅시다. 시그마 기호를 이용하여 간단히 나타내면 아래와 같습니다.
$\begin{align}
J(\beta_{0},\beta_{1})&=\sum_{i=1}^{6}\left ( \frac{1}{1+e^{-(\beta_{0}+x_{i}\beta_{1})}}-y_{i} \right )^2
\\&=\sum_{i=1}^{6}\left ( f(x_{i})-y_{i} \right )^2
\end{align}$
이 함수가 최소가 되도록 하는 $\beta_{1}$과 $\beta_{2}$ 을 구하면 됩니다. 해를 구할 때는 '경사하강법'을 사용합니다. 경사하강법을 통해 최소값을 잘 찾기 위해서는 함수가 아래로 볼록함수(convex function)라는 조건이 필요합니다. 만약 아래로 볼록 함수가 아니라면 국소해(local minimum)에 수렴할 수 있기 때문입니다. 아래 그림의 왼쪽이 볼록함수이고, 오른쪽이 볼록함수가 아닌 경우입니다.
편의상 2차원에서 그린 것이고, 변수가 2개($\beta_{1},\beta_{2})$이므로 3차원에 그려집니다. 문제가 있었습니다. 오차 제곱합 형태의 비용함수가 아래로 볼록 함수가 아니라는 것이었습니다. 이 문제를 어떻게 해결하는지 다음 시간에 알아봅시다.
(오차 제곱합 형태의 비용함수가 왜 아래로 볼록 함수가 아닌지 증명 추후 추가)
'머신러닝 이론 (지도학습) > 로지스틱 회귀분석' 카테고리의 다른 글
[손으로 푸는 로지스틱 회귀분석] 5. 비용함수 (2) log loss (0) | 2023.07.28 |
---|---|
[손으로 푸는 로지스틱 회귀분석] 3. 로지스틱 모형 (0) | 2022.12.10 |
[손으로 푸는 로지스틱 회귀분석] 2. 회귀분석의 한계 (0) | 2022.12.02 |
[손으로 푸는 로지스틱 회귀분석] 1. 소개 (0) | 2021.06.16 |
댓글