[단순선형회귀] 회귀계수 유도과정

신현호·2022년 4월 30일
0

Machine Learning

목록 보기
1/8
post-custom-banner

이번 포스팅에서는 최소자승법을 이용한 단순선형회귀에서 회귀계수들을 구하는 방법과 실제 계산 과정을 다루어보려고 합니다.

즉, 다음과 같은 설명변수 XX와 종속변수 YY에 대해

X={x1,x2,x3,... ,xn}\qquad\qquad X = \{x_1, x_2, x_3, ... \space, x_n\}
Y={y1,y2,y3,... ,yn}\qquad\qquad Y = \{y_1, y_2, y_3, ... \space, y_n\}

회귀방정식 y^=β0+β1x\hat{y} = \beta_0 + \beta_1x 의 계수인 β0,β1\beta_0, \beta_1 을 구해보고자 합니다.


어떤 공식을 이해하려 할 때는 바로 유도과정을 보는 것보다 전체 맥락을 먼저 이해하고 유도과정을 보는 것이 더 좋습니다.
따라서 단순선형회귀의 기본 아이디어가 무엇인지 먼저 살펴보아야 할텐데요.
단순선형회귀의 기본 아이디어는 다음과 같습니다.

예측값과 실제값 사이의 에러가 가장 적도록 하는 예측 직선을 찾는 것

쉽게 말해 오차가 가장 적은, 즉 예측을 가장 잘 하는 예측선을 찾고 싶은 것이죠.

이제 우리는 일상 언어로 된 단순선형회귀의 기본 아이디어를 수학 언어로 바꾸어나가야 합니다.

먼저, 찾고 싶은 예측 직선을 다음과 같이 표현합니다.

y^=β0+β1x\qquad\qquad\qquad \hat{y} = \beta_0 + \beta_1x

그리고 '예측값과 실제값 사이의 에러가 가장 적도록 하는' 을 수학적으로 표현하기 위해 먼저 '예측값과 실제값 사이의 에러'를 어떻게 표현할지 정해야 합니다.
이를 표현하는 방법론은 여러가지가 있는데요, 대표적으로 다음과 같은 것들입니다.

(실제값예측값)2\qquad\qquad\qquad \sum(실제값 - 예측값)^2

실제값예측값\qquad\qquad\qquad \sum|실제값 - 예측값|

(실제값예측값)2\qquad\qquad\qquad \sqrt{\sum(실제값 - 예측값)^2}

ii번째 실제값을 yi,y_i, ii번째 예측값을 yi^\hat{y_i} 라고 표기하여 위의 세 식을 조금 더 수식스럽게 표현해보겠습니다.

(실제값예측값)2=(yiyi^)2\qquad\qquad\qquad \sum(실제값 - 예측값)^2 = \sum(y_i - \hat{y_i})^2

실제값예측값=yiyi^\qquad\qquad\qquad \sum|실제값 - 예측값| = \sum|y_i - \hat{y_i}|

(실제값예측값)2=(yiyi^)2\qquad\qquad\qquad \sqrt{\sum(실제값 - 예측값)^2} = \sqrt{\sum(y_i - \hat{y_i})^2}

위의 세 수식 모두 예측값과 실제값 사이의 에러를 표현할 수 있고 각각의 장단점이 있지만 여기서는 맨 처음 식을 사용하겠습니다.
바로 맨 처음식이 미분이 가능하기 때문입니다.
여기서 미분 가능한 식을 고른 이유는 어떤 식의 최대, 최소를 찾을 때 미분이 아주 강력한 도구가 되기 때문입니다. (우리는 에러를 최소화하려고 하는 중이죠)

그리고 우리는 y^=β0+β1x\hat{y} = \beta_0 + \beta_1x 와 같이 표현하기로 했으므로
(yiyi^)2\sum(y_i - \hat{y_i})^2 에서 yi^=β0+β1xi\hat{y_i} = \beta_0 + \beta_1x_i 라고 바꾸어 써보겠습니다.

(yiyi^)2=(yiβ0β1xi)2\qquad\qquad \sum(y_i - \hat{y_i})^2 = \sum(y_i - \beta_0 - \beta_1x_i)^2

이제 이 식을 최소화시키는 β0,β1\beta_0, \beta_1 값을 찾으면 되겠죠.
(이 식은 β0,β1\beta_0, \beta_1에 대한 함수라는 것을 놓치지 마세요! xi,yix_i, y_i 들은 주어진(고정된) 값이므로 상수입니다)


이제 위 식을 미분하여 0으로 놓고 이를 만족하는 β0,β1\beta_0, \beta_1 을 찾아보겠습니다.

β0(yiβ0β1xi)2=2β0(yiβ0β1xi)=0\qquad \dfrac{\partial}{\partial\beta_0}\sum(y_i - \beta_0 - \beta_1x_i)^2 = \sum-2\beta_0(y_i - \beta_0 - \beta_1x_i) = 0

(yiβ0β1xi)=0\qquad\Rightarrow \sum(y_i - \beta_0 - \beta_1x_i) = 0

yiβ0β1xi=0\qquad\Rightarrow \sum{y_i} - \sum\beta_0 - \sum\beta_1x_i = 0

yinβ0β1xi=0 ①\qquad\Rightarrow \sum{y_i} - n\beta_0 - \beta_1\sum{x_i} = 0 \qquad\qquad\qquad \cdots\cdots \space ①

β1(yiβ0β1xi)2=2xi(yiβ0β1xi)=0\qquad \dfrac{\partial}{\partial\beta_1}\sum(y_i - \beta_0 - \beta_1x_i)^2 = \sum-2x_i(y_i - \beta_0 - \beta_1x_i) = 0

xi(yiβ0β1xi)=0\qquad\Rightarrow \sum x_i(y_i - \beta_0 - \beta_1x_i) = 0

(xiyiβ0xiβ1xi2)=0\qquad\Rightarrow \sum (x_iy_i - \beta_0x_i - \beta_1x_i^2) = 0

xiyiβ0xiβ1xi2=0 ②\qquad\Rightarrow \sum{x_iy_i} - \beta_0\sum{x_i} - \beta_1\sum{x_i^2} = 0 \qquad\enspace\enspace\enspace \cdots\cdots \space ②

결과적으로 ,①, ② 두 개의 수식을 얻었습니다. (이것을 정규방정식이라고 부릅니다)
모양은 복잡하지만 β0,β1\beta_0, \beta_1 에 대한 연립일차방정식이기 때문에 충분히 해를 구할 수 있죠.

β0\beta_0를 소거해주기 위해 식의 양변에 xin\dfrac{\sum{x_i}}{n}을 곱해주겠습니다.
그런데 식을 쓰기 전에 xin\dfrac{\sum{x_i}}{n}의 의미를 생각해보면 xix_i 들의 합을 총 개수로 나눠준 것이므로 XX의 평균이 됨을 알 수 있습니다. 이것을 xˉ\bar{x} 라고 표현하겠습니다.

이제 진짜로 식의 양변에 xin,\dfrac{\sum{x_i}}{n},xˉ\bar{x} 를 곱해주면

xˉyiβ0xiβ1xˉxi=0\qquad \bar{x}\sum{y_i} - \beta_0\sum{x_i} - \beta_1\bar{x}\sum{x_i} = 0

이 되고, 여기서 식을 변끼리 빼고 정리하면 다음과 같습니다.

xˉyixiyiβ1xˉxi+β1xi2=0\qquad \bar{x}\sum{y_i} - \sum{x_iy_i} - \beta_1\bar{x}\sum{x_i} + \beta_1\sum{x_i^2} = 0

β1(xi2xˉxi)=xiyixˉyi\qquad\Rightarrow \beta_1(\sum{x_i^2} - \bar{x}\sum{x_i}) = \sum{x_iy_i} - \bar{x}\sum{y_i}

β1=xiyixˉyixi2xˉxi\qquad\Rightarrow \beta_1 = \dfrac{\sum{x_iy_i} - \bar{x}\sum{y_i}}{\sum{x_i^2} - \bar{x}\sum{x_i}}

이제 약간의 트릭을 써보겠습니다.
(xin=xˉ,yin=yˉ\dfrac{\sum{x_i}}{n} = \bar{x}, \dfrac{\sum{y_i}}{n} = \bar{y} 이용)

β1=xiyi2xˉyi+xˉyixi22xˉxi+xˉxi\qquad\Rightarrow \beta_1 = \dfrac{\sum{x_iy_i} - 2\bar{x}\sum{y_i} + \bar{x}\sum{y_i}}{\sum{x_i^2} - 2\bar{x}\sum{x_i} + \bar{x}\sum{x_i}}

β1=xiyi2xˉyi+nxˉyˉxi22xˉxi+nxˉ2\qquad\Rightarrow \beta_1 = \dfrac{\sum{x_iy_i} - 2\bar{x}\sum{y_i} + n\bar{x}\bar{y}}{\sum{x_i^2} - 2\bar{x}\sum{x_i} + n\bar{x}^2}

β1=xiyi2xˉyi+xˉyˉxi22xˉxi+xˉ2\qquad\Rightarrow \beta_1 = \dfrac{\sum{x_iy_i} - 2\bar{x}\sum{y_i} + \sum\bar{x}\bar{y}}{\sum{x_i^2} - 2\bar{x}\sum{x_i} + \sum\bar{x}^2}

β1=(xiyi2xˉyi+xˉyˉ)(xi22xˉxi+xˉ2)\qquad\Rightarrow \beta_1 = \dfrac{\sum(x_iy_i - 2\bar{x}y_i + \bar{x}\bar{y})}{\sum(x_i^2 - 2\bar{x}x_i + \bar{x}^2)}

β1=(xixˉ)(yiyˉ)(xixˉ)2\qquad\Rightarrow \beta_1 = \dfrac{\sum{(x_i - \bar{x})(y_i - \bar{y})}}{\sum{(x_i - \bar{x})^2}}

이제 구한 β1\beta_1 식을 이용하여 β0\beta_0 를 구하면 됩니다.

yinβ0β1xi=0 ①\qquad \sum{y_i} - n\beta_0 - \beta_1\sum{x_i} = 0 \qquad\qquad\qquad \cdots\cdots \space ①

nβ0=yiβ1xi\qquad\Rightarrow n\beta_0 = \sum{y_i} - \beta_1\sum{x_i}

β0=yinβ1xin\qquad\Rightarrow \beta_0 = \dfrac{\sum{y_i}}{n} - \beta_1\dfrac{\sum{x_i}}{n}

β0=yˉβ1xˉ\qquad\Rightarrow \beta_0 = \bar{y} - \beta_1\bar{x}


β0,β1\beta_0, \beta_1의 값을 구하긴 했지만 사실 여기서 더 체크해야할 것이 있습니다.

바로 이계편도함수들인데요, 미분해서 0이라고 놓고 푸는 방식은 가능한 극대, 극소에 해당하는 점들이 모두 나옵니다. 심지어는 극대, 극소가 아닌 점도 나올 수 있죠.

그래서 우리가 구한 β0,β1\beta_0, \beta_1 이 정말 최소점에 해당하는 계수들인지 확인해야 합니다.

다소 복잡한 과정이기에 설명은 링크 첨부로 대체하겠습니다.
https://www.khanacademy.org/math/multivariable-calculus/applications-of-multivariable-derivatives/optimizing-multivariable-functions/a/second-partial-derivative-test


이제 정말로 β0,β1\beta_0, \beta_1의 값을 모두 구했습니다.

그런데 혹시 위에서 예측값과 실제값 사이의 에러를

(yiyi^)2\qquad\qquad \sum(y_i - \hat{y_i})^2

으로 선택했던 것을 기억하시나요?
위에서는 선택의 이유로 미분가능만을 들었지만 사실 좋은 점이 하나 더 있습니다.

바로 회귀선이 (xˉ,yˉ)(\bar{x}, \bar{y}) 를 지난다는 사실입니다.
(에러 표현식을 어떤 것으로 선택하든 상관없이 성립할 것 같이 보이기는 하지만 실제로 그렇지는 않습니다)

이를 검증하기 위해 (xˉ,yˉ)(\bar{x}, \bar{y})가 회귀방정식

y^=β0+β1x\qquad\qquad \hat{y} = \beta_0 + \beta_1x

의 해가 되는지 관찰해보겠습니다.

β0+β1xˉ\qquad\qquad \beta_0 + \beta_1\bar{x}

=yˉβ1xˉ+β1xˉ\qquad\qquad = \bar{y} - \beta_1\bar{x} + \beta_1\bar{x}

=yˉ\qquad\qquad = \bar{y}

(xˉ,yˉ)(\bar{x}, \bar{y}) 가 회귀방정식의 해이므로, 회귀선이 (xˉ,yˉ)(\bar{x}, \bar{y}) 를 지나는 것을 알 수 있습니다.


그리고 한 가지 유익이 더 있는데요. 바로 예측값 yi^\hat{y_i} 들의 평균이 실제값 yy 의 평균과 같다는 것입니다!

증명해보면 다음과 같습니다.

E(Y^)=E(β0+β1X)=β0+β1E(x)=β0+β1xˉ=yˉE(\hat{Y}) = E(\beta_0 + \beta_1X) = \beta_0 + \beta_1E(x) = \beta_0 + \beta_1\bar{x} = \bar{y}

이는 후에 여러 증명에서 사용됩니다.


다음 포스팅에서는 β1\beta_1(X,Y)(X, Y)의 상관계수 사이의 관계를 알아보도록 하겠습니다.

감사합니다.


다음 포스팅
https://velog.io/@shh0422/%EB%8B%A8%EC%88%9C%EC%84%A0%ED%98%95%ED%9A%8C%EA%B7%80-%ED%9A%8C%EA%B7%80%EA%B3%84%EC%88%98%EC%99%80-%EC%83%81%EA%B4%80%EA%B3%84%EC%88%98%EC%9D%98-%EA%B4%80%EA%B3%84

profile
수학요정니모
post-custom-banner

1개의 댓글

comment-user-thumbnail
2024년 7월 7일

식에서 오차는 생략하신 이유가 평균을 구하기 때문인가요?

답글 달기