이전 포스팅에서 w와 b를 찾는것 즉, 데이터를 대표할 수 있는 모델을 정의하는 것이 선형 회귀의 목적이라고 했다. 선형회귀 모델을 정의하기 위해 필요한 내용들을 알아보자.
손실( Loss )
입력 데이터를 잘 설명할 수 있는 적절한 기울기와 절편을 구하게 되면 아래 그림과 같이 오차가 발생하게 된다. 즉, 예측과 실제의 차이를 손실( Loss )이라고 한다.

선형회귀 모델의 목적은 각 데이터의 오차의 평균을 최소로 하는 최적의 기울기와 절편을 구하는 것이다. 즉, 최적의 기울기와 절편을 가진 함수를 찾는 것이다.
손실을 구하는 방식은 평균 제곱 오차( Mean Squared Error, 이하 MSE), 평균 절대 오차(mean absolute error, 이하 MAE), MSE와 MAE를 절충한 후버 손실(Huber loss), 1−MSE/VAR으로 구하는 결정 계수(coefficient of determination) 등이 있다.
평균 제곱 오차( MSE )
기울기와 절편이 하나 정해졌을때 발생하는 오차 제곱의 합의 평균 값이다. 즉, 실제 값에서 예측값을 뺀 모든 오차를 제곱하여 평균을 계산한 것이다. 손실을 구할 때 가장 일반적으로 사용하는 방법이다.

평균 절대 오차( MAE )
기울기와 절편이 하나 정해졌을때 발생하는 오차 절대값 합의 평균 값이다.

후버 손실( Huber Loss )
MSE와 MAE를 절충 계산법이다. 통계학자 피터 J. 후버(Peter J. Huber)가 제안한 것으로 일정한 범위(δ, '델타')를 정해서 범위 안에 있으면 오차를 제곱하고, 밖에 있으면 오차의 절대값을 구하는 것이다. 아래 식에서 1/2, 2로 나누는 이유는 δ에서 오차 제곱과 오차 절대값이 만날 때 매끄럽게 이어지도록 하게 만들기 위해서다.

결정 계수( Coefficient of determination )
MSE의 단점은 크고, 작음을 직관적으로 알기 어렵다는데 있다. MSE 값이 100 또는 500이라면 적절히 적합된 것인지 직관적이지 않다. 그래서 사용하는 수치가 결정 계수(coefficient of determination)다. 보통 R2이라고 쓴다.
오차가 하나도 없다면

요약
이쯤에서 잠시 쉬어 가자. 손실( Loss ) 를 구하는 방식은 아래와 같다.
-
평균 제곱 오차( Mean Squared Error : MSE )
오차의 제곱에 대한 평균을 취한 값 -
평균 절대 오차( Mean Absolute Error )
오차의 절대값에 평균을 취한 값 -
후버 손실( Huber Loss )
MSE와 MAE를 절충 계산법이다 -
결정 계수( Coefficient of determination )
MSE 보다 좀 더 직관적이다.
경사하강법( Gradient Descent )
우선 경사가 의미하는 것을 알아 보자. 경사가 높은 산일수록 오르기 쉽지 않다. 바로 그 경사다. 그리고 수학적으로는 기울기라고 한다.
선형회귀의 목적은 즉,주어진 값에 대한 목표값을 예측하는 것이다. 수학적으로 말하자면 오차의 평균이 가장 작은 값을 찾는 것이다. 즉, 그 시점의 기울기와 절편을 찾는 것이다. 파라미터(기울기와 절편)를 임의로 정한 다음, 파라미터 값을 변경하면서 손실( Loss )을 줄여가는 방법으로 최적의 기울기와 절편을 찾아가자. 이렇게 기울기를 줄여가면서 오차를 낮춰간다고 해서 경사하강법(Gradient Descent)이라 부른다.
그렇다면, 선형회귀 모델에서 최적의 기울기와 절편을 어떻게 찾을 수 있을까? 다행히도, 평균 제곱 오차( MSE )의 경우 손실( Loss )을 함수로 표현하면 수학 시간에 자주 본 아래가 볼록한 2차 함수 형태를 띈다. 손실의 전체의 합을 비용( cost, 이하 cost )이라 한다. MAE, 후버손실의 경우 다른 형태의 그래프로 표현된다. 우선 MSE의 경우를 고려해 보자.

임의로 설정한 기울기(w)값에 해당하는 cost값은 아래와 같이 수식화 된다.

절편(b)도 마찬가지다.

이 두 수식은 아래 cost 함수를 w와 b 각각에 대해서 미분한 것이다. 미분을 해보자. 별로 어렵지 않다.
우선 손실함수를 전개하자.

임의의 w와 b에 대해서 미분한 값이 최소가 되기 위해서 w와 b를 얼마나 옮겨 갈 것인지 조절해 줘야 한다. 여기서 학습률(Learning Rate)이라는 개념이 나온다.
학습률
손실 함수는 아래가 볼록한 2차 함수 형태다. 즉, 미분해서 + 이면 왼쪽으로 이동, - 이면 오른쪽으로 이동을 해야 최소 값 0을 찾을 수 있다.
그림으로 설명하면

위 왼쪽 그림에서 w는 3, 기울기가 4다. 일반적으로 w = w - 기울기 값을 기준으로 좌우 이동을 한다. 생각해 보면 딲히, 계산을 할 수 있는 값이 w와 미분값 말고는 없다.
그럼, 다시 그림을 보자. w가 3일때 구한 기울기가 4다. w = w - 기울기에 적용하면 w = -1 이다.
이후, w는 다시 7이 된다. 이렇게 기울기 0값으로 수렴하지 못하는 것을 발산이라고 한다. 그래서, 기울기 값에 일정 값을 곱해 주는데 이를 학습률이라고 한다. 아래와 같이 표현할 수 있다.

학습률이 작으면 경사를 천천히 내려오고, 크면 최적의 값을 찾지 못하고 지나칠 수 있다. 이렇게 인간의 개입이 필요한 변수를 하이퍼파라미터( hyperparameter )라고 한다.
요약
-
경사하강법( Gradient Descent )
선형회귀의 목적은 주어진 값에 대한 목표 값을 예측하는 것이다. 수학적으로 오차의 평균이 가장 작은 값을 찾는 것이다. -
학습률( learning rate )
학습률이 작으면 경사를 천천히 내려오고,(계산이 느리고), 크면 최적의 값을 찾지 못하고 지나칠 수 있다. 이렇게 인간의 개입이 필요한 변수를 하이퍼파라미터( hyperparameter )라고 한다.
'머신러닝(ML)' 카테고리의 다른 글
| 다중선형회귀란( Multiple Linear Regression )란... (0) | 2020.07.09 |
|---|---|
| 선형회귀 - python code (0) | 2020.07.09 |
| 선형회귀란( Linear Regression )란... (0) | 2020.07.09 |
| 머신 러닝( Machine Learning )이란... (0) | 2020.07.09 |
| 머리말. (0) | 2020.07.09 |