본문 바로가기

[Python] 성능 측정 지표 :: MAE, MSE, RMSE, MAPE, MPE, MSLE

Python/Scikit-learn 2020. 12. 12.

반응형

 

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

 

 

 

Reference

 

 

 

728x90

Comments