머신러닝 회귀 모델(Regression Model)의 평가 지표 : MAE, MSE, RMSE, RMSLE
서울시 자전거 이용 예측모델을 만들 때 평가지표였던 RMSE에 대한 메모.
MAE (Mean Absolute Error)
실제 값과 예측 값의 차이를 절대값으로 변환 후 평균을 구한 것
* MAPE (Mean Absolute Percentage Error)
MAE를 비율로 나타냄으로써 스케일 의존적 에러를 보완.
하지만 실제값이 1보다 작거나 0일 때는 계산이 용이하지 않다는 단점이 있다.
* MASE (Mean Absolute Scaled Error)
예측 값과 실제 값의 차이를 평소에 움직이는 변동폭으로 나눈 값
평소 변동폭에 비해 얼마나 오차가 있는지를 나타냄
MSE (Mean Squared Error) 평균제곱오차
실제 값과 예측 값의 차이를 제곱해 평균한 것
제곱하기 때문에 이상치에 민감하다.
RMSE (Root Mean Squared Error) 평균제곱근오차
MSE에 루트를 씌운 값
from sklearn.metrics import mean_squared_error
rmse = np.sqrt(mean_squared_error(y_test, y_preds))
# sklearn은 MSE만 지원하므로 이에 루트를 씌워서 RMSE 계산
* 스케일 의존 에러 (Scale-Depen-Error)
예를 들어, 실제 200만원인 삼성전자 주가를 예측할 때와 20만원인 네이버 주가를 예측할 때
RMSE가 동일하게 50이었다면 성능이 같다고 볼 수 있을까?
MAE, MSE, RMSE 는 이런 문제가 있음.
RMSLE (Root Mean Squared Log Error)
RMSE에 로그를 적용해준 지표.
* RMSLE는 Under Estimation에 큰 패널티를 부여한다.
예측값 = 600, 실제값 = 1,000일 때 >>> RMSE = 400, RMSLE = 0.510
예측값 = 1,400, 실제값 = 1,000일 때 >>> RMSE = 400, RMSLE = 0.33
값의 차이가 400으로 같고 RMSE가 동일하다.
하지만 RMSLE는 예측 값이 실제 값보다 작을 때 더 큰 값을 가진다.
* 배달 음식을 시킬 때, 30분이 걸린다고 고지하는 경우
실제 20분이 걸리는 건 큰 문제가 되지않지만 30분을 오버하는 건 문제가 될 수 있다. 이런 경우 적용 가능.