평가지표
머신러닝 모델을 통해 데이터를 예측한 후, 그 모델이 데이터를 얼마나 잘 예측하는 지 성능을 확인하는 것을 '평가'라고 한다. 그리고 평가를 위해 사용되는 지표들을 평가지표라고 한다. 머신러닝 모델은 크게 Classification 모델과 Regression 모델로 나눌 수 있는데 각각에 따라 사용되는 평가 지표들이 다르다.
Evaluation Indicators | |
Classification | Accuracy, Precision, Recall, F1-score, ROC&AUC |
Regression | MSE, RMSE, MAE, MAPE |
Classification Model 평가지표
1. 오차행렬 (Confusion Matrix)
오차행렬(Confusion Matrix)란 이진 분류의 예측 오류가 얼마인지와 더불어 어떠한 유형의 예측 오류가 발생하고 있는지를 함께 나타내는 지표이다.
- TN(True Negative): 실제 음성, 예측 음성 : 올바르게 예측한 경우
- FP(False Positive): 실제 음성, 예측 양성 : 틀리게 예측한 경우
- FN(False Negative): 실제 양성, 예측 음성 : 틀리게 예측한 경우
- TP(True Positive): 실제 양성, 예측 양성 : 올바르게 예측한 경우
오차행렬을 이용해서 Accuracy, Precision, Recall 등의 지표들을 파악할 수 있다.
※ cf.) 보통 오차행렬은 이진분류에 대해 많이 사용하지만, Class가 3개 이상인 다중분류에 대해서도 오차행렬을 구할 수 있다.
2. 정확도 (Accuracy)
$$ \text{Accuracy} = \frac {\text{Correct Predictions}} {\text{All Predictions}} = \frac {TP + TN} {TP + FP + FN + TN}$$
- 정확도는 말 그대로 모델이 얼마나 예측을 정확하게 하는 지를 평가하는 지표이다.
- 전체 예측 데이터 중 올바르게 예측한 데이터의 비율로 구한다.
◈ 정확도의 한계: 데이터 셋이 비대칭적일 경우, Positive에 대한 예측 정확도를 판단하지 못하고 Negative에 대한 예측 정확도만으로 분류의 정확도가 매우 높게 나타나는 수치적 판단 오류를 일으킬 수 있다
3. 정밀도 (Precision)
$$ \text{Precision} = \frac {\text{Actual Positive}} {\text{Predicted Positive}} = \frac {TP} {TP + FP}$$
- 정밀도는 모델이 얼마나 정확하게 긍정적인 예측을 했는지를 나타내는 지표이다.
- 양성으로 예측한 것들 중 실제 양성은 것들의 비율로 구한다.
- precision_score() 메서드가 사이킷런에서 제공된다
4. 재현율 (Recall)
$$\text{Recall} = \frac {\text{Predicted Positive}} {\text{Actual Positive}} = \frac {TP} {TP + FN}$$
- 모델이 실제 긍정 사례를 감지하는 능력을 평가하는 지표이다.
- 실제 양성인 것들 중 양성을 맟춘 것들의 비율로 구한다
- 재현율은 다른 용어로 TPR(True Positive Rate)로도 불린다.
- recall_score() 메서드가 사이킷런에서 제공된다
정밀도와 재현율을 오차행렬에서 쉽게 구할 수 있는 방법은 다음과 같다.
정밀도와 재현율은 둘 다 양성인 것을 얼마나 잘 예측하는 지에 관한 지표이지만, 상황에 따라 둘 중에 한 쪽이 더 중요하게 여겨지기도 한다. 정밀도의 경우, 미처 잡아내지 못한 것이 있더라도 더 정확한 예측이 필요한 경우 더 중요하게 작용하고, 재현율의 경우, 잘못 걸러내는 비율이 높더라도 놓치는 것이 없도록 하는 경우에 더 중요하게 작용한다.
예를 들어, 스팸 메일 필터링, 금융 사기 탐지 등 거짓 긍정(FP)가 치명적일 수 있는 경우는 정밀도가 중요한 지표로 사용된다. 반면, 범죄 용의자 식별이나 환자 의료 진단과 같이 실제 양성을 놓치는 것(FN)이 치명적인 경우, 재현율이 더 중시된다.
이렇게 상황에 따라 정밀도와 재현율이 동일한 정도로 중요할 수도 있고, 어느 한 쪽이 더 중요할 수도 있는데, 이 중요도를 반영한 지표가 $F_{\beta}$ Score이다.
5. $F_{\beta}$ Score
재현율이 정밀도보다 $\beta^2$ 배 더 중요하다고 할 때,
$$F_{\beta} = (1 + \beta^2) \cdot \frac{\text{Precision} \times \text{Recall}}{(\beta^2 \times \text{Precision}) + \text{Recall}}$$
과 같이 표현된다. (이때, 중요한 것은 $\beta$배가 아니라 $\beta^2$배라는 것이다.) 예를 들어, $\beta = 2$인 경우, 재현율이 정밀도보다 4배 더 중요하다는 것이다.
즉, 정밀도와 재현율 중 무엇이 더 중요한 지에 따라 $\beta$값을 적절히 조정하면 된다.
- $\beta > 1$ : 재현율 중요도 > 정밀도 중요도
- $\beta < 1$ : 재현율 중요도 < 정밀도 중요도
- $\beta = 1$ : 재현율 중요도 = 정밀도 중요도
6. ROC & AUC
분류 문제에서 모델의 성능을 평가하는 데 사용되는 또하나의 도구로 ROC & AUC 라는 지표가 있다. 이들은 모델이 어떻게 다양한 임계값에서 긍정적인 클래스와 부정적인 클래스를 구분하는지를 시각적으로 표현하며, 모델의 성능을 종합적으로 평가할 수 있게 해준다.
◈ ROC 곡선
ROC 곡선은 True Positive Rate (TPR, 재현율)과 False Positive Rate (FPR) 사이의 관계를 그래프로 나타낸 것이다.
- TPR = $\frac {TP} {TP + FN}$
- FPR = $\frac {FP} {FP + TN}$ = 1 - TNR = $1 - \frac {TN} {FP + TN}$
여기서 잠깐! TNR(True Negative Rate)라는 지표가 등장하는데, 이는 특이도(Specificity)라고 불리기도 한다. 또한, TPR(True Positive Rate)의 경우, Recall(재현율), 민감도(Sensitivity) 와 동일하다.
ROC 곡선은 FPR을 0부터 1까지 변화하면서 TPR의 값을 나타낸다.
이 떄, ROC 곡선 아래의 면적(적분 값)을 ROC AUC(Area Under the Curve) 라고 한다. 이 값이 클수록 좋은 성능의 모델이라고 해석할 수 있다.
Regression Model Evaluation
분류 모델에 대한 평가 지표를 알아보았으니, 회귀 모델에 대한 평가지표를 알아볼 차례이다.
1. MSE & RMSE (제곱 오차)
MSE(Mean Squared Error)랑 RMSE(Root Mean Squared Error)는 각각 평균 제곱 오차와 평균 제곱근 오차로 불리는 지표로, 회귀 모델에서 가장 널리 사용되는 평가지표이다.
$$\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2$$
$$\text{RMSE} = \sqrt{\text{MSE}} = \sqrt{ \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}$$
- 은 데이터 포인트의 총 개수
- 는 실제 값
- 는 예측 값
MSE보다는 RMSE가 조금 더 많이 사용되는 편인데, 그 이유는 값이 큰 데이터를 다루는 경우, MSE는 오차의 제곱이 기반이 되기 때문에 값이 터무니없이 커질 수 있어 실제 모델의 정확도를 파악하는 데 어려움이 있을 수 있다. 따라서 MSE에 제곱근을 취한 RMSE가 조금 더 널리 사용되는 편이다.
2. MAE (평균 절대 오차)
예측값과 실제값 사이의 절대값 차이의 평균을 나타낸다. MAE는 모델의 예측값이 실제값으로부터 얼마나 떨어져 있는지를 절대값을 사용하여 측정한다. 이는 모델의 오차를 양의 값으로만 고려하여, 오차의 크기를 직관적으로 이해하기 쉽게 만든다.
$$\text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|$$
- 은 데이터 포인트의 총 개수
- 는 실제 값
- 는 예측 값
MAE의 경우, 오차 값을 양수로만 반환하기 때문에 예측 값이 실제 값보다 낮게 예측되었는지 높게 예측되었는지 바로 파악할 수 없다는 단점이 있다. 또한, MAE는 MSE나 RMSE보다는 덜 쓰이는 편인데, MSE나 RMSE는 오차에 제곱이 붙기 때문에 작은 오차도 큰 값으로 나타나, 더 뚜렷하게 오차를 식별할 수 있지만, MAE는 그러한 측면에서는 성능이 떨어지기 때문이다.
3. MAPE (평균 절대 백분율 오차)
예측값과 실제값 사이의 절대 백분율 차이의 평균을 나타낸다. MAPE는 예측 오차를 실제 값에 대한 백분율로 표현하여, 모델의 예측 정확도를 비율로 나타낸다. 실제 오차 값보다 오차율이 중요할 때 유용하다.
$$\text{MAPE} = \frac{100\%}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right|$$
- 은 데이터 포인트의 총 개수
- 는 실제 값
- 는 예측 값
참고 문헌
파이썬 머신러닝 완벽 가이드" target="_blank" rel="noopener" data-mce-href="http://파이썬 머신러닝 완벽 가이드">http://파이썬 머신러닝 완벽 가이드
[실습 코드]
실습 코드" target="_blank" rel="noopener" data-mce-href="http://실습 코드">http://실습 코드
링크 클릭 > ML Session > Evaluation.ipynb : 실제 데이터를 사용하여 모델의 평가지표를 분석한 실습 코드
'AI & Data > Machine Learning' 카테고리의 다른 글
[머신러닝] 앙상블 (Ensemble) (0) | 2024.04.29 |
---|---|
[머신러닝] 분류 (Classification) (1) | 2024.03.25 |
[머신러닝] 사이킷런(Scikit - Learn) 라이브러리 part 2 : 데이터 전처리, 교차검증 (0) | 2024.03.04 |
[머신러닝] 사이킷런(Scikit-Learn) 라이브러리 part1 : 프레임워크, train_test_split (0) | 2024.02.13 |
[머신러닝] 머신러닝(Machine Learning)이란? (1) | 2024.02.08 |