1 Calibration 의 정체성
예측 확률 \(\hat r\) 가 진성 발생률과 일치:
\[\hat r = 0.10 \quad \Rightarrow \quad P(Y = 1 \mid \hat r = 0.10) \approx 0.10\]
(Woodward, 2014, Ch.13.5).
1.1 Discrimination vs Calibration
- 추상 정의: AUC 가 분류 능력 (rank), calibration 이 절대 확률의 정직성.
- 일상어 비유: 일기예보 — AUC = “비 오는 날 식별”, calibration = “비 30% 예측이 진성 30% 빈도”.
- 반사실 시나리오: AUC 0.85 + calibration 부정확 → 모형의 rank 는 정확하나 위험 수치 misleading. 두 측도 모두 평가.
2 Calibration Plot
Predicted probability deciles vs Observed proportion.
Observed
1.0 │ ╱
│ ╱
0.8 │ ╱
│ ╱ ★ (decile 8)
0.6 │ ╱
│ ★ (decile 6)
0.4 │ ╱
│ ★ (decile 4)
0.2 │ ╱
│★ (decile 2)
0.0 └────────────────────→ Predicted
0.0 0.5 1.0
대각선 (y=x) 에 가까우면 well-calibrated.
2.1 시각 패턴
- 추상 정의: 예측 (x) 과 관찰 (y) 의 비례 → calibration 정직.
- 일상어 비유: 시험 점수 예측 — 80 점 예측 학생들이 진성 80 점.
- 반사실 시나리오:
- Above diagonal: 모형 예측 > 진성 → 위험 과대 평가.
- Below diagonal: 모형 예측 < 진성 → 위험 과소 평가.
- Mixed: 일부 영역만 정확.
3 Hosmer-Lemeshow Test
예측 확률 deciles (10 그룹) 의 observed vs expected 비교.
\[\chi^2_{HL} = \sum_{g=1}^{10} \frac{(O_g - E_g)^2}{E_g (1 - E_g/n_g)} \sim \chi^2_{8}\]
기각 → calibration 부정.
3.1 H-L 의 한계
- 작은 표본: 검정력 ↓.
- 큰 표본: 사소한 misfit 도 유의 → 임상 무관.
3 단계 직관:
- 추상 정의: H-L 의 통계량이 표본 크기에 의존.
- 일상어 비유: 정밀 도구가 미세한 차이도 검출 — 임상 의의와 무관.
- 반사실 시나리오: 큰 자료에서 H-L p < 0.05 보고 + calibration plot 시각이 임상 의의 평가 도구.
4 Calibration-in-the-Large
\[\text{Calibration-in-the-large} = \frac{\bar Y}{\bar{\hat r}}\]
또는: \[\alpha = \log\left(\frac{\bar{\hat r}}{1 - \bar{\hat r}}\right) - \log\left(\frac{\bar Y}{1 - \bar Y}\right)\]
평균 예측과 평균 관찰의 차이.
- 추상 정의: 모형이 평균적으로 위험 과대/과소 평가하는가.
- 일상어 비유: 일기예보의 평균 — “올해 비 30 일 예측” vs “실제 25 일”.
- 반사실 시나리오: \(\alpha = 0\) 이면 mean calibration. \(\alpha < 0\) → 모형이 평균 위험 과대 평가.
5 Calibration Slope
Logistic recalibration: \[\text{logit}(P(Y = 1 \mid \hat\eta)) = \alpha_{\text{cal}} + \beta_{\text{cal}} \hat\eta\]
여기서 \(\hat\eta\) = 모형의 linear predictor.
\(\beta_{\text{cal}} = 1\) → calibration slope 정직. \(\beta_{\text{cal}} < 1\) → 모형이 위험 분포를 너무 spread (over-fit 의심). \(\beta_{\text{cal}} > 1\) → 모형이 위험 분포를 너무 압축 (under-fit).
5.1 직관 — Slope 의 의미
- \(\beta = 1\): 모형이 정확.
- \(\beta < 1\): High-risk 가 진성보다 ↑ 예측, low-risk 가 ↓ — 분포 spread. Over-fit 의심.
- \(\beta > 1\): 분포 압축. Under-fit.
일상어 비유: 시험 채점의 표준편차 — 너무 spread 면 가짜 차이, 너무 압축이면 차이 없음.
반사실 시나리오: External validation 의 slope < 1 흔함 — over-fit 의 신호.
6 Calibration Plot 의 진단
Pattern 1 — Well-calibrated: 모든 deciles 가 대각선 근처. \(\alpha \approx 0, \beta \approx 1\).
Pattern 2 — Over-prediction: 모든 deciles 가 대각선 아래. \(\alpha < 0, \beta = 1\).
Pattern 3 — Under-prediction: 모든 deciles 가 대각선 위. \(\alpha > 0, \beta = 1\).
Pattern 4 — Slope < 1 (over-fit): Low-risk 가 위, high-risk 가 아래. \(\alpha = 0, \beta < 1\).
각 패턴 별 해결책 (recalibration) 가 다름 → H-WOO13-6.
7 A/B 테스트의 Calibration
A/B 테스트의 conversion 예측 모형:
- 모형이 “이 사용자의 conversion 확률 30%” 예측.
- 실제 30% 의 그 그룹이 conversion 한가?
3 단계 직관:
- 추상 정의: 예측 확률의 정직성 — 광고비 결정 도구.
- 일상어 비유: 보험 회사의 사고 확률 예측 — 보험료 결정.
- 반사실 시나리오: AUC 만 보고 calibration 무시 → 가격 정책 오류. 두 측도 모두 필요.
8 코드 예시 — Calibration Plot
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.calibration import calibration_curve
# 가상 자료
y_true = np.random.binomial(1, 0.3, 1000)
y_pred = np.clip(0.3 + np.random.normal(0, 0.15, 1000), 0, 1)
# Calibration curve
prob_true, prob_pred = calibration_curve(y_true, y_pred, n_bins=10)
plt.figure(figsize=(6, 6))
plt.plot(prob_pred, prob_true, marker="o")
plt.plot([0, 1], [0, 1], "k--", label="Perfect calibration")
plt.xlabel("Predicted probability")
plt.ylabel("Observed proportion")
plt.title("Calibration plot")
plt.legend()
# Calibration slope
import statsmodels.api as sm
logit_pred = np.log(y_pred / (1 - y_pred + 1e-10))
X = sm.add_constant(logit_pred)
m = sm.Logit(y_true, X).fit(disp=0)
print(f"Calibration intercept (α): {m.params[0]:.3f}")
print(f"Calibration slope (β): {m.params[1]:.3f}")9 Calibration 의 다양한 측도
1. Calibration-in-the-large (mean): \[\alpha = \log\left(\frac{\bar Y / (1-\bar Y)}{\bar{\hat r} / (1-\bar{\hat r})}\right)\]
2. Calibration slope (β): \[\text{logit}(P(Y \mid \hat\eta)) = \alpha + \beta \hat\eta\]
3. Hosmer-Lemeshow test: deciles 별 chi-square.
4. Calibration plot (decile): 시각적.
5. Calibration plot (smoothed): Locally weighted regression (LOESS).
- 추상 정의: Mean (α), slope (β), shape (plot) 의 다른 측면 평가.
- 일상어 비유: 시험 점수 정확성 — 평균 (mean), 분산 (slope), 분포 (plot).
- 반사실 시나리오: 단일 측도만 보면 calibration 의 한 측면. 모두 보고 권장.
10 Loess Calibration Plot — 매끄러운 시각
- 추상 정의: Decile 이 임의 분할, LOESS 가 자연 곡선.
- 일상어 비유: Histogram (decile) vs density plot (LOESS).
- 반사실 시나리오: Decile 만 보면 cut-point 의존성. LOESS 가 robust.
11 Calibration 의 임상 활용
Pattern A — Over-prediction: 모형이 모든 위험을 ↑ 예측.
임상 의미: 모든 환자에 불필요 처치 → 비용 ↑ + 부작용.
해결: Intercept update.
Pattern B — Under-prediction: 모든 위험 ↓ 예측.
임상 의미: High-risk 환자 미처치 → 사건 발생 ↑.
해결: Intercept update.
Pattern C — High-risk over, Low-risk under (slope < 1): Over-fit 패턴.
임상 의미: High-risk 환자 과다 처치 + Low-risk 미처치.
해결: Slope update.
Pattern D — Mixed: 복잡 패턴.
해결: Full re-estimation 또는 다른 모형.
- 추상 정의: Plot 형태가 어떤 환자 그룹의 처치가 잘못되는지 식별.
- 일상어 비유: 시험 채점 — 어느 점수대의 학생이 잘못 채점되는지 시각.
- 반사실 시나리오: Calibration 부정확 → 환자 그룹별 잘못된 의사 결정. 시각이 진단.
12 A/B 테스트의 Calibration
A/B 테스트의 사용자 conversion 예측.
# 예측 vs 관찰
import matplotlib.pyplot as plt
bins = np.linspace(0, 1, 11)
df["pred_bin"] = np.digitize(df["predicted_conv"], bins)
cal = df.groupby("pred_bin").agg(
pred_mean=("predicted_conv", "mean"),
obs_rate=("converted", "mean"),
n=("converted", "count"),
)
plt.scatter(cal["pred_mean"], cal["obs_rate"], s=cal["n"]/10)
plt.plot([0, 1], [0, 1], "k--", label="Perfect")
plt.xlabel("Predicted")
plt.ylabel("Observed")3 단계 직관:
- 추상 정의: 예측 conversion 확률 = 진성 비율?
- 일상어 비유: 광고 클릭 예측 — “30% 클릭 예측” 가 실제 30% 인가.
- 반사실 시나리오: 부정확 calibration → 광고비 ROI 잘못 계산. Calibration 이 가격 정책의 정직 도구.
활용: - 광고 입찰 (CPM, CPC) 의 정확도. - LTV 예측의 정확도. - Churn 보존 캠페인의 ROI.
13 Q&A — Calibration 의 흔한 오해
A: 아니다. 두 측도가 직교.
3 단계 직관:
- 추상 정의: AUC 가 rank, calibration 이 absolute. 다른 dimension.
- 일상어 비유: 시험 학생 등수 (AUC) ↑ 라도 점수 자체는 부정확 가능.
- 반사실 시나리오: AUC 0.85 + calibration 부정확 → 환자에게 잘못된 위험 보고. 두 측도 모두 평가.
A: 아니다. 임상 의의 평가 우선.
3 단계 직관:
- 추상 정의: H-L 의 검정력이 표본 크기에 의존. 큰 자료에서 사소한 misfit 도 유의.
- 일상어 비유: 정밀 도구가 모든 차이 검출 — 임상 무관 차이도.
- 반사실 시나리오: H-L p < 0.05 + calibration plot 시각이 임상 의의. 작은 misfit 이면 모형 활용.
A: 거의 항상. Recalibration 표준.
3 단계 직관:
- 추상 정의: 다른 인구의 baseline 위험 차이 → calibration 다름.
- 일상어 비유: 다른 시장의 환율 — 항상 다름. 보정 필수.
- 반사실 시나리오: 보정 없이 적용 → 임상 의사 결정 오류. Recalibration 이 표준.
14 결론
Calibration 이 모형 평가의 두 번째 dimension. AUC 와 별도 평가 필요. Calibration plot + slope + intercept 모두 보고. External validation 에서 slope < 1 이 over-fit 신호. LOESS 매끄러운 plot 이 비선형 패턴 진단. 다양한 calibration 패턴 (over, under, slope, mixed) 별 다른 recalibration 전략.
다음 글 (H-WOO13-6) 에서 recalibration 도구를 본다.
15 관련 주제
- ROC 와 AUC
- 1111-11-11, Recalibration