콘텐츠로 이동

확률 보정 (Calibration)

핵심 요약: 모델이 “70% 확률로 양성”이라고 했으면, 실제로 그런 예측을 받은 사람 중 70%가 양성이어야 보정(Calibration)된 모델이다. 일기예보에서 “비 올 확률 70%“라고 한 날들을 모아봤을 때 실제로 70%의 날에 비가 오면 잘 보정된 예보다. AUC가 높아도 보정이 나쁠 수 있으므로, 확률값을 직접 의사결정에 쓸 때는 반드시 보정을 확인해야 한다.

분류 모델이 “70% 확률로 양성”이라고 예측했을 때, 실제로 그런 예측을 받은 샘플 중 70%가 양성이어야 한다. 이것이 보정(Calibration)이다.

모델의 판별력(Discrimination, 양성과 음성을 잘 분리하는 능력)은 — AUC로 측정한다. 보정은 예측 확률이 실제 확률과 일치하는 정도다. 이 둘은 독립적인 속성이다: AUC가 높아도 보정이 나쁠 수 있고, 보정이 좋아도 AUC가 낮을 수 있다.

예측 확률을 직접 의사결정에 사용하는 모든 시스템에서 보정은 필수적이다.


보정(Calibration) 문제가 ML에서 본격적으로 주목받기 시작한 것은 1999년 John Platt의 연구에서였다. 당시 SVM(Support Vector Machine)은 최고 성능의 분류기였지만, 출력값이 마진(margin) 기반의 점수일 뿐 확률이 아니었다. Platt은 “이 SVM 점수를 의사결정에 쓰려면 확률로 변환해야 한다”는 실용적 동기에서, SVM 출력에 시그모이드 함수를 적합하여 확률을 추정하는 Platt Scaling을 제안했다. 이것이 사후 보정(post-hoc calibration)의 시초다.

이후 오랫동안 보정은 “있으면 좋지만 필수는 아닌” 부차적 관심사로 여겨졌다. 그러나 2017년, Guo et al.의 논문 “On Calibration of Modern Neural Networks”가 충격적인 발견을 보고했다: 현대 딥러닝 모델은 과거보다 정확도는 높아졌지만, 보정은 오히려 나빠졌다. 모델이 “95% 확신”이라고 예측하는 경우, 실제 정답률은 75%에 불과한 과신(overconfidence) 현상이 체계적으로 발생하고 있었다. 모델 용량 증가, 배치 정규화(Batch Normalization), 과도한 학습 등이 원인으로 지목되었다.

보정의 핵심을 이해하는 가장 좋은 비유는 일기예보다. “비 올 확률 70%“라고 예보한 날들을 모아보면, 그중 실제로 70%의 날에 비가 와야 한다. 만약 “70% 확률”이라고 한 날 중 실제로 비가 온 날이 40%뿐이라면, 그 예보 시스템은 과대확신(overconfident)이다. 좋은 일기예보관은 판별력(맑은 날과 비 오는 날을 구분하는 능력)뿐만 아니라 보정(확률 추정의 정확성)도 갖추어야 한다.


모델이 보정되었다(calibrated)는 것은:

P(Y=1p^=q)=qfor all q[0,1]P(Y = 1 \mid \hat{p} = q) = q \quad \text{for all } q \in [0, 1]

즉, 예측 확률 qq를 받은 모든 샘플에서 실제 양성 비율이 qq여야 한다.

핵심 구분:

  • 판별(Discrimination): 양성과 음성을 잘 구분하는가? → 순위(ranking)의 품질
  • 보정(Calibration): 예측 확률이 실제 확률과 일치하는가? → 확률의 품질

신뢰도 다이어그램 (Reliability Diagram)

섹션 제목: “신뢰도 다이어그램 (Reliability Diagram)”

보정 상태를 시각적으로 확인하는 도구다.

구성 방법:

  1. 예측 확률을 구간(bin)으로 나눈다 (예: [0, 0.1], [0.1, 0.2], …)
  2. 각 구간에서 평균 예측 확률과 실제 양성 비율을 계산
  3. (평균 예측 확률, 실제 양성 비율)을 플롯
  4. 완벽한 보정 = 대각선
실제 양성 비율
1.0 │ ╱ ← 완벽한 보정 (대각선)
│ ╱
│ ● ╱ ← 과소확신 (Underconfident)
│ ╱ ● 모델이 실제보다 낮게 예측
0.5 │ ╱
│ ╱
│ ╱
│ ╱ ● ← 과대확신 (Overconfident)
│ ╱ ● 모델이 실제보다 높게 예측
0.0 │╱───────────────────────
0.0 0.5 1.0
평균 예측 확률
  • 대각선 위: 과소확신(underconfident) — 모델이 실제보다 낮은 확률을 예측
  • 대각선 아래: 과대확신(overconfident) — 모델이 실제보다 높은 확률을 예측

BS=1ni=1n(p^iyi)2\text{BS} = \frac{1}{n}\sum_{i=1}^{n}(\hat{p}_i - y_i)^2

  • 범위: [0,1][0, 1], 낮을수록 좋음
  • 예측 확률과 실제 결과(0 또는 1) 사이의 MSE

4명의 환자에 대해 모델이 예측한 양성 확률과 실제 결과:

환자예측 확률 (p^\hat{p})실제 결과 (yy)오차2^2
A0.91 (양성)(0.91)2=0.01(0.9 - 1)^2 = 0.01
B0.70 (음성)(0.70)2=0.49(0.7 - 0)^2 = 0.49
C0.30 (음성)(0.30)2=0.09(0.3 - 0)^2 = 0.09
D0.81 (양성)(0.81)2=0.04(0.8 - 1)^2 = 0.04

Brier Score = (0.01 + 0.49 + 0.09 + 0.04) / 4 = 0.158

환자 B가 Brier Score를 크게 끌어올렸다. 모델이 70% 확률로 양성이라고 했지만 실제로는 음성이었기 때문이다 — 이것이 과대확신(overconfidence)의 구체적 예다.

Murphy 분해:

BS=Reliability보정 품질Resolution분리 능력+Uncertainty내재적 불확실성\text{BS} = \underbrace{\text{Reliability}}_{\text{보정 품질}} - \underbrace{\text{Resolution}}_{\text{분리 능력}} + \underbrace{\text{Uncertainty}}_{\text{내재적 불확실성}}

  • Reliability: 보정이 얼마나 좋은가 (작을수록 좋음)
  • Resolution: 예측이 클래스를 얼마나 잘 분리하는가 (클수록 좋음)
  • Uncertainty: 결과의 내재적 불확실성 (데이터 고유, 모델과 무관)

ECE=b=1Bnbnacc(b)conf(b)\text{ECE} = \sum_{b=1}^{B}\frac{n_b}{n}\left|\text{acc}(b) - \text{conf}(b)\right|

  • BB: bin 개수
  • nbn_b: bin bb의 샘플 수
  • acc(b)\text{acc}(b): bin bb의 실제 양성 비율
  • conf(b)\text{conf}(b): bin bb의 평균 예측 확률
  • bin별 보정 오차의 가중 평균

주의: ECE는 bin 개수와 binning 전략에 민감하다. 보고할 때는 bin 설정을 명시해야 한다.


MCE=maxbacc(b)conf(b)\text{MCE} = \max_b \left|\text{acc}(b) - \text{conf}(b)\right|

최악의 보정 오차. 안전이 중요한 응용(의료, 자율주행)에서 유용하다.


Log Loss=1ni=1n[yilog(p^i)+(1yi)log(1p^i)]\text{Log Loss} = -\frac{1}{n}\sum_{i=1}^{n}\left[y_i \log(\hat{p}_i) + (1 - y_i)\log(1 - \hat{p}_i)\right]

  • 엄밀히 적절한 점수 규칙(Strictly Proper Scoring Rule): 참 확률을 예측할 때만 최적화됨. 비유하자면, 이는 “거짓말 탐지기”와 같다 — 모델이 자신의 불확실성을 정직하게 보고할 때만 최적 점수를 받으며, 허세를 부리면(과신하면) 가혹한 벌점을 받는다.
  • 자신 있게 틀린 예측에 매우 큰 페널티p^0\hat{p} \to 0인데 y=1y = 1이면 Log Loss → \infty
  • 보정과 판별 모두를 반영

모델 출력 점수 ss에 로지스틱 회귀(Logistic Regression, S자 곡선 함수를 사용한 확률 변환)를 적합:

P(Y=1s)=11+exp(As+B)P(Y = 1 | s) = \frac{1}{1 + \exp(As + B)}

  • 파라미터 AA, BB별도의 보정 세트(held-out calibration set)에서 학습
  • 적합한 경우: 시그모이드 형태의 보정이 적절할 때 (SVM, 신경망 출력)
  • 보정 세트 크기: 비교적 적은 데이터에서도 잘 작동

비모수적 방법: 단조 증가(non-decreasing) 계단 함수를 보정 데이터에 적합.

  • Platt Scaling보다 유연함 — 비시그모이드형 보정 패턴도 처리
  • 과적합 위험: 보정 세트가 작으면 불안정
  • 경험 법칙: 보정 샘플 < 1000개 → Platt Scaling, > 1000개 → Isotonic Regression

신경망에 특화된 단일 파라미터 방법:

p^i=softmax(zi/T)\hat{p}_i = \text{softmax}(z_i / T)

  • T>1T > 1: 예측을 부드럽게(soften) → 과대확신 완화
  • T<1T < 1: 예측을 날카롭게(sharpen)
  • TT를 검증 세트의 NLL(Negative Log-Likelihood)을 최소화하여 결정
  • 장점: 매우 단순하고 효과적; 순위(ranking)를 변경하지 않으므로 AUC 불변

Histogram Binning (히스토그램 비닝)

섹션 제목: “Histogram Binning (히스토그램 비닝)”

비모수적: 각 bin에 보정된 확률을 직접 할당.

  • 매우 단순하지만 해상도가 낮다 (coarse)
  • bin 수가 적으면 정보 손실, 많으면 과적합

보정 방법 선택 가이드 다이어그램

모델 유형보정 경향설명
로지스틱 회귀좋음설계상 보정됨 (MLE가 Log Loss 최적화)
잘 튜닝된 베이지안 모델좋음사후 확률이 직접 보정된 확률
SVM나쁨출력이 확률이 아님 (마진 값) — Platt Scaling 필수
Random Forest보통~나쁨확률이 0.5 근처로 편향되는 경향
신경망나쁨 (과대확신)Guo et al. (2017): 현대 신경망은 과대확신 경향; Temperature Scaling 권장
Gradient Boosting보통적절히 보정되지만 완벽하지 않음

보정이 중요한 경우:

응용이유
의료 진단예측 확률이 직접 치료 결정에 영향
날씨 예보”비 올 확률 70%“가 실제 70%를 의미해야 사용자가 신뢰
자율주행불확실성 정량화가 안전 결정에 필수
보험/금융 리스크확률 기반 가격 책정
후속 의사결정에 확률이 입력될 때순위만 중요한 경우가 아닌 모든 파이프라인

보정이 덜 중요한 경우:

  • 순위만 중요할 때 (상위 k개 추천)
  • 이진 결정만 필요할 때 (양성/음성 분류)

대출 플랫폼의 과신(Overconfidence) 재앙

섹션 제목: “대출 플랫폼의 과신(Overconfidence) 재앙”

한 온라인 대출 플랫폼(P2P Lending)이 머신러닝 기반 신용 평가 모델을 도입했다. 모델은 대출 신청자의 상환 확률을 예측하고, 이 확률에 기반하여 금리를 책정하는 구조였다.

문제는 모델이 “상환 확률 85%“라고 예측한 대출 그룹에서 발생했다. 플랫폼은 이 85%라는 숫자를 신뢰하고, 해당 그룹에 낮은 금리를 적용했다. 그러나 6개월 후 실제 데이터를 집계하니, 이 그룹의 실제 상환율은 65%에 불과했다. 20%포인트의 보정 오차가 직접적인 재무 손실로 이어진 것이다.

원인을 분석한 결과, 모델은 Gradient Boosting 기반이었고, AUC는 0.82로 판별력은 양호했다. 즉, 상환할 사람과 부도낼 사람의 순위는 잘 구분했다. 그러나 출력 확률 자체가 과대확신되어 있었다. 신뢰도 다이어그램(Reliability Diagram)을 그려보니, 모든 확률 구간에서 예측 확률이 실제 비율보다 10-20%포인트 높게 편향되어 있었다.

수정 조치로 Isotonic Regression을 적용하여 보정한 후, 예측 확률과 실제 상환율의 격차가 2-3%포인트 이내로 줄었고, 금리 책정의 정확성이 회복되었다.

교훈: 예측 확률을 직접 비즈니스 의사결정(금리, 보험료, 치료 결정 등)에 사용하는 시스템에서는, AUC 같은 판별 지표만으로는 불충분하다. 반드시 신뢰도 다이어그램과 ECE를 확인하고, 필요시 보정을 수행해야 한다.


  1. “AUC가 높으면 확률 예측도 좋다” — 아니다. AUC는 순위(ranking)만 평가한다. ROC-AUC가 높아도 보정이 매우 나쁠 수 있다.

  2. “보정 후 AUC가 변한다” — Platt Scaling과 Isotonic Regression은 순위를 변경할 수 있으므로 AUC가 변할 수 있다. Temperature Scaling은 순위를 보존하므로 AUC 불변.

  3. “모든 모델에 보정이 필요하다” — 순위만 필요한 작업(예: 검색 결과 정렬)에서는 보정 없이도 충분하다.

  4. “보정은 한 번 하면 영구적이다” — 데이터 분포가 변하면(concept drift) 보정도 다시 해야 한다.

  5. “ECE가 낮으면 보정이 완벽하다” — ECE는 bin 설정에 민감하다. 다른 binning으로 ECE가 달라질 수 있다. 신뢰도 다이어그램과 함께 확인하라.

  6. “로지스틱 회귀는 항상 잘 보정되어 있다” — 정규화가 강하거나, 특성이 누락되거나, 데이터 분포가 변하면 보정이 나빠질 수 있다.