보정과 브라이어 점수¶
보정이 중요한 이유¶
정확도가 높으면서도 확률 추정치는 오도하는 분류기가 있을 수 있다. 예컨대 어떤 신청자 집단에 \(\hat{p} = 0.90\)을 부여한 모형이 잘 보정되어 있다면 그중 대략 90%가 실제로 연체해야 한다. 보정은 예측확률이 관측된 빈도와 일치하는지를 잰다. 이항 결정만이 아니라 확률 자체가 후속 행동을 좌우하는 신용평가나 의학적 진단 같은 응용에서 좋은 보정은 필수적이다.
보정의 정의¶
모든 예측확률 \(q\)에 대해
가 성립하면 그 모형은 완벽히 보정되었다고 한다. 말로 하면, 예측확률로 \(q\)를 받은 관측치들 가운데 실제 양성의 비율이 \(q\)와 같다는 뜻이다.
신뢰도 그림(보정 곡선)¶
예측확률은 연속형이므로 위 조건을 모든 \(q\)에 대해 개별적으로 확인할 수는 없다. 대신 예측을 \(G\)개 집단(보통 \(G = 10\), 십분위)으로 묶어, 각 구간의 평균 예측확률과 관측된 양성 비율을 비교한다.
작성 방법¶
- \(n\)개의 예측 \(\hat{p}_1, \ldots, \hat{p}_n\)을 정렬한다.
- 크기가 대략 같은 \(G\)개 구간 \(B_1, \ldots, B_G\)로 나눈다.
- 각 구간 \(g\)에 대해 계산한다.
- 평균 예측확률: \(\bar{p}_g = \frac{1}{|B_g|}\sum_{i \in B_g}\hat{p}_i\)
- 관측된 양성 비율: \(\bar{y}_g = \frac{1}{|B_g|}\sum_{i \in B_g}y_i\)
- \(\bar{p}_g\)에 대해 \(\bar{y}_g\)를 그린다.
완벽히 보정된 모형은 대각선 \(\bar{y} = \bar{p}\) 위에 놓인다. 대각선 위쪽 점은 과소예측 (모형이 지나치게 조심스러움)을, 아래쪽 점은 과대예측(모형이 지나치게 확신함)을 나타낸다.
브라이어 점수¶
브라이어 점수는 보정과 예측정확도를 하나의 수로 요약한다.
브라이어 점수는 0(완벽)에서 1(최악)까지의 값을 가지며, 예측확률을 이항 결과에 대한 점예측으로 보았을 때의 평균제곱오차와 같다.
브라이어 점수의 분해¶
브라이어 점수는 세 성분으로 분해된다(머피 분해).
- 신뢰도(reliability): 보정 곡선이 대각선에서 얼마나 벗어나는지를 잰다. 작을수록 좋다.
- 분해능(resolution): 구간별 관측 비율 \(\bar{y}_g\)가 전체 평균 \(\bar{y}\)에서 얼마나 퍼져 있는지를 잰다. 클수록 좋다(빼기 때문이다).
- 불확실성(uncertainty): 기저율 \(\bar{y}\)에만 의존하므로 같은 자료에 적합한 모든 모형에서 동일하다.
분해능의 정의에 주의
분해능 항은 \(\frac{1}{n}\sum_g |B_g|\,\bar{y}_g(1-\bar{y}_g)\)가 아니다. 이 양은 구간 내부의 분산으로, 실제로는 불확실성에서 분해능을 뺀 값 \(\bar{y}(1-\bar{y}) - \text{RES}\)와 같다. 따라서 이것을 분해능 자리에 넣고 다시 불확실성을 더하면 항이 이중으로 계산되어 등식이 깨진다. 아래 연습문제 1에서 실제 수치로 확인한다.
판별력과 보정은 다른 것이다¶
보정이 왜 따로 필요한지는 AUC와 나란히 놓아 보면 분명해진다. 아래 왼쪽은 연체율 \(19\%\) 자료에 적합한 모형(파랑)과, 그 모형의 로그오즈에 \(1.8\)을 더하기만 한 모형(주황)의 신뢰도 그림이다. 더하기는 증가함수이므로 모든 관측치의 순위가 그대로 보존된다.

파란 점들은 대각선을 따라 붙어 있다. 예컨대 평균 예측확률이 \(0.39\)인 구간에서 실제 연체 비율이 \(0.44\), \(0.60\)인 구간에서 \(0.63\)이다. 대각선 주위를 오르내릴 뿐 체계적으로 한쪽으로 치우치지 않는다. 주황 점들은 열 구간 모두가 대각선 아래에 있다. \(0.71\)이라고 말한 집단에서 실제로 연체한 비율은 \(0.27\), \(0.90\)이라고 말한 집단에서도 \(0.63\)에 그친다. 확률을 일관되게 부풀려 말하는 모형이다.
오른쪽이 결론이다. 두 모형의 AUC는 \(0.8190\)으로 소수점 여섯 자리까지 같다. 순위를 하나도 바꾸지 않았으니 당연하다. 그런데 브라이어 점수는 \(0.1165\)에서 \(0.2192\)로 두 배 가까이 나빠졌다. AUC는 "누가 더 위험한가"만 묻고 "얼마나 위험한가"는 묻지 않기 때문에, 확률이 통째로 밀려도 전혀 알아채지 못한다. 브라이어 점수의 분해로 말하면 분해능은 그대로이고 신뢰도 항만 커진 것이다.
그래서 쓰임새가 순위에서 끝나면(누구부터 심사할지 줄을 세우는 일) AUC만 봐도 된다. 그러나 확률값이 그다음 계산에 들어가면 — 기대손실 \(p \times\) 손실액을 계산하거나, 문턱 조율의 \(t^* = C_{FP}/(C_{FP}+C_{FN})\)과 \(\hat p\)를 직접 비교하거나 — 보정이 무너진 모형은 체계적으로 틀린 결정을 낳는다. 주황 모형에 문턱 \(0.5\)를 적용하면 훨씬 많은 사람을 연체로 분류하게 되는데, 그 결정은 자료가 아니라 밀려난 눈금이 만든 것이다.
호스머-레메쇼 검정¶
호스머-레메쇼 검정은 신뢰도 그림의 시각적 판단을 형식화한 것으로, 모형이 잘 보정되어 있다는 영가설을 검정한다.
절차¶
- 관측치를 \(\hat{p}_i\)로 정렬해 \(G\)개 집단(보통 \(G = 10\))을 만든다.
- 각 집단 \(g\)에서 관측된 양성 수 \(O_g = \sum_{i \in B_g} y_i\)와 기대 양성 수 \(E_g = \sum_{i \in B_g} \hat{p}_i\)를 구한다.
- 검정통계량을 계산한다.
적합이 적절하다는 영가설 아래에서 \(\hat{C}\)는 근사적으로 \(\chi^2_{G-2}\)를 따른다. \(\hat{C}\)가 크면(p-값이 작으면) 적합이 부족하다는 뜻이다.
구간 나누기에 민감하다
호스머-레메쇼 검정은 집단 수 \(G\)와 구간을 나누는 방식에 민감하다. \(G\)를 달리 잡으면 결론이 달라질 수 있다. 단독 판정 근거로 쓰기보다 신뢰도 그림과 함께 쓰는 편이 좋다.
보정 기법¶
모형의 보정이 나쁠 때는 모형 전체를 다시 학습하지 않고도 사후 재보정으로 확률 추정치를 개선할 수 있다.
플랫 척도화¶
원래 모형의 로그오즈를 유일한 설명변수로 삼아 로지스틱 회귀를 적합한다.
여기서 \(f(\mathbf{x})\)는 원래 모형의 출력이고 \(a, b\)는 따로 떼어 둔 보정용 자료에서 학습한다.
등위회귀¶
원래 예측을 보정된 확률로 옮기는 단조 비감소 함수를 적합하는 비모수적 대안이다. 플랫 척도화보다 유연하지만 더 많은 보정 자료를 필요로 한다.
보기
어떤 로지스틱 모형이 \(n = 1000\)인 검정자료에서 다음과 같은 구간별 결과를 냈다.
| 구간 | \(\bar{p}_g\) | \(\bar{y}_g\) | \(\lvert B_g\rvert\) |
|---|---|---|---|
| 1 | 0.05 | 0.04 | 100 |
| 2 | 0.15 | 0.12 | 100 |
| 3 | 0.25 | 0.28 | 100 |
| 4 | 0.35 | 0.33 | 100 |
| 5 | 0.45 | 0.47 | 100 |
| 6 | 0.55 | 0.52 | 100 |
| 7 | 0.65 | 0.68 | 100 |
| 8 | 0.75 | 0.73 | 100 |
| 9 | 0.85 | 0.88 | 100 |
| 10 | 0.95 | 0.93 | 100 |
예측이 대각선에 가까워 보정이 좋다. 각 구간 안의 예측이 모두 \(\bar{p}_g\)와 같다고 보면 브라이어 점수는
이다. 모든 구간에서 \(\bar{p}_g \approx \bar{y}_g\)이므로 신뢰도 성분이 \(0.00062\)로 매우 작다.
연습문제¶
연습문제 1. 위 보기의 표로 브라이어 점수 분해를 수치로 확인하라. 세 성분을 각각 계산하고 \(\text{BS} = \text{REL} - \text{RES} + \text{UNC}\)가 성립함을 보여라.
풀이
import numpy as np
p_bar = np.array([.05, .15, .25, .35, .45, .55, .65, .75, .85, .95])
y_bar = np.array([.04, .12, .28, .33, .47, .52, .68, .73, .88, .93])
n_g = np.full(10, 100.0)
n = n_g.sum()
# Brier 점수. 구간 g 안의 예측을 모두 그 구간의 평균확률 p_bar[g] 로 본 값이다
BS = np.sum(n_g * (y_bar * (1 - p_bar)**2 + (1 - y_bar) * p_bar**2)) / n
y_all = np.sum(n_g * y_bar) / n
REL = np.sum(n_g * (p_bar - y_bar)**2) / n
RES = np.sum(n_g * (y_bar - y_all)**2) / n
UNC = y_all * (1 - y_all)
print(f"BS = {BS:.5f}")
print(f"REL = {REL:.5f} RES = {RES:.5f} UNC = {UNC:.5f}")
print(f"REL - RES + UNC = {REL - RES + UNC:.5f}")
출력:
BS = 0.16570
REL = 0.00062 RES = 0.08492 UNC = 0.25000
REL - RES + UNC = 0.16570
| 양 | 값 |
|---|---|
| \(\bar{y}\) | \(0.4980\) |
| BS | \(0.16570\) |
| REL(신뢰도) | \(0.00062\) |
| RES(분해능) | \(0.08492\) |
| UNC(불확실성) | \(0.25000\) |
| REL \(-\) RES \(+\) UNC | \(0.16570\) |
등식이 정확히 성립한다.
해석도 분명하다. 불확실성 \(0.25\)는 \(\bar y \approx 0.5\)인 이 자료에서 아무 모형도 피할 수 없는 바닥값이다. 모형은 분해능 \(0.085\)만큼을 벌어들여 브라이어 점수를 \(0.25\)에서 \(0.166\)으로 낮췄고, 보정이 나빠서 잃은 양은 \(0.0006\)뿐이다.
본문의 경고대로 분해능 자리에 구간 내부 분산 \(\frac{1}{n}\sum_g|B_g|\bar y_g(1-\bar y_g) = 0.16508\)을 넣으면 \(0.00062 - 0.16508 + 0.25 = 0.08554\)가 되어 참값 \(0.16570\)과 전혀 맞지 않는다. 실제로 이 양은 \(\text{UNC} - \text{RES} = 0.25 - 0.08492 = 0.16508\)이므로, \(\text{BS} = \text{REL} + 0.16508\)이라고 써야 옳다. \(\square\)
연습문제 2. 언제나 상수 \(\hat p_i = \bar y\)를 예측하는 모형의 브라이어 점수를 구하라. 분해의 관점에서 이 결과를 설명하라.
풀이
\(\hat p_i = \bar y\)이면
이고 \(n_1 = n\bar y\), \(n_0 = n(1-\bar y)\)이므로
이다. 즉 BS = UNC다.
분해로 보면 당연하다. 모든 예측이 같으므로 구간이 하나뿐이고 \(\bar y_1 = \bar y\)이니 분해능 RES \(= 0\)이며, \(\bar p_1 = \bar y_1\)이니 신뢰도 REL \(= 0\)이다. 남는 것은 불확실성뿐이다.
이것이 브라이어 점수의 기준선이다. 연습문제 1의 자료에서는 \(0.25\)이며, 모형이 이 값을 넘어서지 못하면 아무 예측력도 없다는 뜻이다. 사건이 드물면(\(\bar y = 0.01\)) 기준선이 \(0.0099\)로 매우 낮아지므로, "브라이어 점수 0.01"이 좋은 값인지 나쁜 값인지는 유병률을 알아야만 판단할 수 있다. AUC와 달리 브라이어 점수는 자료 사이에 직접 비교할 수 없다. \(\square\)
연습문제 3. 어떤 모형의 모든 예측확률을 절반으로 줄였다고 하자(\(\hat p_i \to \hat p_i / 2\)). AUC, 브라이어 점수, 신뢰도 성분은 각각 어떻게 변하는가?
풀이
- AUC는 변하지 않는다. AUC는 순위통계량이고 \(p \mapsto p/2\)는 단조증가 변환이므로 모든 쌍의 대소관계가 그대로다.
- 브라이어 점수는 나빠진다(원래 모형이 잘 보정되어 있었다면). 모든 예측이 체계적으로 아래로 치우쳤으므로 양성 관측치에서 오차가 크게 늘어난다.
- 신뢰도 성분이 커진다. 보정 곡선 전체가 대각선 아래로 내려간다. 구간 \(g\)에서 \(\bar p_g \to \bar p_g/2\)인데 \(\bar y_g\)는 그대로이므로 기여가 \((\bar p_g - \bar y_g)^2\)에서 \((\bar p_g/2 - \bar y_g)^2\)로 바뀐다.
- 분해능은 변하지 않는다. 분해능은 \(\bar y_g\)에만 의존하고, 순위가 보존되므로 구간 구성원도 그대로다.
이 예가 보여주는 것이 핵심이다. AUC는 보정에 대해 아무것도 말해 주지 않는다. AUC가 \(0.95\)인 모형이 확률을 형편없이 어긋나게 낼 수 있다. 반대로 잘 보정된 모형이 판별력은 없을 수도 있다(연습문제 2의 상수 예측 모형은 완벽히 보정되어 있지만 AUC가 \(0.5\)다). 두 성질은 독립적이며 둘 다 확인해야 한다.
이것이 사후 재보정이 통하는 이유이기도 하다. 플랫 척도화와 등위회귀는 모두 단조 변환이므로 AUC를 건드리지 않고 신뢰도만 고친다. 순위가 좋은데 확률이 어긋난 모형이라면 재보정으로 거의 공짜로 개선할 수 있다. 순위 자체가 나쁘면 재보정으로는 아무것도 얻지 못한다. \(\square\)
연습문제 4. 위 보기 표에 호스머-레메쇼 검정을 적용하라. 결론은 무엇인가?
풀이
각 구간에서 \(|B_g| = 100\), \(E_g = 100\,\bar p_g\), \(O_g = 100\,\bar y_g\)이다.
| 구간 | \(O_g\) | \(E_g\) | 기여 |
|---|---|---|---|
| 1 | 4 | 5 | \(0.2105\) |
| 2 | 12 | 15 | \(0.7059\) |
| 3 | 28 | 25 | \(0.4800\) |
| 4 | 33 | 35 | \(0.1758\) |
| 5 | 47 | 45 | \(0.1616\) |
| 6 | 52 | 55 | \(0.3636\) |
| 7 | 68 | 65 | \(0.3956\) |
| 8 | 73 | 75 | \(0.2133\) |
| 9 | 88 | 85 | \(0.7059\) |
| 10 | 93 | 95 | \(0.8421\) |
| 합 | \(\hat C = 4.2544\) |
자유도는 \(G - 2 = 8\)이고 \(P(\chi^2_8 > 4.2544) = 0.834\)이다.
p-값이 크므로 영가설을 기각하지 않는다. 자료는 모형이 잘 보정되어 있다는 것과 부합한다.
기각하지 못한 것은 증명이 아니다
호스머-레메쇼 검정은 부적합의 증거를 찾는 검정이므로, 기각하지 못했다는 것이 보정이 좋다는 증명은 아니다. 특히 표본이 작으면 검정력이 낮아 상당한 부적합도 놓친다. 반대로 \(n\)이 아주 크면 실무적으로 무시할 만한 어긋남도 기각한다. p-값과 함께 신뢰도 성분 \(0.00062\) 같은 효과크기를 반드시 함께 보고하라.
\(\square\)
연습문제 5. 플랫 척도화와 등위회귀를 비교하라. 각각 언제 실패하는가?
풀이
| 플랫 척도화 | 등위회귀 | |
|---|---|---|
| 형태 | \(\sigma(a f + b)\), 모수 2개 | 임의의 단조 비감소 계단함수 |
| 필요한 자료 | 적다(수백 건이면 충분) | 많다(수천 건) |
| 과적합 위험 | 낮다 | 높다 |
| 표현력 | 로짓 척도에서 1차 변환만 | 어떤 단조 왜곡도 교정 |
플랫 척도화가 실패하는 경우: 보정 오차가 로짓 척도에서 단조 1차 변환으로 표현되지 않을 때다. 예컨대 모형이 중간 확률은 잘 맞히는데 양극단에서만 과신한다면, 이는 로짓 척도에서 S자 왜곡이고 \(a, b\) 두 개로는 잡을 수 없다. 한쪽 끝을 고치면 다른 쪽이 나빠진다.
등위회귀가 실패하는 경우: 보정 자료가 적을 때다. 등위회귀는 자료를 구간별 상수로 적합하므로, 보정 표본이 작으면 잡음까지 따라가 계단이 지나치게 잘게 쪼개진다. 또 출력이 계단함수라 동점이 대량으로 생긴다. 원래 서로 다른 점수를 갖던 관측치들이 같은 보정 확률을 받게 되고, 이는 AUC를 떨어뜨릴 수 있다. 본문에서 등위회귀가 단조라 순위를 보존한다고 했지만, 엄밀히는 비감소일 뿐 강증가가 아니므로 순위를 뭉갤 수 있다는 점이 함정이다.
실무 지침: 보정 자료가 1,000건 미만이면 플랫 척도화를, 그 이상이고 보정 곡선이 비단조적으로 휘어 있으면 등위회귀를 쓴다. 어느 쪽이든 모형 학습에 쓰지 않은 자료에서 적합해야 한다. 훈련자료로 재보정하면 이미 그 자료에 과적합된 확률을 다시 그 자료에 맞추는 셈이라 아무것도 고쳐지지 않는다. \(\square\)
정리하며¶
순위를 잘 매기는 것과 확률이 맞는 것은 다르다.
- 보정이란 \(\hat p=0.9\) 인 사례 중 실제로 \(90\%\) 가 양성인 것을 말한다. AUC 가 높아도 보정이 나쁠 수 있다.
- 보정 곡선으로 확인한다. 예측확률을 구간으로 나누고 각 구간의 실제 비율을 그리며, 대각선에 가까울수록 좋다.
- 로지스틱 회귀는 대체로 잘 보정된다. 최대가능도가 확률을 직접 모형화하기 때문이며, 랜덤 포레스트나 SVM 은 그렇지 않다.
- 정칙화가 보정을 흐트러뜨린다. 계수를 축소하면 예측확률이 \(0.5\) 쪽으로 몰린다.
- 확률을 의사결정에 쓸 때 결정적이다. 기대손실을 계산하거나 자원을 배분하려면 확률값 자체가 맞아야 하며, 순위만으로는 부족하다. 플랫 스케일링이나 등위회귀가 사후 보정 도구다.
다음 절 분류 지표 개관으로 넘어간다.