ROC 와 AUC — Discrimination 의 표준 측도

Woodward Ch.13.4 — ROC and AUC

Receiver Operating Characteristic (ROC) 곡선의 정의·해석, Area Under Curve (AUC) 의 수식 (Mann-Whitney U 와의 관계), 임상 임계값, 그리고 두 모형의 AUC 비교 (DeLong test) 를 추상 → 일상어 → 반사실 3 단계 직관으로 풀어낸다.

Experimentation
Modeling
저자

Kwangmin Kim

공개

2026년 05월 08일

1 ROC 곡선 — 모든 cut-point 시각화

정의: ROC Curve

각 cut-point \(c\) 의 (1-Specificity, Sensitivity) 쌍을 plot:

  • \(\text{Sn}(c) = P(\text{score} \ge c \mid Y = 1)\)
  • \(\text{Sp}(c) = P(\text{score} < c \mid Y = 0)\)

좌하 (0, 0) → 우상 (1, 1) 의 곡선.

1.1 직관 — ROC 의 시각

직관 3 단계: ROC 의 본질
Sn
 1.0 │             ↗ Perfect (AUC=1)
     │           ╱
 0.8 │       ╱
     │     ╱  Good (AUC=0.85)
 0.6 │   ╱
     │ ╱      ╱ ╱ Random (AUC=0.5)
 0.4 │      ╱
     │    ╱
 0.2 │  ╱
     │╱
 0.0 └────────────────────→ 1-Sp
     0.0  0.5  1.0
  • 추상 정의: 각 cut-point 의 trade-off 시각. Cut-point 무관 모형 능력 평가.
  • 일상어 비유: 시험 합격선 변화 — 모든 가능한 합격선에서 합격자/부적격 분류 정확도.
  • 반사실 시나리오: 단일 cut-point (예: 5%) 만 보고 모형 평가 → cut-point 의 영향 모름. ROC 가 종합 평가.

2 AUC — Area Under Curve

정의: AUC

\[\text{AUC} = \int_0^1 \text{Sn}(c)\, d(1 - \text{Sp}(c))\]

ROC 곡선 아래 면적.

2.1 Mann-Whitney 와의 관계

직관 3 단계: AUC = Probability of Concordance

핵심 정리: AUC 는 무작위 case + 무작위 control 쌍의 score 비교에서 case 의 score 가 더 높을 확률.

\[\text{AUC} = P(\text{score}_{\text{case}} > \text{score}_{\text{control}})\]

또는 동등하게: \[\text{AUC} = \frac{U}{n_1 n_0}\]

여기서 \(U\) = Mann-Whitney U 통계.

  • 추상 정의: 두 분포 (case, control) 의 separation 정도.
  • 일상어 비유: 키 비교 — 무작위 남성과 여성에서 남성이 큰 키일 확률.
  • 반사실 시나리오: AUC 0.5 = 분포 완전 겹침. 1.0 = 완전 분리. 임상 0.7~0.8 acceptable.

2.2 AUC 의 임상 임계값

정의: Hosmer-Lemeshow 임계값
AUC 해석
0.5~0.6 Poor
0.6~0.7 Acceptable
0.7~0.8 Acceptable to Good
0.8~0.9 Excellent
0.9~1.0 Outstanding

(Hosmer & Lemeshow, 2000).

가정 위반: AUC 만으로 모형 평가

AUC 만으로 모형의 임상 가치 평가 부족.

필요한 추가 도구: - Calibration: 예측 확률 = 진성 위험. - Net benefit: 임상 의사 결정 가치. - NRI / IDI: 새 변수 추가의 가치.

3 단계 직관:

  • 추상 정의: AUC 가 discrimination 만. Calibration 별도.
  • 일상어 비유: 시험 분류 정확도 (AUC) + 점수의 정직성 (calibration) 모두 필요.
  • 반사실 시나리오: AUC 0.85 + calibration 부정확 → 임상 활용 부족. 두 도구 모두 평가.

3 AUC 의 신뢰구간

정의: AUC SE

DeLong et al. (1988): \[\text{Var}(\hat{\text{AUC}}) = \frac{V_{10} + V_{01}}{n_1 n_0}\]

(자세한 수식은 DeLong 의 논문).

95% CI (대표본): \[\hat{\text{AUC}} \pm 1.96 \sqrt{\text{Var}(\hat{\text{AUC}})}\]

3.1 두 모형의 AUC 비교

정의: DeLong’s Test

두 모형의 AUC 차이의 통계 유의성:

\[z = \frac{\hat{\text{AUC}}_1 - \hat{\text{AUC}}_2}{\text{SE}(\hat{\text{AUC}}_1 - \hat{\text{AUC}}_2)}\]

같은 자료에서 비교 시 두 AUC 의 covariance 고려.

직관 3 단계: Model Comparison
  • 추상 정의: 같은 자료의 두 모형 AUC 차이 — 한 모형이 다른 모형보다 우월?
  • 일상어 비유: 두 시험관의 채점 비교 — 한 채점이 더 정확한가.
  • 반사실 시나리오: 단순 AUC 비교 (covariance 무시) → 잘못된 SE. DeLong 이 정확.

4 ROC 의 활용

활용 도구
Cut-point 선택 Youden index (\(J = \text{Sn} + \text{Sp} - 1\) 최대)
모형 평가 AUC + CI
모형 비교 DeLong test
임상 의사 결정 Net benefit (decision curve)

5 A/B 테스트의 AUC

사례: A/B 의 분류기 평가

A/B 테스트의 결과 = 사용자 segment 별 lift 예측 모형의 AUC.

from sklearn.metrics import roc_auc_score, roc_curve

# Risk score 예측
risk_scores = model.predict_proba(X_test)[:, 1]

# AUC
auc = roc_auc_score(y_test, risk_scores)
print(f"AUC: {auc:.3f}")

# ROC curve
fpr, tpr, thresholds = roc_curve(y_test, risk_scores)

# Optimal cut-point (Youden)
J = tpr - fpr
opt_idx = J.argmax()
opt_threshold = thresholds[opt_idx]
print(f"Optimal threshold: {opt_threshold:.3f}")
print(f"  Sn: {tpr[opt_idx]:.3f}, Sp: {1-fpr[opt_idx]:.3f}")

3 단계 직관:

  • 추상 정의: A/B 의 personalization 모형의 평가 — segment 식별 정확도.
  • 일상어 비유: 잠재 구매자 식별 — 100 명 중 진짜 구매자 식별 정확도.
  • 반사실 시나리오: AUC 만으로 부족 — calibration 도 평가 (다음 글).

6 ROC 의 4 가지 활용

정의: ROC 의 활용 분업
활용 도구
Cut-point 선택 Youden index 또는 cost-based
Model comparison DeLong test (paired ROC)
Sample size 계산 AUC 의 검정력 분석
Decision support Net benefit + decision curve

6.1 Youden Index 의 cut-point

직관 3 단계: J = Sn + Sp - 1 의 최대화

\[J(c) = \text{Sn}(c) + \text{Sp}(c) - 1\]

  • 추상 정의: J = ROC 곡선 상의 점에서 대각선 (random) 까지의 수직 거리.
  • 일상어 비유: ROC 의 좌상단으로부터 가장 떨어진 점 — 가장 정보량 많은 cut-point.
  • 반사실 시나리오: J 가 false positive·false negative 비용을 동등 가정. 비대칭이면 cost-weighted cut-point.

6.2 Cost-Based Cut-point

정의: 비대칭 비용

\[c^* = \arg\min_c \left[ C_{\text{FP}} \cdot (1-\text{Sp}(c)) \cdot (1-\pi) + C_{\text{FN}} \cdot (1-\text{Sn}(c)) \cdot \pi \right]\]

  • \(\pi\): 결과의 prevalence.
  • \(C_{\text{FP}}, C_{\text{FN}}\): 각 오류의 비용.
직관: 비용 비대칭의 cut-point 이동
  • 추상 정의: \(C_{\text{FN}} > C_{\text{FP}}\) → cut-point 낮춤 (Sn 우선).
  • 일상어 비유: 화재 감지 — false alarm 비용 < 화재 놓치는 비용 → 민감도 높임.
  • 반사실 시나리오: 비용 분석 없이 Youden 만 사용 시 임상 의사 결정 부족.

7 Partial AUC — 임상 영역만

정의: Partial AUC

특정 specificity 영역의 AUC. 예: \(\text{Sp} \in [0.8, 1.0]\) 만.

\[\text{pAUC} = \int_{\text{Sp}=0.8}^{1.0} \text{Sn}(\text{Sp})\, d\text{Sp}\]

또는 정규화: \[\text{pAUC}^{\text{norm}} = \frac{\text{pAUC}}{0.2} = \text{pAUC} / (\text{Sp 범위})\]

직관 3 단계: Partial AUC 의 활용
  • 추상 정의: 임상에서 의의 있는 specificity 영역 (예: Sp > 0.8) 의 정밀도만 평가.
  • 일상어 비유: 시험의 “상위권 학생 분류 정확도” 만 평가 — 하위권 분류는 무관.
  • 반사실 시나리오: Full AUC 만 보면 의의 없는 영역의 정확도 포함. pAUC 가 임상 정밀.

활용: - 선별 검사 — high specificity (false positive ↓) 영역만. - 진단 검사 — 중간 영역.

8 C-Statistic — Cox 의 AUC

정의: C-Statistic (Concordance Index)

Cox 모형의 risk score 의 AUC 일반화:

\[C = P(\text{score}_i > \text{score}_j \mid T_i < T_j, \delta_i = 1)\]

즉 짧게 산 자가 더 높은 score 일 확률.

Censoring 처리: - Uno’s C, Harrell’s C 등. - \(C = 0.5\) random, \(1.0\) perfect.

직관: C-Statistic 의 의미
  • 추상 정의: AUC 의 시간-사건 자료 일반화. Censoring 의 정직 처리.
  • 일상어 비유: 마라톤 결승 시간 예측 — 빨리 도착할 사람 식별 정확도.
  • 반사실 시나리오: AUC 직접 적용 시 censored 자료 부정확. C-statistic 이 표준.

9 DeLong Test — 두 ROC 비교

정의: DeLong’s Method

같은 자료의 두 모형 ROC 비교.

\[z = \frac{\hat{\text{AUC}}_1 - \hat{\text{AUC}}_2}{\text{SE}(\hat{\text{AUC}}_1 - \hat{\text{AUC}}_2)}\]

핵심: 같은 자료의 paired ROC 의 covariance 고려.

(DeLong et al., 1988).

직관 3 단계: Paired Comparison
  • 추상 정의: 두 모형이 같은 자료에 적합 → 그들의 AUC 가 양의 상관. 단순 비교 SE = 부정확.
  • 일상어 비유: 두 학생의 같은 시험 점수 비교 — 시험 난이도가 둘 다 영향. Paired t-test 가 정확.
  • 반사실 시나리오: 단순 (unpaired) AUC 비교 시 SE 과대 → 검정력 ↓. DeLong 이 정확.

9.1 R / Python 의 DeLong

# Python: scikit-learn 또는 scipy 직접 구현
import numpy as np
from scipy import stats

def delong_test(y_true, y_pred1, y_pred2):
    """DeLong 의 paired AUC 비교 — 단순 구현"""
    # 자세한 구현 생략 (lifelines, statsmodels 사용 권장)
    pass

# R 의 pROC 패키지
# library(pROC)
# roc1 <- roc(y_true, y_pred1)
# roc2 <- roc(y_true, y_pred2)
# roc.test(roc1, roc2, method="delong")

10 Q&A — ROC 의 흔한 오해

Q1: AUC 가 높으면 임상 활용 가치도 높은가?

A: 아니다. Calibration + cost-benefit 도 평가 필요.

3 단계 직관:

  • 추상 정의: AUC 가 rank 측도. 절대 정밀도 (calibration) + 임상 가치 (decision curve) 별도.
  • 일상어 비유: 시험의 분류 정확도 ↑ but 점수 자체는 부정확 가능.
  • 반사실 시나리오: AUC 0.85 + calibration 부정확 → high-risk 환자에 잘못된 처치 위험.
Q2: AUC 0.5 = 모형 무가치?

A: 거의 그렇다. 단, 특정 cut-point 에서 임상 의의 가능 (드뭄).

3 단계 직관:

  • 추상 정의: AUC 0.5 = 두 분포 (case, control) 완전 겹침. 어떤 cut-point 도 분류 무의미.
  • 일상어 비유: 동전 던지기 수준의 분류.
  • 반사실 시나리오: AUC 0.55 만으로도 충분 검정력 + 임상 활용 (대규모 자료) 가능.
Q3: AUC vs Accuracy 의 차이?

A: AUC 는 cut-point 무관, Accuracy 는 특정 cut-point 의 정분류율.

3 단계 직관:

  • 추상 정의: AUC = ranking 능력. Accuracy = 단일 cut-point 정확도.
  • 일상어 비유: AUC = “시험 점수의 분류력”. Accuracy = “70 점 합격선의 합격률 정확도”.
  • 반사실 시나리오: Accuracy 가 prevalence 의존 (희귀 결과 시 높음 misleading). AUC 가 prevalence 무관.

11 A/B 테스트의 ROC 활용 — 사용자 churn 예측

사례: Churn 모형의 ROC 평가
import numpy as np
from sklearn.metrics import roc_auc_score, roc_curve
import matplotlib.pyplot as plt

# Churn 모형 적합
risk_scores = churn_model.predict_proba(X_test)[:, 1]
auc = roc_auc_score(y_test, risk_scores)
print(f"AUC: {auc:.3f}")

# ROC curve
fpr, tpr, thresholds = roc_curve(y_test, risk_scores)

# Youden cut-point
J = tpr - fpr
opt_idx = J.argmax()
opt_threshold = thresholds[opt_idx]
print(f"Optimal threshold (Youden): {opt_threshold:.3f}")
print(f"  Sn: {tpr[opt_idx]:.3f}, Sp: {1-fpr[opt_idx]:.3f}")

# Cost-based cut-point
# 비용 가정: false negative (놓친 churn) = 100, false positive (불필요 캠페인) = 5
def cost(threshold):
    pred = risk_scores >= threshold
    fp = np.sum((pred == 1) & (y_test == 0))
    fn = np.sum((pred == 0) & (y_test == 1))
    return 100 * fn + 5 * fp

opt_cost_threshold = thresholds[np.argmin([cost(t) for t in thresholds])]
print(f"Optimal threshold (cost-based): {opt_cost_threshold:.3f}")

3 단계 직관:

  • 추상 정의: AUC 가 모형 능력 평가, threshold 가 캠페인 의사 결정.
  • 일상어 비유: 시험 분류력 + 합격선 결정.
  • 반사실 시나리오: Youden 만 사용 시 비용 비대칭 무시. Cost-based 가 임상·IT 의사 결정.

12 결론

AUC 가 discrimination 의 표준 측도 — Mann-Whitney 와 동치. DeLong test 로 모형 비교. Partial AUC 와 C-statistic 이 특수 영역·시간 자료 도구. Youden vs cost-based cut-point 가 임상·IT 의사 결정 도구. 단 AUC 만으로 임상 가치 평가 부족 — calibration 별도.

다음 글 (H-WOO13-5) 에서 calibration 의 정의와 평가를 본다.

13 관련 주제

Subscribe

Enjoy this blog? Get notified of new posts by email: