이번 포스팅에서는 최소자승법을 이용한 단순선형회귀에서 회귀계수들을 구하는 방법과 실제 계산 과정을 다루어보려고 합니다.
즉, 다음과 같은 설명변수 X와 종속변수 Y에 대해
X={x1,x2,x3,...,xn} Y={y1,y2,y3,...,yn}
회귀방정식 y^=β0+β1x 의 계수인 β0,β1 을 구해보고자 합니다.
어떤 공식을 이해하려 할 때는 바로 유도과정을 보는 것보다 전체 맥락을 먼저 이해하고 유도과정을 보는 것이 더 좋습니다.
따라서 단순선형회귀의 기본 아이디어가 무엇인지 먼저 살펴보아야 할텐데요.
단순선형회귀의 기본 아이디어는 다음과 같습니다.
예측값과 실제값 사이의 에러가 가장 적도록 하는 예측 직선을 찾는 것
쉽게 말해 오차가 가장 적은, 즉 예측을 가장 잘 하는 예측선을 찾고 싶은 것이죠.
이제 우리는 일상 언어로 된 단순선형회귀의 기본 아이디어를 수학 언어로 바꾸어나가야 합니다.
먼저, 찾고 싶은 예측 직선을 다음과 같이 표현합니다.
y^=β0+β1x
그리고 '예측값과 실제값 사이의 에러가 가장 적도록 하는' 을 수학적으로 표현하기 위해 먼저 '예측값과 실제값 사이의 에러'를 어떻게 표현할지 정해야 합니다.
이를 표현하는 방법론은 여러가지가 있는데요, 대표적으로 다음과 같은 것들입니다.
∑(실제값−예측값)2
∑∣실제값−예측값∣
∑(실제값−예측값)2
i번째 실제값을 yi,i번째 예측값을 yi^ 라고 표기하여 위의 세 식을 조금 더 수식스럽게 표현해보겠습니다.
∑(실제값−예측값)2=∑(yi−yi^)2
∑∣실제값−예측값∣=∑∣yi−yi^∣
∑(실제값−예측값)2=∑(yi−yi^)2
위의 세 수식 모두 예측값과 실제값 사이의 에러를 표현할 수 있고 각각의 장단점이 있지만 여기서는 맨 처음 식을 사용하겠습니다.
바로 맨 처음식이 미분이 가능하기 때문입니다.
여기서 미분 가능한 식을 고른 이유는 어떤 식의 최대, 최소를 찾을 때 미분이 아주 강력한 도구가 되기 때문입니다. (우리는 에러를 최소화하려고 하는 중이죠)
그리고 우리는 y^=β0+β1x 와 같이 표현하기로 했으므로 ∑(yi−yi^)2 에서 yi^=β0+β1xi 라고 바꾸어 써보겠습니다.
∑(yi−yi^)2=∑(yi−β0−β1xi)2
이제 이 식을 최소화시키는 β0,β1 값을 찾으면 되겠죠.
(이 식은 β0,β1에 대한 함수라는 것을 놓치지 마세요! xi,yi 들은 주어진(고정된) 값이므로 상수입니다)
이제 위 식을 미분하여 0으로 놓고 이를 만족하는 β0,β1 을 찾아보겠습니다.
∂β0∂∑(yi−β0−β1xi)2=∑−2β0(yi−β0−β1xi)=0
⇒∑(yi−β0−β1xi)=0
⇒∑yi−∑β0−∑β1xi=0
⇒∑yi−nβ0−β1∑xi=0⋯⋯①
∂β1∂∑(yi−β0−β1xi)2=∑−2xi(yi−β0−β1xi)=0
⇒∑xi(yi−β0−β1xi)=0
⇒∑(xiyi−β0xi−β1xi2)=0
⇒∑xiyi−β0∑xi−β1∑xi2=0⋯⋯②
결과적으로 ①,② 두 개의 수식을 얻었습니다. (이것을 정규방정식이라고 부릅니다)
모양은 복잡하지만 β0,β1 에 대한 연립일차방정식이기 때문에 충분히 해를 구할 수 있죠.
β0를 소거해주기 위해 ① 식의 양변에 n∑xi을 곱해주겠습니다.
그런데 식을 쓰기 전에 n∑xi의 의미를 생각해보면 xi 들의 합을 총 개수로 나눠준 것이므로 X의 평균이 됨을 알 수 있습니다. 이것을 xˉ 라고 표현하겠습니다.
이제 진짜로 ① 식의 양변에 n∑xi, 즉 xˉ 를 곱해주면
xˉ∑yi−β0∑xi−β1xˉ∑xi=0
이 되고, 여기서 ② 식을 변끼리 빼고 정리하면 다음과 같습니다.
xˉ∑yi−∑xiyi−β1xˉ∑xi+β1∑xi2=0
⇒β1(∑xi2−xˉ∑xi)=∑xiyi−xˉ∑yi
⇒β1=∑xi2−xˉ∑xi∑xiyi−xˉ∑yi
이제 약간의 트릭을 써보겠습니다.
(n∑xi=xˉ,n∑yi=yˉ 이용)
⇒β1=∑xi2−2xˉ∑xi+xˉ∑xi∑xiyi−2xˉ∑yi+xˉ∑yi
⇒β1=∑xi2−2xˉ∑xi+nxˉ2∑xiyi−2xˉ∑yi+nxˉyˉ
⇒β1=∑xi2−2xˉ∑xi+∑xˉ2∑xiyi−2xˉ∑yi+∑xˉyˉ
⇒β1=∑(xi2−2xˉxi+xˉ2)∑(xiyi−2xˉyi+xˉyˉ)
⇒β1=∑(xi−xˉ)2∑(xi−xˉ)(yi−yˉ)
이제 구한 β1과 ① 식을 이용하여 β0 를 구하면 됩니다.
∑yi−nβ0−β1∑xi=0⋯⋯①
⇒nβ0=∑yi−β1∑xi
⇒β0=n∑yi−β1n∑xi
⇒β0=yˉ−β1xˉ
β0,β1의 값을 구하긴 했지만 사실 여기서 더 체크해야할 것이 있습니다.
바로 이계편도함수들인데요, 미분해서 0이라고 놓고 푸는 방식은 가능한 극대, 극소에 해당하는 점들이 모두 나옵니다. 심지어는 극대, 극소가 아닌 점도 나올 수 있죠.
식에서 오차는 생략하신 이유가 평균을 구하기 때문인가요?