2021.10.9 TIL : [ML] 지도 학습 - Linear Regression (선형 회귀)
선형 회귀는 대학교 1학년 때 경영 통계학을 배우면서 살짝 접했던 기억이 있다. 당시에는 수업을 영어로 진행하기도 하고, 통계적인 지식도 전혀 없었던 때라 이해하지 못하고 대충 공식을 외워서 시험 봤던 것 같다. 하지만 내가 대학교 1학년 때부터 접할 만큼 기초적인 부분이기도 하고, 회귀 모델의 가장 기본이 되는 방법이기 때문에 이번 기회에 잘 정리해두려고 한다!
지도학습을 통해서는 예측 혹은 분류라는 결과를 얻을 수 있다. 우리가 데이터를 넣고, 데이터를 분석할 모델을 찾아서 적용하면 해당 데이터를 몇 개의 분류로 나누거나, 혹은 새로운 데이터를 넣었을 때 해당 데이터가 어떤 종속 변수 값을 갖는지 등을 예측할 수 있는 것이다. 회귀, 그 중에서도 선형 회귀는 예측을 할 수 있는 방법이다. 여러 독립 변수들이 종속 변수에 미치는 영향을 파악하고, 이를 선으로 그려서 예측값을 구한다. 보통은 수집된 데이터를 test data와 train data를 나눠서 저장해두기 때문에 test data를 넣고 예측값을 확인하고 예측값과 실제값이 얼마나 차이나는지를 통해서 성능을 평가할 수 있다.
1. 선형 회귀의 기본
우리는 train data에 대해서 종속 변수 값을 잘 설명하고 있는 선을 찾고자 한다. 그럼 그 선은 어떤 기준으로 골라야 할까?
위의 두 산점도에서 보면 우리는 오른쪽이 훨씬 잘 설명하고 있는 것을 알 수 있다. 점들이 선에서 더 가깝기 때문이다. 심지어 어떤 점들은 선 위에 있다. (선 위에 있는 게 사실 베스트니까) 하지만 모든 점들이 선 위에 있는 데이터는 거의 없다. 따라서 우리는 점들이 선과 얼마나 떨어져 있는지 그 거리에 집중해서 평균적으로 가장 짧은 거리를 갖는 선을 찾아야 한다.
위의 그림은 수면 시간이 심술에 미치는 영향을 알 수 있는 경우였고, 2차원으로 그리면서 하나의 독립변수가 하나의 종속변수를 설명하고 있으므로 단순 선형 회귀라고 한다. 여러 독립변수가 하나의 종속변수를 설명 또는 예측하는 경우는 다중 선형 회귀라고 한다. 다중 선형 회귀 중에서 독립변수가 2개인 것은 3차원 그래픽을 통해 회귀 평면을 시각적으로 설명할 수 있지만, 독립변수가 3개 이상이면 시각적으로는 확인이 불가능하다. 상상할 순 없지만 4차원 이상 고차원에서의 평면을 초평면이라고 한다.
위는 선형 회귀 모형이다. 여기서 각 독립변수(x)는 종속변수(y)를 설명할 수 있는 변수들로 이루어지고, 데이터 학습을 통해 각 독립변수가 종속변수에 어떤 영향을 주는지 설명할 수 있는 기울기의 값 β (베타)값을 추정하게 된다. 이 β 값이 양의 수인 경우, 독립변수가 양의 영역에서 영향을 미치고, 음수인 경우 음의 영역에서 영향을 미치게 된다. 반면 여기에는 ε(epsilon)의 값도 포함되어 있는데 이는 지정한 독립변수 외에 종속 변수에 영향을 주는 요소들(노이즈)을 의미한다. 만약 이 요소들 중에서 y에 좀 더 많은 영향을 주는 것으로 판단되면 이를 따로 빼서 βx 로 계산해 줄 수 있다.
2. 성능평가지표 - MSE, R^2
이렇게 구해진 선형 회귀를 이용했을 때 과연 얼마나 예측값의 정확도가 높은지 어떤 기준으로 평가해야 할까? 가장 먼저 떠오르는 것은 실제값에서 예측값을 뺀 오차(잔차)의 값을 활용하는 것이다. 실제로 이 잔차의 값들을 이용하여 평균을 낸 값을 자주 사용하는데, 예측값이 나오는 과정을 한번 다시 생각해보자. 예측값은 모든 점들로부터의 거리 평균이 최소가 되도록 그은 선 위의 점들을 말한다. 따라서 train data의 실제값에서 예측값을 뺀 것의 총합은 0이다. (마치 통계학에서 편차가 그랬듯이) 그렇기 때문에 단순하게 이 오차값들을 이용하는 것은 큰 의미를 줄 수 없다. 따라서 우리가 편차에서 분산을 구해 이용하는 것처럼 제곱을 하는 방식을 이용한다. 이것이 MSE이고, 분산의 값이 제곱이어서 값이 너무 커질 것을 우려해 루트를 씌우고 표준편차를 이용하는 것처럼 MSE도 제곱이기 때문에 너무 커질 수 있어서 루트를 씌운 값이 RMSE이다. 통계학에서는 계산에 미분을 해야 하기 때문에 보통 절대값보다는 제곱한 값을 많이 이용하지만, ML에서는 예측이 잘 되었는지에 대한 평가 지표로만 사용하기 때문에 절댓값을 보기도 한다. 이는 MAE라고 한다.
반면 결정계수 R^2는 SSR(Sum of Squared Regression) / SST(Sum of Squared Total) 의 값을 가진다. SST는 SSR + SSE(Sum of Squared Error) 으로 표현될 수 있는데, 한 데이터에 대해서 SST는 고정된 값을 가지기 때문에 SSR이 높을 수록 데이터가 오차가 적다는 점을 알 수 있다. 결정계수는 0과 1 사이의 값을 가지며 MSE, RMSE, MAE와는 다르게 클수록 성능이 좋다는 것을 의미한다.
3. KNN Regression 과의 비교
지난 번에 배웠던 KNN은 예측보다는 분석과 관련된 내용이었다. 하지만 KNN도 회귀 분석을 통해 예측이 가능하다. 다음 그림을 보면 조금 더 이해하기 쉬울 것이다.
이렇게 k개의 주변 점들을 통해서 예측을 할 수 있다. 다만 K의 값을 너무 작게 하면 과적합의 가능성이 있으니 주의하자.
KNN regression의 성능평가지표와 linear regression의 성능평가지표를 비교해보면 어떤 방법이 예측을 더 잘하는지 알 수 있다. 이 부분은 추후에 코드를 추가해서 비교해 보도록 할 예정이다. 이 때 가변수(dummy variable)에 대한 설명도 추가하려고 한다.