3-5. ROC curve와 AUC

jwKim·2023년 1월 23일
0

ROC curve와 AUC

ROC curve는 FPR(False Positive Rate)가 변할 때 TPR(True Positive Rate)이 어떻게 변하는지를 나타내는 곡선이다.
FPR을 X 축으로, TPR을 Y축으로 설정하고 FPR의 변화에 따른 TPR의 변화를 곡선으로 나타낸다. 이와 더불어 TNR이라는 지표도 있다.

※ FPR, TPR 너무 헷갈린다. 하지만 의미를 잘 생각해보면 이해하는 데에 조금 도움이 될 것이다.

< ROC 커브의 축 >

  • FPR : False Positive Rate의 약자로 실제 Nagative 중에 모델이 Positive로 예측한 비율이다(FP / (TN + FP))
  • TPR : True Positive Rate의 약자로 실제 Positive 중에 모델이 Positive로 예측한 비율이다.(TP / (FN + TP)) → 재현율
  • TNR : True Nagative Rate의 약자로 실제 Nagative 중에서 모델이 Nagative로 예측한 비율이다.(TN / (Fp + TN))
    - FPR = 1 - TNR이다!!

scikit learn에서는 ROC curve를 그리기 위해 roc_curve() API를 제공합니다. roc_curve()의 주요 파라미터는 아래와 같다.

  • y_true : 실제 클래스 값 array
  • y_scre : predict_proba()의 반환값에서 Positive 값이 사용됨

다음은 ROC curve를 그리는 코드이다.

from sklearn.metrics import roc_curve

# 레이블 값이 1일때 예측 확률 추출
pred_proba_class1 = model.predict_proba(x_test)[:, 1]

fpr, tpr, threshold = roc_curve(y_test, pred_proba_class1)

반환 값들을 그리면 아래와 같다.

AUC는 ROC curve 아래 면적을 구한 것이고, 일반적으로 1에 가까울 수록 좋은 수치이다. AUC가 커지려면 ROC curve를 최대한 좌측 상단 모서리에 가깝게 두어야 한다. 그러기 위해서는 FPR을 작게 하면서 TPR을 크게 해야한다.








0개의 댓글