ROC 곡선과 AUC (ROC Curve & Area Under the Curve)¶
개요¶
ROC(Receiver Operating Characteristic) 곡선은 분류 모델의 임계값 독립적 성능을 시각화하는 도구다. X축에 위양성률(FPR), Y축에 진양성률(TPR)을 놓고 임계값을 변화시키며 그린다. AUC(Area Under the ROC Curve)는 이 곡선 아래 면적으로, 모델의 전반적인 분류 능력을 하나의 숫자로 요약한다.
ROC/AUC는 가장 널리 쓰이는 분류 성능 지표 중 하나이지만, 불균형 데이터에서는 함정이 있다.
핵심 개념¶
ROC 곡선 구성¶
임계값을 \(+\infty\)에서 \(-\infty\)로 변화시키면서 (FPR, TPR) 쌍을 그래프에 표시한다.
graph TD
subgraph "ROC 곡선의 주요 점"
A["(0, 0): τ = max<br/>아무것도 양성 예측 안 함"]
B["(1, 1): τ = min<br/>모두 양성 예측"]
C["(0, 1): 완벽한 분류기<br/>FPR=0, TPR=1"]
D["대각선: 랜덤 분류기<br/>AUC = 0.5"]
end ROC 곡선 구성 절차:
- 모든 샘플에 대해 모델 점수 \(\hat{p}\)를 계산
- 점수를 내림차순 정렬
- 각 고유 점수를 임계값으로 사용하여 TP, FP, TN, FN을 계산
- (FPR, TPR) 쌍을 플롯
- 점들을 연결하여 곡선 완성
AUC 해석¶
확률적 해석: 무작위로 선택한 양성 샘플의 점수가 무작위로 선택한 음성 샘플의 점수보다 높을 확률
이는 Wilcoxon-Mann-Whitney U 통계량을 정규화한 것과 동일하다.
AUC 해석 가이드라인:
| AUC 범위 | 해석 |
|---|---|
| 0.5 – 0.6 | 실패 (랜덤에 가까움) |
| 0.6 – 0.7 | 불량 (Poor) |
| 0.7 – 0.8 | 보통 (Fair) |
| 0.8 – 0.9 | 양호 (Good) |
| 0.9 – 1.0 | 우수 (Excellent) |
주의: 이 기준은 대략적인 가이드라인이며, 도메인에 따라 달라진다. 의료 진단에서는 AUC 0.8도 부족할 수 있고, 일부 추천 시스템에서는 0.7이면 실용적일 수 있다.
부분 AUC (Partial AUC)¶
전체 AUC 대신, 관심 있는 FPR 범위(예: \(\text{FPR} < 0.1\))에서의 곡선 아래 면적만 계산한다.
- 표준화된 부분 AUC (McClish correction): 부분 AUC를 \([0.5, 1]\) 범위로 정규화
- 사용 시기: 낮은 FPR 영역에서의 성능만 중요한 경우 (예: 보안 시스템에서 오경보 비율 제한)
다중 클래스 ROC¶
이진 분류 외에 다중 클래스 문제에서도 ROC를 확장할 수 있다.
| 방법 | 설명 |
|---|---|
| One-vs-Rest | 각 클래스에 대해 별도의 ROC 곡선을 그림 (K개의 곡선) |
| Micro-average | 모든 클래스의 예측을 합산하여 단일 ROC 곡선 생성 |
| Macro-average | 클래스별 AUC를 계산 후 평균 |
상세 내용¶
ROC가 오해를 불러일으키는 경우¶
불균형 데이터에서의 함정:
ROC 곡선이 좋아 보이는데 실제 성능은 나쁜 경우가 있다. 핵심 원인은 FPR의 분모다.
음성 클래스가 매우 많으면 \(TN\)이 크므로, 상당히 많은 \(FP\)가 발생해도 FPR은 거의 변하지 않는다.
구체적 예시: 양성 10개, 음성 1000개인 데이터
| FP 수 | FPR | Precision (TP=8 가정) |
|---|---|---|
| 10 | 0.01 | 8/18 = 0.44 |
| 50 | 0.05 | 8/58 = 0.14 |
| 100 | 0.10 | 8/108 = 0.07 |
FPR이 0.1밖에 안 되는데 Precision은 7%까지 떨어진다. ROC 곡선만 보면 "FPR 10% 정도면 괜찮지"라고 생각하기 쉽지만, 실제로는 양성 예측의 93%가 오탐이다.
권장: 불균형 데이터에서는 PR 곡선을 함께 확인해야 한다. Davis & Goadrich (2006)의 형식적 증명 참고.
AUC의 한계¶
-
임계값 무관성: AUC는 모든 임계값에 걸친 평균적 성능이므로, 실제 운영할 특정 임계값에서의 성능을 보장하지 않는다. 두 모델이 동일한 AUC를 가져도 실제 사용 임계값에서 성능이 완전히 다를 수 있다.
-
보정 무감응성: AUC는 순위(ranking)만 평가한다. 확률이 잘 보정(calibrated)되었는지는 전혀 반영하지 않는다. 보정 참조.
-
무관한 임계값의 평균: AUC는 실용적으로 의미 없는 임계값 영역(예: FPR > 0.5)의 성능도 포함한다. 이 영역이 중요하지 않다면 Partial AUC가 대안이다.
-
모델 간 교차: AUC가 높은 모델이 모든 임계값에서 우월하지는 않다. ROC 곡선이 교차하면, 특정 영역에서는 AUC가 낮은 모델이 더 좋을 수 있다.
ROC 곡선 vs PR 곡선 비교¶
flowchart TD
A["분류 모델 평가"] --> B{"데이터가 불균형인가?"}
B -->|"예 (예: 양성 < 10%)"| C["PR 곡선 우선 사용"]
B -->|"아니오 (균형 잡힘)"| D{"Specificity가 중요한가?"}
D -->|"예"| E["ROC 곡선 사용"]
D -->|"아니오"| F["PR 또는 ROC 모두 가능"]
C --> G["ROC도 참고용으로 함께 확인"] | 비교 항목 | ROC 곡선 | PR 곡선 |
|---|---|---|
| 불균형 데이터 | 낙관적으로 보일 수 있음 | 현실적 |
| 기준선 | 대각선 (항상 동일) | 유병률에 따라 변함 |
| TN 반영 | O (Specificity 통해) | X |
| 요약 지표 | AUC-ROC | AP (Average Precision) |
| 곡선 비교 | 비교 용이 (기준선 고정) | 기준선이 다르면 비교 어려움 |
언제 사용하는가¶
- 클래스가 비교적 균형잡힌 이진 분류 → ROC-AUC가 적절
- 여러 모델의 전반적 분류 능력 비교 → AUC로 요약 비교
- Specificity(특이도)가 중요한 의학적 맥락 → ROC 곡선에서 Sensitivity-Specificity 트레이드오프 확인
- 특정 FPR 범위에서의 성능만 중요 → Partial AUC 사용
- 불균형 데이터 → ROC보다 PR 곡선 우선
흔한 오해와 함정¶
-
"AUC가 0.95이면 훌륭한 모델이다" — 불균형 데이터에서는 높은 AUC가 높은 실용 성능을 의미하지 않을 수 있다. 반드시 PR 곡선도 확인하라.
-
"AUC가 같으면 모델 성능이 같다" — ROC 곡선이 교차할 수 있다. 운영 임계값에서의 구체적 성능을 비교해야 한다.
-
"AUC가 높으면 확률 예측이 정확하다" — AUC는 순위(ranking)만 반영한다. 확률의 정확성은 보정(Calibration)으로 별도 평가해야 한다.
-
"ROC 곡선 아래의 대각선 아래에 모델이 있으면 항상 나쁘다" — AUC < 0.5는 예측을 반전(flip)하면 AUC > 0.5가 된다. 이는 모델이 나쁜 것이 아니라 레이블 해석이 뒤바뀐 것일 수 있다.
-
"ROC-AUC로 모든 분류 문제를 평가할 수 있다" — 랭킹 문제에서는 NDCG, MAP가, 확률적 예측에서는 Brier Score, Log Loss가 더 적절하다.
다른 주제와의 연결¶
- 혼동 행렬과 분류 지표: TPR, FPR 등 ROC의 축을 구성하는 기본 지표
- 정밀도-재현율 트레이드오프: PR 곡선과의 비교, 불균형 데이터에서의 선택
- 보정 (Calibration): AUC로는 알 수 없는 확률의 품질
- 통계적 검정: AUC 차이가 통계적으로 유의한지 검증하는 방법
- 공정성 지표: 그룹별 ROC 곡선 비교와 Equalized Odds