서론
머신러닝에서 주식 가격, 내일의 온도, 혹은 자동차의 속도(velocity)처럼 연속적인 숫자를 예측하는 작업을 '회귀(Regression)'라고 한다.
MSE는이 회귀 문제에서 모델이 얼마나 틀렸는지 나타내는 평가지표이다.
그럼 MSE의 특징에 대해서 조금 더 알아보자.
MSE 한계
MSE의 한계는 절대적인 크기만으로는 알 수 없다
MSE는 예측값과 정답의 차이를 제곱해서 평균 낸 값이다. 계산하기 쉽고 직관적이지만 치명적인 단점이 있다. 데이터의 원래 단위와 스케일에 그대로 묶여 있다는 점입니다.
- 예시: 아파트 가격을 예측하는 모델에서 오차가 '1만 원'이라면 성능이 좋은 모델이다. 하지만 동네 빵집의 빵 가격을 예측하는 모델에서 오차가 '1만 원'이라면 쓸모없는 모델이다.
- 결과적으로 MSE가 0.02, 100, 10000 이라는 숫자 자체만으로는 모델이 똑똑한지 멍청한지 알 수 없다.
비교 대상의 필요성
우리 모델이 훌륭한지 평가하려면 '기준점(Baseline)'이 필요하다.
우리는 학습 데이터와 정답 데이터를 가지고 있다. 학습데이터를 모델에 넣고 학습을 시키면 모델은 MSE가 최소가 되도록 Weight를 조절하며 학습할 것이다.
그런데 입력 데이터에서 유용한 정보를 학습하지 못해서 MSE 오차가 줄어들지 않는다고 해보자.(학습이 안 되고 있는 것이다.)
이렇게 학습이 이뤄지지 않는 경우 MSE를 가장 작게 만들기 위한 최선의 선택은 어떤 입력이 들어 오든 모델이 정답 데이터의 평균만을 출력하는 것이다. 왜나하면 모든 입력에 대해 MSE를 가장 작게 만드는 값이기 때문이다.
수식으로 봐보면 모델이 어떤 상수 c만 예측한다고 해보자.
위 함수의 미분값이 0인 지점이 최솟값이 됨으로 먼저 미분을 하고
0이 되도록하는 c를 찾으면
c는 정답 데이터의 평균이 된다.
즉, MSE를 사용하는 회귀모델에서 입력 데이터를 보고도 정답을 예측할 만한 유용한 정보를 얻지 못해 하나의 값만 찍어야 한다면, MSE를 가장 작게 만드는 최선의 선택은 정답 데이터의 평균값을 예측하는 것이다.
이 경우 모델은 어떤 입력 \(x_i\)가 들어오더라도 항상 동일하게 정답 데이터의 평균 \(\bar{y}\) 를 예측한다.
반면 각 입력 (\(x_i\))에 대응하는 실제 정답 (\(y_i\))는 샘플마다 달라진다. 따라서 모델의 예측 오차는 결국 각 정답 데이터가 정답의 평균으로부터 얼마나 떨어져 있는가를 측정하는 형태가 된다.
즉 학습을 완료한 MSE의 값은 정답 데이터들의 분산이 되어버린다.
이제 우리는 모델의 가장 성능이 나빴을가 정답 데이터들의 분산이라는 기준(baseline)을 찾았다.
예를들어 정답 데이터(MSE 기준)의 분산이
이고 모델의 오차가
라면
우리 모델은 평균만 찍는 모델이 내던 오차의 20%만 남겼다는 뜻이 된다.
우리의 모델은 “평균만 찍었을 때 생기는 오차인 분산(가장 오차가 심할 때)에 비해 우리 모델의 MSE가 얼마나 작은가”를 봐야 한다.
따라서 오차의 감소율은
80% 감소했다고 볼 수 있다.
이것을 결정계수라고 한다.
- 분산 = 10, MSE = 2 → 꽤 잘 예측함, \(R^2=0.8\)
- 분산 = 2, MSE = 2 → 평균만 찍는 것과 동일, \(R^2=0\)
- 분산 = 1, MSE = 2 → 평균만 찍는 것보다 못함, \(R^2=-1\)
Comment