Data Science/Machine Learning

Evaluation2. 회귀의 성능 평가 지표(MAE, MSE, RMSE, R제곱)

HJChung 2020. 9. 28. 16:27

권철민 강사님의 '파이썬 머신러닝 완벽 가이드'을 학습하고 정리한 것입니다. 배우는 중이라 잘못된  내용이 있을 수 있으며 계속해서 보완해 나갈 것입니다. :)) 

 

머신러닝의 프로세스는

- 데이터 가공/ 변환

- 모델 학습/예측

- 평가 

로 이루어진다. 

 

이 중 <평가>에 대해 학습 한 것을 정리해보고자 한다. 

 

머신러닝 모델의 성능을 평가하는 지표인 성능 평가 지표는 모델이 분류모델이냐/ 회귀 모델이냐에 따라 달라진다. 

 

- 분류의 성능 평가 지표: 정확도(Accuracy), 오차 행렬(Confusion Matrix), 정밀도(Precision), 재현율(Recall), F1 score, ROC AUC 

- 회귀의 성능 평가 지표: 대부분 실제 값과 예측값의 오차 평균값에 기반한 평가

 

sklearn - Metrics and scoring: quantifying the quality of predictions)

https://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter


회귀의 성능 평가 지표에 대해 정리해보자 

1. 회귀의 성능 평가 지표

1) MAE (Mean Absolute Error)

실제 값과 예측값의 차이를 절댓값으로 변환해 평균한 것

sklearn.metrics.mean_absolute_error(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average')
# Perform the intial fitting to get the LinearRegression object
from sklearn import linear_model
lm = linear_model.LinearRegression()
lm.fit(X, sales)

mae_sum = 0
for sale, x in zip(sales, X):
    prediction = lm.predict(x)
    mae_sum += abs(sale - prediction)
mae = mae_sum / len(sales)

print(mae)
>>> [ 0.7602603 ]

2) MSE (Mean Squared Log Error)

실제 값과 예측값의 차이를 제곱해 평균한 것

3)

sklearn.metrics.mean_squared_error(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average', squared=True)
# Perform the intial fitting to get the LinearRegression object
from sklearn import linear_model
lm = linear_model.LinearRegression()
lm.fit(X, sales)

mse_sum = 0
for sale, x in zip(sales, X):
    prediction = lm.predict(x)
    mse_sum += (sale - prediction)**2
mse = mse_sum / len(sales)

print(mse)
>>> [ 3.53926581 ]

3) RMSE (Root Mean Squared Eerror)

MSE 같은 오류의 제곱을 구할때 실제 오류 평균보다 더 커지는 특성이 있으므로 MSE에 루트를 씌운 것

※ sklearn에서 RMSE를 직접 제공하지 않기 때문에 MSE에 루트를 씌워서 직접 만들어 사용할 수 있다. 

 

4) R 제곱

분산 기반으로 예측 성능을 평가한다. 실제 값의 분싼 대비 예측값의 분산 비율을 지표로 하며, 1에 가까울 수록 예측 정확도가 높다. 

R 제곱 = 예측값 Variance / 실제값 Variance

sklearn.metrics.r2_score(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average')

 

※ cross_val_score나 GridSearchCV와 같은 sklean의 Scoring 함수에 회귀 평가 적용시 주의할 점

scoring 함수에 회귀 평가 지표를 적용 할 때는 

MAE는 'neg_mean_absolute_error'로, MSE는 'neg_mean_squared_error'로, R제곱은 'r2'로 scoring 파라미터에 적어주는데, 

sklearn에서는 score값이 클수록 좋은 평가 결과로 자동 평가해버린다. 그래서 -을 곱해서 반대의 의미로 만들어주는게 적용된다. 

 

Reference

www.dataquest.io/blog/understanding-regression-error-metrics/

 

Tutorial: Understanding Linear Regression and Regression Error Metrics

Error metrics are short and useful summaries of the quality of our data. We dive into four common regression metrics and discuss their use cases.

www.dataquest.io

scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter

 

3.3. Metrics and scoring: quantifying the quality of predictions — scikit-learn 0.23.2 documentation

3.3. Metrics and scoring: quantifying the quality of predictions There are 3 different APIs for evaluating the quality of a model’s predictions: Finally, Dummy estimators are useful to get a baseline value of those metrics for random predictions. 3.3.1.

scikit-learn.org