2026년 7월 17일 | 개발 공부
Brier score는 이진 사건의 예측 확률과 실제 결과 사이 제곱 오차를 평균한 값이다. 나는 이 점수를 오래도록 “낮으면 확률 예측이 좋다” 정도로만 읽었다. 그런데 두 모델의 Brier score가 똑같아도 하나는 위험 집단을 전혀 가르지 못하고, 다른 하나는 집단을 잘 나누면서 확률만 치우칠 수 있다. Murphy decomposition은 이 한 숫자를 reliability, resolution, uncertainty 세 항으로 풀어 어느 쪽을 고쳐야 하는지 보여준다.
Figure 1: 하나의 Brier score에서 reliability, resolution, uncertainty가 서로 다른 방향으로 기여하는 구조
도식에서 세 항은 순서대로 실행되는 단계가 아니라 같은 점수를 설명하는 병렬 성분이다. Reliability는 보정 오차라서 더해지고, resolution은 사건률이 다른 집단을 구분한 만큼 점수에서 빠진다. Uncertainty는 평가 데이터의 전체 사건률로 정해지는 기준선이다. 그래서 점수 개선의 출처가 보정인지, 위험 구분인지, 단순한 데이터 구성 차이인지 분리해서 읽을 수 있다.
점수 하나가 가리는 두 가지 능력
평균 Brier score만 보면 “확률이 정답에 얼마나 가까웠나”는 알 수 있지만, 왜 그 값이 나왔는지는 남지 않는다. 모든 샘플에 양성률 20%를 그대로 내는 모델은 예측 확률 0.2가 실제 전체 비율과 맞으므로 겉보기 보정은 좋다. 하지만 누가 양성이 될 가능성이 더 높은지는 하나도 구분하지 못한다. 경보 우선순위나 추가 검사 대상을 고르는 작업에서는 거의 움직일 수 없는 모델이다.
반대로 저위험군과 고위험군의 순서를 꽤 잘 나누는 모델도 확률이 한쪽으로 밀리면 reliability 항에서 손해를 본다. 예를 들어 실제 빈도가 10%와 50%인 두 집단에 27.3%와 67.3%를 내면 순서는 유용하지만 두 집단 모두 약 17.3%포인트 과대예측한다. 이때 필요한 조치는 ranking 모델을 버리는 것이 아니라 intercept 조정이나 별도 recalibration일 수 있다. 같은 최종 점수에서 실패 원인과 수정 비용은 전혀 다르다.
Murphy decomposition의 세 항
이진 예측을 같은 확률값 또는 미리 정한 구간으로 묶으면 분해식은 BS = reliability − resolution + uncertainty로 적을 수 있다. Reliability는 각 그룹의 평균 예측 확률과 실제 양성률의 제곱 간격을 표본 비중으로 합친 값이다. 0에 가까울수록 “0.7이라고 말한 사례가 실제로도 약 70%였는가”라는 보정 질문에 잘 답한다.
Resolution은 각 그룹의 실제 양성률이 전체 양성률에서 얼마나 떨어져 있는지 본다. 모든 그룹의 실제 빈도가 전체 평균과 같으면 0이고, 저위험군과 고위험군이 선명하게 갈릴수록 커진다. 식에서 빼는 항이므로 커질수록 Brier score를 낮춘다. 여기서 resolution은 해상도라는 번역보다 서로 다른 사건률을 구분해 내는 힘으로 읽는 편이 내게는 덜 헷갈렸다.
Uncertainty는 전체 양성률을 r이라고 할 때 r × (1 − r)인 데이터 기준선이다. 같은 평가셋에서 모델끼리 비교하면 모두 같은 값을 공유하지만, 사건률이 다른 데이터셋을 건너 비교하면 달라진다. 따라서 월별 Brier score가 바뀌었을 때 모델 변화인지 표본의 base rate 변화인지 보려면 세 항과 양성률을 함께 남겨야 한다.
같은 0.16이 전혀 다른 모델을 뜻할 때
| 모델 | Reliability | Resolution | Uncertainty | Brier score |
|---|---|---|---|---|
| A: 모두 0.20 | 0.00 | 0.00 | 0.16 | 0.16 |
| B: 두 위험군 분리 | 0.03 | 0.03 | 0.16 | 0.16 |
전체 양성률이 0.2인 가상 데이터에서 A는 모든 샘플에 0.2를 내므로 reliability와 resolution이 모두 0이다. B는 표본의 75%인 저위험군에서 실제 0.10, 나머지 고위험군에서 실제 0.50을 구분하지만 예측을 각각 0.273과 0.673으로 높게 낸다. B의 resolution 0.03이 reliability 0.03에 정확히 상쇄되어 최종 점수는 A와 같은 0.16이다.
A에는 보정 작업만으로 되살릴 구분 정보가 없다. B에는 순위 정보가 있으므로 독립 calibration set에서 보정한 뒤 다시 평가할 여지가 있다. 이 비교를 보고 나니 Brier score 한 칸만 있는 모델 표에서 동률을 그대로 처리했던 것이 꽤 거칠었다. 운영 목적이 우선순위 결정인지, 절대 위험 전달인지에 따라 두 모델의 가치는 달라진다.
분해 전에 고정할 경계
실무 계산에서는 같은 예측값이 반복되지 않아 확률 구간을 만드는 경우가 많다. 이때 bin 개수와 경계가 바뀌면 그룹별 실제 빈도도 바뀌고 reliability와 resolution 추정치가 함께 흔들린다. 표본이 적은 꼬리 구간은 한두 사건에 크게 움직인다. 그래서 분해 결과에는 binning 방식, 각 bin의 support, 전체 양성률을 같이 저장해야 한다.
또한 분해는 discrimination을 완전히 대신하지 않는다. Resolution이 위험 구분을 보여주지만 ROC AUC나 PR AUC와 같은 순위 지표와 질문이 같지는 않다. Calibration slope·intercept는 확률의 전체 이동과 폭 변형을 두 파라미터로 요약하고, Integrated Calibration Index는 평활 보정 곡선과 예측 확률 사이의 평균 간격을 본다. 나는 기본 Brier score, slope·intercept, calibration curve, Murphy decomposition을 대체재가 아니라 서로 다른 진단 렌즈로 둔다.
평가 로그에 남길 최소 항목
내가 다음 평가표에 넣을 항목은 전체 Brier score, reliability, resolution, uncertainty, 양성률, 표본 수, binning 규칙, bin별 support다. 재보정 전후를 비교한다면 같은 evaluation split을 유지하고 AUC·PR AUC·threshold별 경보 건수도 함께 보존한다. 그래야 Brier score가 좋아진 이유를 “확률이 맞아졌다”, “위험군 구분이 좋아졌다”, “평가셋 사건률이 달라졌다” 중 어디에 둘지 말할 수 있다.
한 숫자는 모델 후보를 빠르게 정렬할 때 편하다. 하지만 동률이나 작은 개선 폭을 실제 배포 판단으로 옮길 때는 분해가 필요하다. Murphy decomposition의 실용적인 역할은 점수를 더 복잡하게 만드는 데 있지 않고, 같은 점수 뒤에 숨은 다음 행동을 서로 다르게 만드는 데 있다.
'[개발 공부]' 카테고리의 다른 글
| Spiegelhalter's Z: Brier score로 보는 확률 보정 검정 (0) | 2026.07.27 |
|---|---|
| Tjur's D: 양성과 음성의 평균 예측 확률 차이 (0) | 2026.07.22 |
| Integrated Calibration Index: 보정 곡선의 평균 간격 (0) | 2026.07.16 |
| Calibration slope와 intercept: 확률 오차의 방향을 나누는 두 값 (0) | 2026.07.15 |
| Youden's J: Sensitivity와 Specificity가 만나는 임계값 (1) | 2026.07.14 |