ROC(Receiver Operating Characteristic) 곡선:
이진 분류기(레이블이 두 가지)의 성능을 평가하기 위해 사용되는 곡선으로 거짓 양성 비율(FPR:False Positive Rate)에 대한 진짜 양성 비율(TPR:True Positive Rate)(재현율)을 나타낸 곡선
거짓 양성 비율은 양성으로 잘못 분류된 음성 샘플의 비율. 이는 1에서 음성으로 정확하게 분류한 음성 샘플의 비율인 진짜 음성 비율 (TNR)을 뺀 값 \(\text{FPR}= \dfrac{\text{FP}}{\text{TN}+\text{FP}} = 1-\dfrac{\text{TN}}{\text{TN}+\text{FP}}=1-\text{TNR}\)
민감도(재현율)
에 대한 1-특이도
의 그래프완벽한 분류기는 ROC의 AUC가 1이고, 완전히 랜덤한 분류기에 대한 AUC는 0.5
랜덤하게 뽑은 양성 샘플의 score(우리 예의 경우에는 레이블이 1이 될 확률)가 랜덤하게 뽑은 음성 샘플의 score보다 클 확률
from sklearn.metrics import roc_auc_score #AUC를 구할 수 있다.
from sklearn.metrics import roc_curve #임계값에 대한 FPR, TPR 계산
auc = roc_auc_score(y_train, y_val_prob1)
fpr, tpr, thresholds = roc_curve(y_train, y_val_prob1)
plt.figure(figsize=(5,5))
plt.plot(fpr, tpr, linewidth=1)
plt.plot([0,1], [0,1], 'k--',linewidth=1)
plt.grid(True)
plt.xlabel("FPR", fontsize=10)
plt.ylabel("TPR", fontsize=10)
plt.text(0.6,0.2, f"AUC={auc : .2f}")
PR 곡선: 양성 클래스가 드물거나, 거짓음성보다 거짓 양성이 더 중요한 의미 가질 때 사용
그 외에는 ROC곡선 사용
Reference: