Recall, Precision, ROC-AUC

이정훈·2026년 3월 30일
post-thumbnail

Recall, Precision, ROC-AUC

  • Metric모두 분류에 사용

Recall / Precision 비유

  • 어항: 모집단 데이터(class가 FALSE, TRUE로 구성된 Binary데이터)
  • 물컵: 학습된 모델이 TRUE라고 예측한 값
  • 빨간색 물고기와 팔란색 물고기가 있을 때, 어항에서 빨간색 물고기를 잡고싶음
  • 물컵으로 최대한 많은 빨간색 물고기를 잡고싶음
  • 물컵이 커지면(모델이 Positive로 에측을 많이함) 빨간 물고기도 늘어나지만(좋은 모델이면 빨간 물고기가 많기를 기대), 파란 물고기도 잡힐 수 있음

ROC-AUC 비유

  • Receiver Operating Characteristic / Area Under Curve

  • TPR: 고등어라고판단한고등어전체고등어\frac{고등어라고 판단한 고등어}{전체 고등어}

  • FPR: 전갱이인데고등어라고잘못판단한전갱이전체전갱이\frac{전갱이인데 고등어라고 잘못판단한 전갱이}{전체 전갱이}

  • 분모가 실제 고등어 / 전갱이 수인 것에 초점을 두어 threshold를 조절하면 어떻게 변화는지 관찰하면 좋음

  • 임계값이 높으면 오탐(FPR↓), 고등어도 놓침(TPR↓)

  • 임계값을 낮추면 고등어를 더 잘 잡지만(TPR↑), 전갱이도 더 많이 오탐(FPR↑)

  • 랜덤으로 고등어라고 찍어도 직선은 나오고 그 때 AUC는 0.5

  • 이 모델의 AUC는 0.8, 임의로 생선 한마리를 판단했을 때 고등어라고 판단할 가능성이 80%임

threshold=0.95

threshold=0.5

threshold=0.2


proba = clf.predict_proba(X)[:, 1]  # [0] Falae확률, [1] True확률

for thr in thresholds: # 0.95, 0.9, .., 0.1, 0.05
	pred = np.zeros(datas)
    pred[prob>=thr] = 1
	
    tpr = np.sum((pred==1) & (actual==1)) / np.sum(actual==1)
    fpr = np.sum((pred==0) & (actual==1)) / np.sum(actual==1)
    
    fpr 구간별 넓이를 구해서 sum == AUC Score
profile
AngDDo

0개의 댓글