1 이 편의 위치
04편에서 8개 모델이 공정한 파이프라인으로 학습·평가됐음을 보증했다. 이제 그 결과를 통계적으로 해석할 차례다. 이 편의 질문은 하나로 요약된다. “정확도 1~2%p 차이가 진짜 실력 차인가, 아니면 샘플링 노이즈인가”. 이 질문에 답하지 못하면 06편 Task 재정의와 07편 배포 결정이 모두 공중에 뜬다.
2 평가 지표 세트
단일 정확도 하나로 모델을 비교하면 두 가지 함정에 빠진다. 클래스 불균형에서 약한 클래스의 성능이 가려지고, 한 번의 test split 결과를 절대시하게 된다. 이를 피하기 위해 네 층의 지표를 쌓아 사용한다.
- Test Accuracy — 전체 샘플 중 정답 비율. 클래스 균형(본 프로젝트 1.37x)에서는 직관적 지표로 적합.
- Macro F1 — 클래스별 F1의 산술 평균. 소수 클래스를 크게 볼 때 유용.
- Weighted F1 — 샘플 수 가중 평균. 전체 분포 반영.
- 95% 신뢰구간 — 단일 split 결과의 불확실성 정량화.
- 페어드 McNemar + Holm 보정 — 모델 간 통계적 유의차 판정.
본 프로젝트의 클래스 분포가 사실상 균형(1.37x)이라 Macro F1과 Weighted F1이 거의 같은 값으로 나온다. 이 관찰은 수식에서 곧바로 따라온다.
\[\text{Macro F1} = \frac{1}{K}\sum_{k=1}^{K} F1_k, \qquad \text{Weighted F1} = \sum_{k=1}^{K} \frac{n_k}{N} F1_k\]
Macro는 클래스 \(k\) 의 F1을 균등 가중 \(1/K\) 로 평균하고, Weighted는 샘플 비율 \(n_k / N\) 로 가중한다. 본 프로젝트처럼 \(n_k / N \approx 1/K\) (14그룹 463~634건, 비율 1.37x)이면 두 가중치가 수치적으로 거의 같아져 \(\text{Macro F1} \approx \text{Weighted F1}\) 이 수학적 필연이 된다. 뒤에 나올 실측에서 두 값이 0.001~0.002 차이에 머무는 것은 이 근사의 잔차다. 따라서 Test Acc와 F1이 서로 모순되지 않는다는 사전 확인이 된다.
3 정확도와 F1 — 단순 비교
단일 split 결과를 한 표로 정리하면 다음과 같다.
| 순위 | 모델 | Test Acc | Macro F1 | Weighted F1 | Params |
|---|---|---|---|---|---|
| 1 | KLUE-RoBERTa | 96.88% | 0.9681 | 0.9686 | 110M |
| 2 | XLM-RoBERTa | 96.49% | 0.9643 | 0.9648 | 278M |
| 3 | KoBERT | 95.84% | 0.9574 | 0.9581 | 92M |
| 4 | ALBERT (Kor) | 95.58% | 0.9535 | 0.9544 | 13M |
| 5 | mBERT | 95.52% | 0.9538 | 0.9544 | 167M |
| 6 | BiLSTM (Kor) | 94.81% | 0.9470 | 0.9480 | 671K |
| 7 | DistilKoBERT | 93.12% | 0.9286 | 0.9298 | 28M |
| 8 | multilingual-e5 | 90.84% | 0.9067 | 0.9078 | 278M (동결) |
여기서 두 가지가 눈에 들어온다. 첫째, Macro F1과 Weighted F1이 모든 모델에서 0.001~0.002 차이에 불과하다. 이는 클래스 균형을 다시 확인해주는 증거다. 둘째, 1등 KLUE와 5등 mBERT의 정확도 차이가 1.36%p밖에 안 된다. 이 차이가 통계적으로 의미 있는지가 이 편의 핵심 질문이 된다.
4 95% 신뢰구간 — 숫자에 불확실성을 붙인다
단일 split의 Test Acc는 점추정치다. “이 숫자가 얼마나 정확한가”를 정량화하려면 신뢰구간이 필요하다. 이항 비율의 정규 근사를 쓰면 다음과 같다.
\[\mathrm{CI}_{95\%} = \hat{p} \pm 1.96 \sqrt{\frac{\hat{p}(1 - \hat{p})}{n}}\]
여기서 \(\hat{p}\) 는 Test Acc, \(n\) 은 test set 크기(본 프로젝트 1,540)다. 8개 모델에 적용한 실측 결과는 다음과 같다.
| 모델 | Test Acc | SE | CI Low | CI High | Width |
|---|---|---|---|---|---|
| KLUE-RoBERTa | 96.88% | 0.443 | 96.02% | 97.75% | 1.74 |
| XLM-RoBERTa | 96.49% | 0.469 | 95.57% | 97.41% | 1.84 |
| KoBERT | 95.84% | 0.509 | 94.85% | 96.84% | 1.99 |
| ALBERT (Kor) | 95.58% | 0.524 | 94.56% | 96.61% | 2.05 |
| mBERT | 95.52% | 0.527 | 94.49% | 96.55% | 2.07 |
| BiLSTM (Kor) | 94.81% | 0.566 | 93.70% | 95.91% | 2.22 |
| DistilKoBERT | 93.12% | 0.645 | 91.85% | 94.38% | 2.53 |
| multilingual-e5 | 90.84% | 0.735 | 89.40% | 92.28% | 2.88 |
이 표가 말하는 것이 중요하다. 상위 5개 모델의 95% CI가 서로 겹친다. KLUE의 CI 하단(96.02%)이 mBERT의 CI 상단(96.55%)과 겹치고, ALBERT의 CI(94.56~96.61)가 KLUE·XLM·KoBERT·mBERT 모두와 겹친다. CI 겹침은 “통계적으로 동등할 가능성이 있다”는 약한 증거이고, 엄밀한 판정은 페어드 검정으로 넘어간다.
반면 정확도 상위/하위 그룹 사이 — 예를 들어 KLUE 96.88%와 multilingual-e5 90.84% — 는 CI가 전혀 겹치지 않는다. 이 경우는 페어드 검정 없이도 유의하게 다르다고 결론 낼 수 있다.
4.1 CI가 주는 실무적 의미
이 CI 분석의 실무 메시지는 “정확도 소수점 둘째 자리까지 해석하지 말자”다. KLUE 96.88 vs XLM 96.49의 0.39%p 차이는 각 모델 CI 폭(1.7~1.8%p)의 1/4 수준이다. 이 정도 차이를 “KLUE가 0.39%p 더 낫다”고 단정하면 다음 실험에서 반대 결과가 나올 수 있다. 숫자 앞에 “95% CI 겹침”을 먼저 확인하는 습관이 의사결정을 견고하게 만든다.
5 McNemar 검정 — 페어드 비교의 정석
CI 겹침은 약한 증거일 뿐이다. 같은 test set에서 두 모델의 오답 패턴이 얼마나 다른지를 엄밀히 검정해야 한다. 여기서 페어드 비교용 McNemar 검정이 쓰인다.
5.1 원리
McNemar는 같은 데이터에 두 분류기를 적용했을 때, 한 쪽만 틀린 케이스의 수를 세어 두 분류기 성능이 동등한지 검정한다. 2×2 분할표를 다음과 같이 구성한다.
| 모델 B 정답 | 모델 B 오답 | |
|---|---|---|
| 모델 A 정답 | \(a\) | \(b\) |
| 모델 A 오답 | \(c\) | \(d\) |
두 모델의 성능이 동등하다는 귀무가설 하에서 \(b = c\) 가 기대된다. 통계량은 다음과 같다.
\[\chi^2 = \frac{(b - c)^2}{b + c}\]
자유도 1의 카이제곱 분포로 p-value를 구한다. \(b + c\) 가 작으면(25 미만) 연속성 보정 버전을 쓰거나 binomial exact 검정으로 대체한다. 본 프로젝트는 \(b + c\) 가 대부분 40~200 범위라 일반 McNemar로 충분하다.
5.2 실행 결과 — 28쌍의 페어드 비교
8개 모델의 모든 쌍 28개에 McNemar를 적용했다. 주요 결과 발췌.
| Model A | Model B | A만 정답 (b) | B만 정답 (c) | χ² | p-value (raw) |
|---|---|---|---|---|---|
| BiLSTM | ALBERT | 21 | 87 | 39.12 | 3.98e-10 |
| BiLSTM | KoBERT | 24 | 102 | 47.06 | 6.90e-12 |
| BiLSTM | KLUE-RoBERTa | 24 | 110 | 53.92 | 2.09e-13 |
| BiLSTM | multilingual-e5 | 98 | 91 | 0.19 | 0.663 |
| ALBERT | KoBERT | 28 | 40 | 1.78 | 0.182 |
| ALBERT | mBERT | 31 | 30 | 0.00 | 1.000 |
| ALBERT | KLUE-RoBERTa | 17 | 37 | 6.69 | 0.010 |
| KoBERT | mBERT | 39 | 26 | 2.22 | 0.137 |
| KoBERT | KLUE-RoBERTa | 23 | 31 | 0.91 | 0.341 |
| KoBERT | XLM-RoBERTa | 24 | 26 | 0.02 | 0.888 |
| KLUE-RoBERTa | XLM-RoBERTa | 22 | 16 | 0.66 | 0.417 |
여기서 눈여겨볼 두 관찰이 있다.
- ALBERT vs mBERT가 p = 1.000 — b = 31, c = 30으로 거의 완전한 대칭. 13M과 167M 파라미터의 두 모델이 같은 test set에서 오답 패턴 차이가 통계적으로 전무. 크기 12.7배 차이가 이 task에서 무의미함을 한 줄로 증명한다.
- BiLSTM vs multilingual-e5가 p = 0.663 — 671K의 from-scratch 모델과 278M의 동결 임베딩 모델이 통계적 동등. 파라미터 수 400배 차이가 정확도로 이어지지 않는다.
6 Holm 다중비교 보정 — 28번 테스트의 대가
여기서 함정이 하나 있다. 28쌍을 각각 α = 0.05 기준으로 검정하면, 귀무가설이 맞아도 우연히 28 × 0.05 ≈ 1.4건의 “가짜 유의차”가 예상된다. 다중비교 보정 없이 각 p-value를 해석하면 “실제로 없는 차이를 있다고 판정”하게 된다.
6.1 Holm 방법
Holm 보정은 Bonferroni보다 덜 보수적이면서 family-wise error를 통제하는 step-down 절차다. 원리는 이렇다.
\(k\) 개의 p-value를 \(p_{(1)} \le p_{(2)} \le \ldots \le p_{(k)}\) 로 정렬한 후, 작은 쪽부터 순서대로 검사한다. \(i\) 번째 p-value가 \(\alpha / (k - i + 1)\) 을 넘지 못하면 유의, 넘으면 거기서 멈추고 그 이후는 모두 비유의로 처리한다. 본 프로젝트는 \(k = 28\) 이다.
Bonferroni(\(\alpha / k\)) 대비 Holm이 더 관대한 이유는, 가장 작은 p-value는 Bonferroni와 같은 \(\alpha / k\) 기준이지만 이후 p-value는 \(\alpha / (k-1), \alpha / (k-2), \ldots\) 로 점점 기준이 느슨해지기 때문이다. 즉 family-wise error를 통제하되 개별 검정의 power 손실을 최소화한다.
6.2 적용 결과 — 상위 5개의 묶음
Holm 보정 후 유의성이 바뀐 주요 쌍이다.
| Model A | Model B | raw p | Holm p | raw | Holm |
|---|---|---|---|---|---|
| BiLSTM | ALBERT | 3.98e-10 | 8.77e-09 | *** | *** |
| ALBERT | KLUE-RoBERTa | 0.010 | 0.111 | ** | ns |
| mBERT | KLUE-RoBERTa | 0.009 | 0.111 | ** | ns |
| BiLSTM | DistilKoBERT | 0.017 | 0.170 | * | ns |
| DistilKoBERT | multilingual-e5 | 0.0008 | 0.011 | *** | * |
raw에서는 유의()했던 ALBERT-KLUE, mBERT-KLUE가 Holm 보정 후 ns(not significant)**로 바뀐다. 상위 5개 모델(KLUE·XLM·KoBERT·ALBERT·mBERT)의 모든 쌍이 Holm 보정 후 ns로 정리된다. 이것이 이 시리즈에서 가장 중요한 단일 결과다.
6.3 결과 전체 묶음
Holm 보정 후 살아남은 유의차와 비유의차를 모델 그룹으로 묶으면 다음과 같다.
[등급 A — Holm ns로 서로 묶이는 상위 5개]
KLUE-RoBERTa (96.88%)
XLM-RoBERTa (96.49%)
KoBERT (95.84%)
ALBERT (Kor) (95.58%)
mBERT (95.52%)
[등급 B — BiLSTM (94.81%)]
상위 5개와 Holm *** (유의하게 열세)
multilingual-e5와는 ns (통계적 동등)
[등급 C — DistilKoBERT (93.12%)]
ALBERT와 ** (Holm), KoBERT·mBERT·KLUE·XLM과 *** (Holm)
[등급 D — multilingual-e5 (90.84%)]
BiLSTM과 ns, 그 외 모든 상위 모델과 *** (Holm)
이 등급 묶음은 “정확도 순위”와는 다른 그림을 그린다. 96.88%와 95.52%가 한 등급에 묶이고, 94.81%와 90.84%가 다른 한 등급에 묶인다. 순위가 아니라 “통계적으로 구분되는 등급”을 기준으로 의사결정을 하는 것이 설계가 보여준 최종 frame이다.
7 파레토 프론티어 — 정확도와 파라미터 수의 trade-off
통계적 등급을 확정한 후에는 다른 축 — 속도·크기·해석 가능성 — 으로 모델 간 비교가 이동한다. 가장 직관적 시각화는 파레토 프론티어다. x축에 파라미터 수(log scale), y축에 Test Acc를 놓고 8개 모델을 점으로 찍는다.
Test Acc (%)
97 ┤ ● KLUE
│ ● XLM
96 ┤
│ ● ALBERT ● KoBERT
95 ┤ ● mBERT
│ ● BiLSTM
94 ┤
│
93 ┤ ● DistilKoBERT
│
92 ┤
│
91 ┤ ● mE5
│
└──┬──────┬──────┬──────┬──────┬──────┬──
10⁶ 10⁷ 10⁸ 10⁹ (파라미터 수)
파레토 프론티어는 왼쪽 아래에서 오른쪽 위로 이어지는 볼록 껍질이다. BiLSTM(671K, 94.81%) — ALBERT(13M, 95.58%) — KLUE(110M, 96.88%)를 잇는 선이 본 실험의 파레토 프론티어가 된다. 이 선 위에 있는 모델은 “같은 파라미터 수에 다른 모델보다 정확도가 높다”는 의미이고, 선 아래(예: mBERT 167M 95.52%, XLM 278M 96.49%)는 “더 작은 모델이 같거나 높은 정확도를 낸다”는 지배(dominated) 상태다.
파레토 프론티어 + 통계적 등급 묶음을 결합하면 배포 결정의 실질적 그림이 완성된다. “KLUE가 1등이다”라는 선언 대신, “BiLSTM·ALBERT·KLUE 세 모델이 파레토 상에 있고, 세 모델 중 어느 조합이든 통계적 등급 A(ALBERT·KLUE) 또는 그 아래에 있다”는 해석이 된다. 배포 의사결정은 정확도만으로 하지 않으므로 07편의 속도·크기 trade-off 분석으로 연결된다.
8 클래스별 F1 — per-class 관점이 드러내는 것
전체 지표만 보면 상위 5개 모델이 비슷해 보이지만, 클래스별 F1 heatmap으로 내려가면 차이가 드러난다. 14 클래스 × 8 모델 = 112 셀 중 주목할 패턴은 세 가지다.
일반단어클래스의 공통 약점 — 8개 모든 모델이일반단어에서 가장 낮은 F1을 기록한다. KLUE 0.88, ALBERT 0.86, BiLSTM 0.83, 그리고 DistilKoBERT·multilingual-e5는 0.80 이하로 떨어진다. 이 그룹은 정의상 잔여 카테고리라 고유 접미사가 없고, 이것이 전 모델 공통의 천장을 만든다. 06편의 Task 재정의에서 이 현상이 핵심 단서로 등장한다.- KoBERT의
식별·번호회귀 — KoBERT만식별0.892,번호0.88로 다른 상위 모델 대비 F1 하락이 관찰된다. 이 그룹의 어휘(UUID, 해시, 전화번호 등)에서 KoBERT의 vocab 8K가 좁은 것이 원인으로 추정된다. KLUE의 vocab 32K는 이 현상이 없다. - ALBERT·mBERT의 완전 동률 — McNemar p = 1.000이 per-class F1에서도 나타난다. 14 클래스 중 13개에서 F1 차이가 0.005 이내다.
per-class F1 heatmap은 전체 지표가 놓치는 “특정 클래스에서만 유의한 차이”를 보여주는 장치다. 배포 시 특정 그룹의 분류가 업무 임팩트가 크다면(예: 보안 그룹 오분류는 민감) 전체 정확도보다 해당 그룹의 F1이 우선 기준이 된다.
9 이 편이 드러낸 것의 한 줄 요약
이 편의 통계 검증이 확정한 결론은 세 가지다.
첫째, 상위 5개 모델이 통계적으로 한 등급이다. 정확도 1~2%p 차이는 Holm 보정 후 유의하지 않다. “KLUE가 최고”는 점추정치의 언어이고, 통계적으로는 “상위 5개가 동등”이 정확한 진술이다.
둘째, BiLSTM은 단일 split 기준으로 등급 B다. 상위 5개와 유의하게 열세다. 그러나 이 결론은 단일 split의 결과이고, 04편에서 본 K-Fold CV에서는 BiLSTM이 상위 그룹과 통계적 동등(ALBERT와 paired t-test p=0.73)으로 재평가된다. 즉 단일 split의 “등급 B” 판정은 K-Fold 관점에서 잠정적이다.
셋째, 파라미터 수와 정확도의 관계가 포화됐다. BiLSTM 671K와 mBERT 167M이 등급 A·B 경계에 있고, ALBERT 13M과 mBERT 167M이 McNemar p=1.0이다. 12~247배 규모 차이가 정확도로 이어지지 않는다는 것은 이 task가 파라미터 스케일링의 효과를 소진한 영역에 있음을 시사한다. 이 관찰이 06편의 Task 재정의로 이어지는 가장 강한 단일 단서다.
10 통계 검증의 메타 교훈 두 가지
이 편의 통계 검증 경험에서 건질 수 있는 실무 교훈이 둘 있다.
첫째, “정확도 1위”를 의사결정에 그대로 쓰지 말라. 점추정치로는 1위가 보이지만 95% CI가 겹치는 순간 그 1위는 “통계적으로 여러 모델 중 하나”일 뿐이다. Holm 보정을 한 번 거치면 “1위가 2~5위와 통계적 동등”으로 재정리되는 경우가 많다. 이 단계를 거치지 않은 ML 포스트는 방어력이 약하다.
둘째, McNemar는 분할표가 해석 가능하다는 장점이 크다. b, c 값을 직접 보면 “얼마나 자주 한 쪽만 틀렸는가”가 바로 드러난다. ALBERT-mBERT의 (31, 30)은 숫자 그 자체로 “두 모델이 동일한 샘플에서 실수한다”는 이야기다. 이런 해석 가능성이 통계 검정을 설득력 있게 쓰기 위한 핵심이다. 숫자가 아닌 현상으로 전달되기 때문이다.
11 다음 편 예고
이 편의 통계 검증이 반복해서 가리키는 공통 단서가 있다. “상위 5개 모델이 통계적 등급 하나로 묶인다”, “ALBERT와 mBERT가 p=1.0으로 완전 동률”, “일반단어가 전 모델 공통 천장”. 이 세 관찰이 한 방향을 가리킨다 — 이 task는 의미 이해가 아니라 접미사·형태소 분류다. 06편에서 이 가설을 실험 2(접미사 ablation)와 실험 4(일반단어 noise floor) 결과로 정면 검증한다. 73.6% 합성 데이터에 대한 사전 우려가 실험 1에서 어떻게 기각됐는지도 같이 다룬다.
12 관련 주제
이 편의 선행
시리즈 내 다음 편들
관련 카테고리
- 성능 지표 — F1 Score, Precision, Recall, AUC — F1의 Macro·Weighted 구분 세부