권철민 강사님의 '파이썬 머신러닝 완벽 가이드'을 학습하고 정리한 것입니다. 배우는 중이라 잘못된 내용이 있을 수 있으며 계속해서 보완해 나갈 것입니다. :))
머신러닝의 프로세스는
- 데이터 가공/ 변환
- 모델 학습/예측
- 평가
로 이루어진다.
이 중 <평가>에 대해 학습 한 것을 정리해보고자 한다.
머신러닝 모델의 성능을 평가하는 지표인 성능 평가 지표는 모델이 분류모델이냐/ 회귀 모델이냐에 따라 달라진다.
- 분류의 성능 평가 지표: 정확도(Accuracy), 오차 행렬(Confusion Matrix), 정밀도(Precision), 재현율(Recall), F1 score, ROC AUC
- 회귀의 성능 평가 지표: 대부분 실제 값과 예측값의 오차 평균값에 기반한 평가
sklearn - Metrics and scoring: quantifying the quality of predictions)
회귀의 성능 평가 지표에 대해 정리해보자
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)
실제 값과 예측값의 차이를 제곱해 평균한 것
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/
scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter
'Data Science > Machine Learning' 카테고리의 다른 글
Classification 1. 결정 트리(Decision Tree) (0) | 2020.10.08 |
---|---|
Regression2. 경사하강법 수행 프로세스와 python code (0) | 2020.10.01 |
Evaluation1 - 분류 모델 성능 지표 (Accuracy, Confusion Matrix, Precision, Recall, F1 score, ROC AUC ) (0) | 2020.09.28 |
Sklearn 익히기 - train/test data set 분리 및 Cross Validation (0) | 2020.09.28 |
2. numpy - ndarray 인덱싱 & 슬라이싱 이해 (0) | 2020.09.15 |