노트1/Python

머신러닝 회귀 모델(Regression Model)의 평가 지표 : MAE, MSE, RMSE, RMSLE

Paige09 2022. 1. 20. 11:27

 

 

서울시 자전거 이용 예측모델을 만들 때 평가지표였던 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분을 오버하는 건 문제가 될 수 있다. 이런 경우 적용 가능. 

 

 

 

 

 


 

 

참고 https://data101.oopy.io/mae-vs-rmse