BERT 뉴스 분류 #8 모델 성능평가 - Precision / Recall / F1 #
#2026-03-03
#1 평균의 함정
전체 F1이 0.9482라고 했다. 이 숫자는 네 클래스의 가중 평균이다. 평균이라는 건 잘하는 쪽과 못하는 쪽이 서로 상쇄된다는 뜻이다. 시험에서 수학 100점, 영어 100점, 국어 100점, 과학 70점을 받으면 평균 92.5점이다. 꽤 좋은 점수다. 하지만 이 학생의 약점이 과학이라는 사실은 평균만 봐서는 보이지 않는다. 클래스별 세부 지표를 보는 이유가 정확히 이것이다.
전체 F1 = 0.9482 (가중 평균)
↑ 이 숫자만 보면 Sports의 완벽함과 Sci/Tech의 부족함이 안 보인다
#
#2 Precision / Recall / F1
| 클래스 | Precision | Recall | F1 | 해석 |
|---|---|---|---|---|
| World | 1.0000 | 0.9467 | 0.9726 | 예측이면 무조건 맞음, 일부 World를 다른 클래스로 분류 |
| Sports | 0.9886 | 1.0000 | 0.9943 | 거의 완벽, Sports 뉴스는 하나도 안 놓침 |
| Business | 0.8197 | 0.9259 | 0.8696 | Precision 낮음 = Sci/Tech가 Business로 잘못 유입 |
| Sci/Tech | 0.9524 | 0.9091 | 0.9302 | Recall 낮음 = Sci/Tech 일부가 Business로 누락 |
Sports부터 보자. F1이 0.9943으로 거의 완벽하다. Precision이 0.9886이고 Recall이 1.0000이다. Recall이 1.0이라는 건 실제 스포츠 기사 76건을 단 하나도 놓치지 않고 전부 잡아냈다는 뜻이다. Precision이 0.9886이라는 건 모델이 스포츠라고 판정한 것 중 하나만 실제로는 스포츠가 아니었다는 뜻이다. 혼동 행렬에서 봤듯이 스포츠는 어휘가 너무 독특해서 모델이 쉽게 구별한다.
World는 흥미로운 패턴을 보인다. Precision이 1.0000이고 Recall이 0.9467이다. Precision이 1.0이라는 건 모델이 “이건 World 기사야"라고 판정하면 100% 맞다는 뜻이다. 한 번도 틀린 적이 없다. 하지만 Recall이 0.9467이라는 건 실제 World 기사 78건 중 75건만 잡아내고 3건을 놓쳤다는 뜻이다. 모델이 World를 예측할 때는 매우 보수적으로 행동하는 것이다. 확실한 것만 World라고 말하고, 조금이라도 애매하면 다른 클래스로 분류한다. 그래서 예측하면 무조건 맞지만 일부를 놓친다.
Sci/Tech는 Precision이 0.9524로 꽤 높고 Recall이 0.9091로 상대적으로 낮다. 모델이 Sci/Tech라고 판정하면 95%는 맞지만, 실제 Sci/Tech 기사의 9%가 Business로 빠져나간다. 혼동 행렬에서 본 10건의 유출이 여기서 Recall을 깎아먹고 있는 것이다.
Business가 가장 문제다. Precision이 0.8197로 네 클래스 중 유일하게 0.9 아래다. 모델이 Business라고 판정한 것 중 약 18%가 실제로는 Business가 아니다. 주로 Sci/Tech 기사가 Business로 잘못 유입된 것이다. Recall은 0.9259로 나쁘지 않다. 실제 Business 기사 대부분은 잡아내지만, 다른 클래스의 기사가 Business 예측에 섞여 들어와서 Precision이 떨어지는 구조다.
Precision = 내가 "이건 Business야"라고 했을 때 실제 맞은 비율
Recall = 실제 Business 뉴스를 얼마나 건져냈는가
Business Precision=0.82:
모델이 Business라고 예측한 81건 중 66건이 진짜 Business
15건(≈Sci/Tech 10건 + ?)은 Business가 아닌데 잘못 예측
Business Recall=0.93:
실제 Business 81건 중 75건을 찾아냄
6건은 놓침(→Sci/Tech로 분류됨)
#
#3 AUROC / AUPRC
| 클래스 | AUROC | AUPRC | 의미 |
|---|---|---|---|
| World | 0.9854 | 0.9815 | 매우 좋음 |
| Sports | 0.9995 | 0.9988 | 거의 완벽 (분류 경계가 명확) |
| Business | 0.9827 | 0.8778 | AUPRC가 상대적으로 낮음 |
| Sci/Tech | 0.9931 | 0.9816 | 좋음 |
AUROC를 클래스별로 보면 Sports가 0.9995로 거의 1.0이고, 나머지도 0.98~0.99 범위에서 모두 훌륭하다. AUROC 관점에서는 네 클래스 모두 잘 구분되고 있다.
하지만 AUPRC에서 차이가 드러난다. Sports는 0.9988, World는 0.9815, Sci/Tech는 0.9816인데, Business만 0.8778로 눈에 띄게 낮다. AUROC와 AUPRC 사이에 이렇게 큰 격차가 벌어지는 이유가 있다.
AUROC는 양성과 음성의 순위만 본다. Business 기사의 점수가 비Business 기사의 점수보다 대체로 높기만 하면 AUROC는 좋게 나온다. 하지만 AUPRC는 모델이 높은 확률을 부여한 예측들의 정밀도를 더 엄격하게 평가한다. Business의 경우 Sci/Tech 기사 중 기술 기업 관련 기사들이 꽤 높은 Business 확률을 받는다. 이 기사들이 AUROC에서는 큰 영향을 미치지 않지만 AUPRC에서는 Precision을 직접 깎아먹는다.
비유하자면 AUROC는 “전체적으로 순서가 맞는가"를 보고, AUPRC는 “상위권에 엉뚱한 게 섞여 있는가"를 본다. Business 예측의 상위권에 Sci/Tech 기사가 섞여 있으니 AUPRC가 떨어지는 것이다.
#
#4 이 분석이 개선 방향을 어떻게 알려주는가
각 클래스의 지표가 서로 다른 패턴을 보이므로, 개선 전략도 클래스별로 달라야 한다.
Business의 Precision을 올리려면 Sci/Tech 기사가 Business로 잘못 유입되는 것을 막아야 한다. Business 뉴스만의 고유한 특징, 예를 들어 “revenue”, “quarterly earnings”, “stock price”, “merger” 같은 순수 비즈니스 어휘를 모델이 더 강하게 인식하도록 학습시키는 것이 방법이다. FinBERT처럼 금융 텍스트로 사전학습된 모델을 쓰면 이런 어휘의 표현이 이미 더 정교하게 학습되어 있어서 효과적일 수 있다.
Sci/Tech의 Recall을 올리려면 Sci/Tech 기사가 Business로 빠져나가는 것을 막아야 한다. 특히 “기술 기업의 경영 뉴스"처럼 두 카테고리의 경계에 있는 기사들을 더 많이 학습시켜서, 모델이 이 경계에서 더 세밀한 판단을 할 수 있게 만들어야 한다.
이전 망막증 프로젝트에서 혼동 행렬을 보고 “등급 2와 3의 경계가 문제"라는 진단을 내린 것과 같은 구조다. 전체 점수는 대략적인 건강 상태를 알려주고, 클래스별 지표는 정확히 어디가 아픈지를 짚어주고, 그 진단을 바탕으로 구체적인 치료 방향을 잡는 것이다.