저번 포스트에 이어 이번에는 재현율과 정밀도를 기반으로 하는 F1 스코어와 오차행렬을 기반으로 한 ROC 커브에 대해서 알아본다.
F1 스코어는 재현율과 정밀도의 조화 평균을 의미한다. 산술, 기하, 조화 평균에 대한 자세한 내용은 다음 블로그에서 참조했다.
기억해야할 것은 재현율(recall)과 정밀도(precision)은 트레이드 오프 관계이다.
recall = 0.9, precision = 0.1 인 경우 F1 = 2 * 0.9 * 0.1 / 1.0 = 0.18
recall = 0.5, precision = 0.5 인 경우 F1 = 2 * 0.5 * 0.5 / 1.0 = 0.5
모델의 성능은 재현율과 정밀도의 균형도 중요하므로 F1 스코어가 높은 것이 유리하다. F1 스코어를 확인하는 방법은 다음과 같다.
from sklearn.metrics import f1_score
f1 = f1_score(y_test, pred)
print(f'f1 score : {f1}')
ROC 곡선과 이에 기반한 AUC 스코어는 이진 분류의 예측 성능 측정에서 중요하게 사용되는 지표이다. ROC 곡선은 의학 분야에서 많이 사용되지만, 머신러닝 분야에서는 이진 분류 모델의 예측 성능을 판단하는 중요한 평가 지표이다. 추가로 다중 분류 모델이라 하여도 예측한 결과가 정답인지 오답인지로 이진 분류 문제로 바꾸어서 적용할 수 있다.
ROC 곡선은 FPR(False Positive Rate)이 변할 때 TPR(True Positive Rate)이 어떻게 변하는지를 나타내는 곡선이다.
TPR(True Positive Rate)은 재현율(민감도)이다.
TNR(True Negative Rate)은 TN / (TN + FP)이다.
FPR(False Positive Rate)은 특이도이다.
ROC 곡선은 FPR에 따른 TPR을 보는 것이기 때문에 FPR을 0부터 1까지 변경하면서 TPR의 값의 변화를 관찰해야 한다. 그럼 어떻게 FPR을 변경할까? 정답은 Threshold (Positive로 예측하는 임계치)를 최대치 1부터 0으로 줄이면 된다.
Threshold가 1인 경우, 데이터가 1보다 커야만 Positive로 예측하기 때문에 Positive로 예측한 데이터는 존재하지 않으므로 FP는 0이 된다. 즉, FPR은 0이다.
Threshold가 0인 경우, 데이터가 0보다 크면 Positive로 예측되기 때문에 모든 데이터가 Positive로 예측되어 TN은 0이 되고, FPR = FP / FP = 1이 된다.
이처럼 Threshold를 변경하면서 관측된 TPR도 같이 곡선으로 기록하면 ROC 커브가 완성되고 ROC 커브는 직선으로부터 거리가 멀게, 곡선으로 그려질수록 모델의 성능이 좋다는 것을 의미한다. (특이도가 조금만 높아도 재현율이 높다.)
(ROC 커브에 대한 코드 추가 예정..)
'[AI] - Machine Learning' 카테고리의 다른 글
# 9. 앙상블 기법 (Ensemble) (0) | 2021.10.28 |
---|---|
# 8. 의사 결정 나무 (Decision Tree) (0) | 2021.10.24 |
# 6. 정확도와 오차행렬 (Accuracy and Confusion matrix) (0) | 2021.10.11 |
# 5. Feature Scaling and Normalization (StandardScaler, MinMaxScaler) (0) | 2021.04.16 |
# 4. Data Preprocessing (Label Encoder, One-Hot Encoder) (0) | 2021.04.13 |
댓글