[Python] 성능 측정 지표 :: MAE, MSE, RMSE, MAPE, MPE, MSLE
반응형
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 |
728x90
'Python > Scikit-learn' 카테고리의 다른 글
[Python] 데이터 스케일링 :: 표준화(Standardization) (0) | 2020.12.07 |
---|---|
[Python] 홀드아웃 :: train_test_split (0) | 2020.09.25 |
[Python] 오분류표 Confusion Matrix :: 분류(Classification) 모형 평가 (0) | 2020.09.14 |
[Scikit-learn] LabelEncoder() :: Labelling (0) | 2019.11.20 |
[Scikit-learn] ImportError: cannot import name 'CategoricalEncoder' (0) | 2019.11.20 |
Comments