Python/Scikit-learn
[Python] 성능 측정 지표 :: MAE, MSE, RMSE, MAPE, MPE, MSLE
뭬자
2020. 12. 12. 02:14
1. MAE (Mean Absolute Error)
- 실제 값과 예측 값의 차이(Error)를 절대값으로 변환해 평균화
- MAE는 에러에 절대값을 취하기 때문에 에러의 크기 그대로 반영된다. 그러므로 예측 결과물의 에러가 10이 나온 것이 5로 나온 것보다 2배가 나쁜 도메인에서 쓰기 적합한 산식이다.
- 에러에 따른 손실이 선형적으로 올라갈 때 적합하다.
- 이상치가 많을 때
from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_test, y_pred)
2. MSE (Mean Squared Error)
- 실제 값과 예측 값의 차이를 제곱해 평균화
- 예측값과 실제값 차이의 면적의 합
- 특이값이 존재하면 수치가 많이 늘어난다.
from sklearn.metrics import mean_squared_error
mean_squared_error(y_test, y_pred)
3. RMSE (Root Mean Squared Error)
- MSE 값은 오류의 제곱을 구하므로 실제 오류 평균보다 더 커지는 특성이 있어 MSE에 루트를 씌운 RMSE 값을 쓴다.
- 에러에 제곱을 하기 때문에 에러가 크면 클수록 그에 따른 가중치가 높이 반영된다. 그러므로 예측 결과물의 에러가 10이 나온 것이 5로 나온 것보다, 정확히 2^2(4)배가 나쁜 도메인에서 쓰기 적합한 산식이다.
- 에러에 따른 손실이 기하 급수적으로 올라가는 상황에서 쓰기 적합하다.
from sklearn.metrics import mean_squared_error
MSE = mean_squared_error(y_test, y_pred)
np.sqrt(MSE)
4. MSLE (Mean Squared Log Error)
- MSE에 로그를 적용해준 지표
from sklearn.metrics import mean_squared_log_error
mean_squared_log_error(y_test, y_pred)
5. MAPE (Mean Absolute Percentage Error)
- MAE를 퍼센트로 변환
- MAE와 같은 단점
- 모델에 대한 편향이 존재
def MAPE(y_test, y_pred):
return np.mean(np.abs((y_test - y_pred) / y_test)) * 100
MAPE(y_test, y_pred)
6. MPE (Mean Percentage Error)
- MAPE에서 절대값을 제외한 지표
- 모델이 underperformance(+) 인지 overperformance(-) 인지 판단
def MAE(y_test, y_pred):
return np.mean((y_test - y_pred) / y_test) * 100)
MAE(y_test, y_pred)
방법 | Full | 잔차 계산 | 이상치 영향 |
MAE | Mean Absolute Error | Absolute Value | Yes |
MSE | Mean Squared Error | Square | No |
RMSE | Root Mean Squared Error | Square | No |
MAPE | Mean Absolute Percentage Error | Absolute Value | Yes |
MPE | Mean Percentage Error | N/A | Yes |
반응형