선형 회귀를 이해하기 전에 단어 하나하나의 의미 부터 살펴봅시다.
선형(Linear) : 말 그대로 '선' 또는 '선의 형태'를 의미합니다.
회귀분석(Regression) : 독립변수가 종속변수에 어떠한 영향을 미치는지 알아보고자 할 때 실시함.
합쳐보면, "독립변수과 종속변수의 관계가 선형으로 나타나는지 분석하기" 정도인 것 같습니다.
#기본지식
- 독립변수(설명변수) : 다른 변수에 영향을 받지 않는 변수, 종속변수에 영향을 주는 변수, 연구자가 의도적으로 변화시키는 변수 , 원인
- 종속변수(반응변수) : 독립변수가 변화함에 따라 변하는 변수, 예측하고자 하는 변수, 결과
통계학에서는, 다음과 같이 정의하고 있습니다.
-> 한 개 이상의 독립 변수 X와 종속 변수 y와의 선형 상관 관계를 모델링 하는 회귀분석 기법이다.
그렇다면 여기서 말하는 선형 관계가 무엇일까요?
(보스턴 지역에서) 주택당 방의 개수와 주택 가격의 관계를 예시로 들어 설명해보겠습니다.
일단 그냥 생각해보았을 때, 방의 개수가 많은 주택일수록 가격이 비쌀거 같습니다.
python을 이용해서 scatter(산점도) plot을 그려보았습니다.
예상했던 그대로, 일부로 예외는 존재하지만 방의 개수가 많을 수록 가격이 비싼 경향을 보이고 있습니다.
이제 이 그래프 위에 방의 개수(독립변수)와 주택 가격(종속변수)와의 관계를 잘 설명할 수 있는 '선'을 그어서 봅시다.
예상이 가시나요?
전부는 아니지만 대부분의 점들이 노란색 선 근처에 있는 것을 확인할 수 있습니다.
이럴 때, 우리는 방의 개수와 주택 가격은 선형 관계가 있다고 말할 수 있습니다.
그리고 우리는 앞으로 A라는 주택이 있을 때, A 주택의 방의 개수만 알아도 A 주택의 가격을 예측해볼 수 있습니다.
선형회귀분석은 이러한 회귀 선(노란색 선)을 찾는 것을 목표로 하고 있습니다.
(주의) : 선형회귀분석은 독립변수와 종속변수가 선형 관계를 이루고 있을 때만 합니다.
위 그림은 일산화질소 농도(독립변수)와 주택가격(종속변수)을 산점도 그래프로 나타낸 것입니다. 이 2개의 변수는 선형 관계를 이루고 있지 않습니다. 따라서 선형회귀분석은 적절한 분석방법이 아닙니다.
그렇다면 회귀선은 왜 찾는 걸까요?
-> 구해진 회귀선을 이용하여 새로운 독립변수가 들어왔을 때 종속변수를 예측하기 위해서 입니다.
우리는 최종적으로 y = ax + b라는 하나의 직선 식을 찾고자 합니다.
그래서 새로운 주택 A의 방의 개수를 알고 있다면 y = a x (주택 A의 방의 개수) + b를 계산하여 주택 가격(y)를 예측할 수 있습니다. 그렇다면 우리의 목표는 a와 b를 구하는 것입니다. a와 b는 머신러닝 세계에서 가중치(Weight), 혹은 Parameter, 또는 coefficient라고 불립니다.
그렇다면 회귀선을 위한 a와 b는 어떻게 구할 수 있나요?
MSE( Mean Squared Error)를 최소화 하는 a와 b를 구합니다.
물론 RMSE나 MAE 등을 사용하기도 합니다. 이러한 것들을 Cost function(비용 함수)이라고 부릅니다.
Error = Cost(비용) 으로 보는 것입니다. 이러한 비용을 최소화 하는 방향으로 a와 b를 구하겠다는 뜻입니다.
그렇다면 MSE가 무엇인지 부터 알아야겠죠?
MSE는 말 그래도 Error의 제곱한 것들의 평균값입니다.
Error는 (실제 값 - 예측한 값) 입니다. 실제값은 주어진 데이터로 부터 알 수 있는데 예측값은 회귀선도 없는데 어떻게 알 수 있을까요? 회귀선은 처음에는 데이터를 잘 설명하지 못하다가 가중치(Weight) 업데이트를 통해서 데이터를 잘 설명할 수 있는 최적의 상태가 됩니다. 즉, 첫 회귀선 식은 무작위로 정해집니다. 예시를 통해 자세히 살펴봅시다.
파란색 점 5개의 데이터가 있다고 할 때, X와 Y의 관계를 잘 설명하는 최적의 회귀선을 그어보는 것을 해보겠습니다.
- 우선 먼저 해야 할일은 첫 회귀선을 그을 수 있게 a와 b의 초기값을 설정해줍니다. (여기에서는 a=1, b=1)
- 이 첫 회귀선( y=x+1 )을 이용해서 예측값을 구해줍니다.
- X에 대한 예측값 P는 순서대로 [ 3, 4, 5, 6, 8 ] 입니다. ( + 표시 )
- Y = [ 3, 2, 3, 5, 6 ] 와 P를 이용해서 Error를 구하고 MSE도 계산해줍니다.
- 위의 예시로 계산된 MSE는 2.6입니다. 이 값을 더 줄이기 위해서 우리는 a와 b(가중치)를 수정해주어야 합니다.
가중치는 어떻게 업데이트 하나요?
가중치(Weight)를 업데이트 할 때에는 경사하강법(Gradient descent)이라는 미분 개념이 들어갑니다.
L(w)는 weight에 대한 Loss값 MSE를 의미합니다.
초기 가중치(위의 예시 : a = 1, b = 1)를 보시면 Loss 값이 큰것을 볼 수가 있습니다.
하지만 가중치(w)를 업데이트 해나가면서 L(w)값이 줄어드는 것을 볼 수 있습니다.
최종적으로 우리는 Global cost minimum일 때의 가중치(w)를 구해야합니다.
이러한 가중치를 업데이트 하기 위해 필요한 것 Gradient(기울기) 즉, 가중치 변화량에 따른 Loss(MSE)의 변화량입니다.
dL/dw -> ( dL/da, dL/db )
가중치를 업데이트 하는 공식은 다음과 같습니다.
λ는 learning rate를 의미하고 클수록 가중치가 많이 업데이트 됩니다. 보통은 0 ~ 1 사이의 값으로 사용합니다.
dL/da 가 0보다 크다면(양수) 그 의미는 a가 증가하면 Loss값도 증가한다는 의미입니다.
그렇기 때문에 dL/da 가 양수라면 λ도 무조건 양수이기 때문에 a의 값은 감소합니다.
즉, a값이 감소함으로써 Loss 값도 감소하게됩니다.
위의 예시를 통해서 계산된 미분값들은 다음과 같습니다. ( dL/da = 66, dL/db = 14 )
( 미분값을 구하는 과정은 따로 포스팅 하겠습니다. )
learning rate를 0.005f로 하여 새롭게 계산된 a와 b를 업데이트 해보겠습니다. ( 기존: a = 1, b = 1 )
new a = 1 - 0.005 * 66 = 약 0.67
new b = 1 - 0.005 * 14 = 약 0.93
새롭게 업데이트 된 a와 b를 이용해서 회귀선을 그어보겠습니다.
단 한번의 가중치 업데이트로 예측값과 실제값의 차이가 확연히 줄어든 것이 보이나요?
실제로는 이러한 가중치 업데이트 과정은 작게는 100번에서 많게는 10000번 반복됩니다.
새롭게 그어진 회귀선을 바탕으로 MSE를 계산해보면 약 0.49가 나옵니다.
이전의 2.6보다는 훨씬 Loss가 줄어든 것을 볼 수 있습니다.
마치며...
이때까지, X(독립변수)와 Y(종속변수)의 선형 관계를 모델링 하는 방법에 대해서 알아보았습니다.
가중치 업데이트 과정을 통해서 최적의 회귀선을 찾고
그 회귀선을 이용하여 새로운 X가 주어졌을 때, Y를 잘 예측할 수 있을 것입니다.
'Machine Learning' 카테고리의 다른 글
Model이란 (0) | 2022.07.26 |
---|