본문 바로가기
머신러닝 이론 (지도학습)/로지스틱 회귀분석

[손으로 푸는 로지스틱 회귀분석] 4. 비용함수 (1) 오차제곱합을 쓰지 않는 이유

by bigpicture 2023. 7. 26.
반응형

우리는 지난시간에 로지스틱 함수를 배웠습니다. 

 

$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차원에 그려집니다. 문제가 있었습니다. 오차 제곱합 형태의 비용함수가 아래로 볼록 함수가 아니라는 것이었습니다. 이 문제를 어떻게 해결하는지 다음 시간에 알아봅시다. 

 

(오차 제곱합 형태의 비용함수가 왜 아래로 볼록 함수가 아닌지 증명 추후 추가)

 

 

 

 

반응형

댓글