BERT 뉴스 분류 #9 모델 성능평가 - AUROC / AUPRC

BERT 뉴스 분류 #9 모델 성능평가 - AUROC / AUPRC #

#2026-03-03


#1

지금까지 본 Accuracy, Precision, Recall, F1은 모두 하나의 특정한 규칙에 묶여 있다. “네 클래스 중 확률이 가장 높은 것을 정답으로 선택한다"는 규칙이다. 하지만 이 규칙이 항상 최선인 건 아니다. 예를 들어 모델이 어떤 기사에 대해 World 0.35, Sports 0.25, Business 0.22, Sci/Tech 0.18이라는 확률을 내놓았다고 하자. 기본 규칙에 따르면 World로 분류된다. 0.35가 가장 높으니까. 하지만 0.35라는 확률은 겨우 3분의 1 수준이다. 이걸 정말 World로 확정해야 할까? 임계값을 0.5로 올려서 “최소 50% 이상 확신이 있을 때만 분류한다"는 규칙을 쓰면 이 기사는 미분류로 남을 것이다.

임계값을 어디에 두느냐에 따라 모델의 행동이 완전히 달라진다. 임계값이 낮으면 많은 기사를 분류하지만 오분류도 늘어난다. 임계값이 높으면 확실한 것만 분류해서 정밀도는 올라가지만 많은 기사를 놓치게 된다. 그렇다면 모델의 진짜 실력을 측정하려면 어떤 특정 임계값에서의 성능이 아니라, 모든 가능한 임계값에서의 성능을 종합적으로 봐야 한다. 이것이 ROC 곡선과 PR 곡선의 존재 이유다.

#

#2 ROC 곡선: 모든 임계값에서의 트레이드오프

ROC 곡선은 임계값을 0에서 1까지 천천히 바꿔가면서, 각 임계값에서의 TPR(재현율)과 FPR(오탐율)을 기록한 것이다.

TPR은 “실제 양성 중 모델이 잡아낸 비율"이다. 이전 단계에서 본 Recall과 같다. FPR은 “실제 음성 중 모델이 잘못 양성으로 분류한 비율"이다. 이상적인 모델은 TPR이 1이고 FPR이 0인 모델이다. 모든 양성을 다 잡아내면서 오탐은 전혀 없는 것이다. 임계값을 0으로 내리면 모든 것을 양성으로 분류하므로 TPR=1이지만 FPR도 1이다. 임계값을 1로 올리면 아무것도 양성으로 분류하지 않으므로 TPR=0이고 FPR=0이다. 임계값을 0에서 1로 올려가면서 TPR과 FPR이 어떻게 변하는지를 그래프로 그리면 ROC 곡선이 된다.

좋은 모델의 ROC 곡선은 그래프의 왼쪽 상단 모서리에 바짝 붙는다. FPR이 아주 작을 때(오탐이 거의 없을 때)에도 TPR이 높다(대부분을 잡아낸다)는 뜻이다. 나쁜 모델, 즉 랜덤으로 찍는 모델의 ROC 곡선은 대각선이다. FPR이 올라가는 만큼 TPR도 올라가는, 아무런 판별 능력이 없는 상태다.

- 분류 모델은 보통 "확률 > 0.5이면 양성"으로 판단한다. 하지만 이 임계값을 0.3으로 바꾸면? 0.7로 바꾸면?
- ROC 곡선은 임계값을 0~1 사이 모든 값으로 바꿔가면서 그때마다의 FPR(오탐율)과 TPR(재현율)을 기록한 곡선이다.

TPR(재현율)
   1.0 │                   ╭──────────
       │             ╭╯
       │     ╭╯       ← 곡선이 왼쪽 상단에 붙을수록 좋음
   0.5 │╯
   0.0 └─────────────── FPR(오탐율)
       0.0    0.5    1.0

왼쪽 상단: 오탐은 적고 재현율은 높음 = 이상적
대각선:    랜덤 분류기 = AUC=0.5
AUC(Area Under Curve): 곡선 아래 면적 → 1에 가까울수록 좋음

AUROC는 이 곡선 아래의 면적이다. 완벽한 모델은 1.0이고, 랜덤 모델은 0.5다. 이전 DNA 분석에서 ROC-AUC를 평가 지표로 썼을 때 설명한 것과 같은 개념이다. “임의로 고른 양성 샘플의 점수가 임의로 고른 음성 샘플의 점수보다 높을 확률"이 AUROC의 직관적 의미다.

#

#3 PR 곡선: 더 엄격한 잣대

PR 곡선은 Precision과 Recall로 그린다. 임계값을 바꿔가면서 각 지점에서의 Precision(정밀도)과 Recall(재현율)을 기록한 것이다.

Precision
   1.0 │────────╮
       │                              ╰╮     ← 오른쪽 상단에 붙을수록 좋음
   0.5 │                                ╰─
   0.0 └─────────────── Recall
       0.0    0.5    1.0
- ROC 대신 Precision(정밀도)과 Recall(재현율)로 그린 곡선.
- 클래스 불균형이 클 때 더 신뢰할 수 있는 지표다.

ROC 곡선과 PR 곡선의 결정적인 차이는 불균형 데이터에서 드러난다. 1,000개의 기사 중 Business가 50개뿐인 상황을 생각해보자. 모델이 100개를 Business로 예측했고 그 중 45개가 실제 Business라면 Precision은 45/100=0.45이고 Recall은 45/50=0.90이다.

ROC의 FPR은 어떨까? 비Business 950개 중 55개를 잘못 Business로 예측했으니 FPR=55/950=0.058이다. FPR이 5.8%밖에 안 되니 ROC 관점에서는 꽤 좋아 보인다. 하지만 PR 관점에서는 Precision이 0.45로 절반도 안 된다. 같은 모델인데 ROC로 보면 좋아 보이고 PR로 보면 나빠 보이는 것이다.

이유는 FPR의 분모가 음성 전체 수(950개)이기 때문이다. 음성이 압도적으로 많으면 소수의 오분류가 FPR에 미치는 영향이 희석된다. 반면 Precision의 분모는 모델이 양성으로 예측한 수(100개)이므로 오분류가 직접적으로 반영된다. AUPRC가 AUROC보다 더 엄격한 지표라고 하는 이유가 바로 이것이다.

#

#4 클래스별 분석

클래스AUROCAUPRC해석
World0.98540.9815우수
Sports0.99950.9988거의 완벽
Business0.98270.8778AUPRC 상대적 취약
Sci/Tech0.99310.9816우수
Macro 평균0.99020.9599전체 우수

Sports의 AUROC가 0.9995다. 사실상 1.0이다. FPR이 0.001% 수준, 즉 만 개 중 하나도 안 되는 오탐률에서도 TPR이 거의 100%라는 뜻이다. ROC 곡선이 왼쪽 상단 모서리에 거의 완벽하게 달라붙어 있다. AUPRC도 0.9988로 PR 곡선 역시 오른쪽 상단에 달라붙어 있다. 스포츠 기사를 구별하는 일은 이 모델에게 사실상 완전히 풀린 문제다.

Business에서 진짜 흥미로운 현상이 나타난다. AUROC가 0.9827인데 AUPRC가 0.8778이다. 약 10%포인트의 격차다. 다른 클래스에서는 이 격차가 0.4%포인트(World), 0.07%포인트(Sports), 1.2%포인트(Sci/Tech)에 불과한데, Business만 유독 크다.

이 격차가 발생하는 메커니즘을 구체적으로 따라가보자. Business의 ROC 곡선에서 AUROC가 0.9827이라는 건, 전반적인 순위 매기기 능력은 훌륭하다는 뜻이다. Business 기사에 높은 점수를, 비Business 기사에 낮은 점수를 대체로 잘 부여한다. 하지만 PR 곡선에서 문제가 드러난다. Recall을 높이려고 임계값을 낮추면, Sci/Tech 기사 중 기술 기업 관련 기사들이 Business 예측에 섞여 들어온다. 이 기사들이 꽤 높은 Business 점수를 받고 있기 때문이다. “TSMC plans $40 billion investment"라는 기사는 Business 점수가 높을 수밖에 없다. 이런 기사들이 유입되면서 Precision이 급격히 떨어지고, PR 곡선이 무너지는 것이다.

ROC 곡선에서는 이 현상이 잘 안 보인다. 비Business 기사가 수백 건이나 되니까 Sci/Tech에서 넘어온 10건 정도는 FPR에 큰 영향을 미치지 않는다. 하지만 PR 곡선에서는 모델이 Business로 예측한 건수 대비로 계산하므로 이 10건이 Precision을 직접적으로 깎아먹는다.

Business AUROC=0.9827  vs  Business AUPRC=0.8778
                           AUROC보다 1000포인트(!) 낮음

이 격차가 의미하는 것:
- AUROC: 전반적인 랭킹 능력은 98%
- AUPRC: 실제로 Business를 정밀하게 찾아내는 능력은 87.8%

왜 차이가 나나? 
- Business와 Sci/Tech의 혼동 때문이다.
- PR 곡선에서는 Recall이 높아질수록 Sci/Tech가 Business로 잘못 유입되어 Precision이 급격히 떨어진다.

#

#5 정리

AUROC의 직관적 의미를 다시 한번 짚으면, Macro 평균 AUROC가 0.9902라는 건 네 클래스 모두에서 이 순위 매기기 능력이 99% 수준이라는 것이다. 모델의 근본적인 구별 능력은 매우 뛰어나다.

Business의 AUROC 0.9827은 “뉴스 기사 하나를 무작위로 골랐을 때, 그것이 실제 Business이면 비Business보다 더 높은 Business 점수를 받을 확률이 98.27%“라는 뜻이다. 100번 비교하면 98번은 모델이 올바른 순서를 매긴다.

AUPRC 0.8778은 다른 방식으로 모델을 시험한다. 모델이 Business 점수가 높은 순서대로 기사를 하나씩 꺼내간다. 처음 몇 개는 확실한 Business 기사다. “Q3 earnings beat expectations"같은 기사가 먼저 나온다. 여기까지는 Precision이 100%다. 계속 꺼내면 어느 순간 “TSMC plans $40 billion chip investment” 같은 기사가 끼어든다. 이건 Sci/Tech인데 Business 점수가 높게 나온 것이다. 이 기사가 끼어드는 순간 Precision이 떨어진다. 더 꺼내면 또 경계 기사가 섞이고, Precision이 더 떨어진다. AUPRC는 이 전체 과정에서의 평균 Precision이다.

핵심적인 차이는 여기 있다. AUROC에서 Sci/Tech 경계 기사 10건은 비Business 전체 228건(304건 중 Business 76건을 뺀 나머지) 속에 묻혀서 영향력이 희석된다. 하지만 AUPRC에서 이 10건은 모델이 Business로 예측한 상위권에 직접 끼어들어서 Precision을 깎아먹는다. 모델이 Business라고 자신 있게 내놓은 목록 안에 Sci/Tech가 섞여 있는 것이 AUPRC에서는 바로 드러나지만, AUROC에서는 쉬운 비교들에 가려서 잘 안 보이는 것이다.

그래서 AUROC가 “전체적으로 Business와 비Business를 구별하는 능력"을 측정한다면, AUPRC는 “모델이 Business라고 확신한 것들이 실제로 얼마나 믿을 만한가"를 측정한다. Business의 경우 전체적인 구별 능력은 98%로 훌륭하지만, 상위권의 순도는 88%로 떨어진다. 그 10%포인트의 격차가 곧 Business-Sci/Tech 경계 기사들의 혼동이다.

AUPRC가 알려주듯이 “구별할 수 있다"와 “정밀하게 분류할 수 있다"는 같은 말이 아니다. Business-Sci/Tech 경계에서 모델은 두 클래스를 대체로 구별할 수 있지만(AUROC 0.98), 경계 근처의 애매한 기사들을 정밀하게 분류하는 데는 한계가 있다(AUPRC 0.88). 이 격차가 이전 단계에서 본 혼동 행렬의 Business-Sci/Tech 오분류 패턴과 정확히 일치한다. 여러 각도의 지표가 같은 문제를 가리키고 있는 것이다.