MINERVA 도메인 분류기 05: 결과 분석과 통계 검증

95% CI·McNemar·Holm으로 만드는 통계적 등급

8개 후보 모델의 단일 split 결과를 통계적으로 해석한다. Test Acc·Macro F1·Weighted F1 비교, 95% 신뢰구간 계산, 페어드 McNemar 검정, Holm 다중비교 보정, 파레토 프론티어 시각화를 거쳐 “정확도 1~2%p 차이가 통계적으로 의미 있는가”라는 질문에 수치로 답하는 것이 이 편의 목적이다.

Data Science
Machine Learning
Deep Learning
NLP
Statistics
MINERVA
저자

Kwangmin Kim

공개

2026년 04월 17일

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 관련 주제

이 편의 선행

시리즈 내 다음 편들

관련 카테고리

Subscribe

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