본문 바로가기

일상+자잘한 일

왜 오차에는 제곱을 할까

머신러닝 수업을 듣다가 갑자기 왜 오차를 계산할 때 각 오차 값들의 제곱을 할까? 라는 의문이 들었다.

음수 오차의 부호를 없애기 위해서라면 단순하게 절대값을 씌워줘도 되지 않을까? 하는 고민이 들었다.

 

아마 수업시간에 다루었지만 졸다가 놓쳤던 것 같다. 그래서 오차를 구하는 방법을 찾아보니

평균절대오차(MAE: Mean of Absolute Error)와 평균제곱오차(MSE: Mean of Squared Error)가 있다고 한다.

그렇다면 내가 생각한 절대오차도 있는데 제곱오차를 쓰는 이유가 무엇일까? 하다가 수업 ppt에서 좋은 예시를 발견했다.

위에 그래프와 같이 MAE의 경우보다 MSE가 오차가 큰 것들에 대해서 패널티가 더 크고

[-1, 1] 구간은 MSE가 오차가 작은 것들에 대해서 패널티가 작은 것도 확인할 수 있었다.

 

정답 60, 64, 67  
모델1 57, 61, 70 MSE: 9       MAE: 3
모델2 59, 65, 73 MSE: 12.6  MAD: 2.6

그렇다면 오차들에 대한 패널티를 크게 하려고 한 것일까? 생각하다 만약에 위와 같은 상황이라면 또 나아가 표본 중에 아웃라이어가 있었는데 아웃라이어 값이 컸다면? 아마 MSE를 기준으로 했을 때보다 MAE가 좋은 모델을 선정하는데 유리하다고 생각했다. 그럼에도 쓰는 이유가 무엇일까? 알아보다보니

 

MSE가 일반적인 상황에서 학습하는데 더 도움이 잘되고, 미분 가능하기 때문인 것 같다.

 

참고한 사이트:

https://heekangpark.github.io/SKKU_swe3050/04-error-functions

https://economicslab.tistory.com/16108