티스토리 뷰
반응형
ROC Curve (Receiver Operating Characteristic) & AUC Curve (Area Under the Curve)
ROC Curve 는 이진분류에서 클래스별 분포가 다를 때, Accuracy의 단점을 보완하기 위해 사용된다.
다양한 임계값에서 FPR(1-Specificity)
에 대한 TPR(Recall)
값 을 플롯하고 noise
를 제거하여 signal
을 얻는 커브이다.
AUC Curve 는 ROC Curve의 밑부분을 뜻하며 이 AUC 커브를 이용하여 퍼포먼스를 확인한다.
결과만 말하자면, AUC Curve가 높이 향할 수록 Positive
와 Negative
를 잘 구분할 수 있는 모델인 것이다.
구현
sklearn
으로 간단하게 구현 가능하다.
from sklearn.metrics import roc_curve
# roc curve for models
fpr1, tpr1, thresh1 = roc_curve(y_test, pred_prob1[:,1], pos_label=1)
fpr2, tpr2, thresh2 = roc_curve(y_test, pred_prob2[:,1], pos_label=1)
# roc curve for tpr = fpr
random_probs = [0 for i in range(len(y_test))]
p_fpr, p_tpr, _ = roc_curve(y_test, random_probs, pos_label=1)
AUC score도 확인할 수 있다.
from sklearn.metrics import roc_auc_score
# auc scores
auc_score1 = roc_auc_score(y_test, pred_prob1[:,1])
auc_score2 = roc_auc_score(y_test, pred_prob2[:,1])
print(auc_score1, auc_score2)
matplotilb
로 나타낼 수 있다.
import matplotlib.pyplot as plt
plt.style.use('seaborn')
# plot roc curves
plt.plot(fpr1, tpr1, linestyle='--',color='orange', label='Logistic Regression')
plt.plot(fpr2, tpr2, linestyle='--',color='green', label='KNN')
plt.plot(p_fpr, p_tpr, linestyle='--', color='blue')
# title
plt.title('ROC curve')
# x label
plt.xlabel('False Positive Rate')
# y label
plt.ylabel('True Positive rate')
plt.legend(loc='best')
plt.savefig('ROC',dpi=300)
plt.show();
Multi-Class Classification에서의 AUC-ROC
One vs All
방법을 써서 이진분류에 사용되는 AUC-ROC를 다중분류에 사용할 수 있다.
근데 이건 내가 아직 멀티클래스분류를 안 배워서 봐도 이해가 안가서 여기선 정리안하겠다.
대신 여기를 참조하자.
반응형
'ML' 카테고리의 다른 글
오차행렬 (Confusion Matrix) (0) | 2023.07.27 |
---|---|
9. 배치 정규화 (Batch Normalization) (0) | 2023.07.26 |
8. 하이퍼파라미터 튜닝 (Hyperparameter Tuning) (0) | 2023.07.26 |
7. 학습률 감쇠 (Learning Decay), Local Optima (0) | 2023.07.24 |
6. Adam (0) | 2023.07.24 |
댓글