Brier Score
Brier 점수는 예측 확률과 결과 간 평균 제곱 오차로, 낮을수록 좋습니다. 공식, 기준선, 스킬 점수, 코드를 다룹니다.
브라이어 점수는 예측 확률과 실제 결과 간의 평균 제곱 차이로 확률 예측의 정확도를 측정합니다. 사건이 발생하면 1, 발생하지 않으면 0으로 표시합니다. 이진 사건의 점수 범위는 완벽한 점수인 0부터 1까지이며, 항상 0.5를 예측하는 모델의 점수는 정확히 0.25입니다. 기상학자 Glenn W. Brier는 1950년 확률적 기상 예보를 검증하기 위해 이 점수를 도입했으며, 현재는 임상 위험 모델, 예측 대회, 머신러닝(ML) 분류기의 평가에 사용됩니다. 임계값으로 확률을 결정으로 바꾸기 전의 확률 자체를 평가하므로, 0.51을 예측한 소극적인 정답과 0.99를 예측한 확신에 찬 정답을 구분합니다. 정확도, 정밀도, 재현율은 두 경우를 동일하게 계산합니다.
브라이어 점수 계산 방법#
확률 p와 결과 o를 사용하는 N개 예측에 대해 브라이어 점수는 (p − o)²의 평균입니다. 결함 발생 확률을 80%로 예측한 모델은 결함이 실제로 있으면 (0.8 − 1)²인 0.04의 페널티를 받고, 결함이 없으면 (0.8 − 0)²인 0.64의 페널티를 받습니다. 따라서 확신에 찬 오예측은 불확실한 오예측보다 훨씬 큰 비용을 초래합니다. 브라이어 점수는 엄격히 적절한 점수 규칙입니다. 모델은 실제로 믿는 확률을 보고할 때만 기대 점수를 가장 높일 수 있으므로, 예측을 0이나 1 쪽으로 치우쳐도 이득을 얻을 수 없습니다.
클래스가 두 개를 초과하면 예측 확률 벡터와 실제 클래스의 원-핫 벡터 간 제곱 차이를 클래스별로 합산하고 예제별로 평균을 냅니다. 브라이어가 처음 정의한 이 다중 클래스 형식의 범위는 0~2입니다. scikit-learn의 brier_score_loss 함수는 두 경우를 모두 지원합니다. 기본 설정에서는 이진 점수를 절반으로 줄여 일반적인 0~1 범위로 만들고, 다중 클래스 입력은 0~2 범위로 유지하므로 동일한 규칙을 적용한 경우에만 서로 다른 도구의 점수를 비교할 수 있습니다.
브라이어 점수 해석#
브라이어 점수에는 보편적인 "양호" 기준값이 없습니다. 사건의 발생 빈도에 따라 달라지기 때문입니다. 항상 기본 발생률 p를 예측하는 모델은 p(1 − p)의 점수를 얻습니다. 사건이 10% 발생하면 0.09, 절반 발생하면 0.25입니다. 브라이어 기술 점수(BSS = 1 − BS / BS_ref)는 모델을 이와 같은 기준 예측과 비교합니다. 0은 기준 예측보다 낫지 않음을, 1은 완벽함을 의미하며, 음수 값은 기준 예측보다 성능이 낮음을 뜻합니다.
from sklearn.metrics import brier_score_loss
# Outcomes (1 = defect) and the model's predicted defect probabilities
y_true = [0, 1, 1, 0, 1, 0, 0, 0, 1, 0]
y_proba = [0.10, 0.75, 0.60, 0.30, 0.90, 0.40, 0.05, 0.20, 0.35, 0.15]
model_score = brier_score_loss(y_true, y_proba)
# Reference forecast: always predict the observed defect rate
event_rate = sum(y_true) / len(y_true)
baseline_score = brier_score_loss(y_true, [event_rate] * len(y_true))
# Brier skill score: the share of the reference error the model removes
skill = 1 - model_score / baseline_score
print(f"Model {model_score:.3f}, baseline {baseline_score:.3f}, skill {skill:.2f}")이 스크립트는 모델 점수가 0.098이고 결함률 40%를 항상 예측했을 때의 점수가 0.240이라고 출력합니다. 기술 점수는 0.59이며, 이는 모델이 기준 예측의 제곱 오차를 59% 줄였다는 의미입니다. 가장 큰 단일 페널티인 0.42는 실제 결함 부품에 결함 발생 확률을 0.35로 매긴 데서 발생합니다.
Murphy의 1973년 분해식은 점수를 BS = 신뢰도 − 해상도 + 불확실성의 세 부분으로 나눕니다. 신뢰도는 보정을 측정합니다. 즉, 예측 확률이 해당 확률을 부여받은 사례의 관측 빈도에서 얼마나 벗어나는지를 나타내며 낮을수록 좋습니다. 해상도는 예측이 결과가 다른 사례를 얼마나 잘 구별하는지 측정하며 높을수록 좋습니다. 불확실성은 기본 발생률 항 p(1 − p)와 같으며 데이터에만 영향을 받습니다. 기본 발생률만 항상 예측하는 모델은 보정이 완벽하고 해상도가 0이므로, 점수는 불확실성 항과 같습니다.
Brier Score와 관련 지표 비교#
- 로그 손실: 실제 결과에 부여한 확률의 로그를 사용해 계산하는 엄격히 적절한 점수 규칙입니다. 확신에 찬 오예측에 훨씬 큰 페널티를 부과합니다. 발생하지 않은 사건을 0.99로 예측하면 브라이어 점수에서는 0.98, 로그 손실에서는 4.6의 비용이 발생합니다. 발생한 사건의 확률을 정확히 0으로 예측하면 로그 손실은 무한대가 됩니다.
- 기대 보정 오차(ECE): 예측을 신뢰도에 따라 구간별로 나누고 신뢰도와 정확도의 차이를 평균해 보정만 측정합니다. 해상도는 고려하지 않으므로 기본 발생률만 항상 예측하는 모델도 ECE에서 완벽한 점수를 얻을 수 있습니다.
- 곡선 아래 면적(AUC): 양성 점수가 음성 점수보다 높게 순위를 매기는 정도를 측정하며, 이진 분류기의 온도 스케일링처럼 순위를 유지하는 보정 방식으로는 값이 달라지지 않습니다.
- 신뢰도: 모델이 예측에 부여하는 점수입니다. 브라이어 점수는 이 점수가 확률처럼 작동하는지 평가하며, 과도하게 높은 신뢰도는 신뢰도 항을 통해 점수를 높입니다.
컴퓨터 비전에서의 브라이어 점수#
확률을 출력하는 이미지 분류기는 레이블이 지정된 보류 이미지에서 브라이어 점수로 평가합니다. 새로 레이블을 지정한 프로덕션 이미지로 점수를 다시 계산하면 데이터 드리프트에 따라 입력이 달라질 때 보정이 유지되는지 확인할 수 있습니다. YOLO26 분류 모델은 result.probs.data에서 클래스 전체에 대한 소프트맥스 분포를 반환하므로, 미세 조정한 YOLO26 분류기의 다중 클래스 브라이어 점수는 보류 이미지 전체에서 이 벡터와 원-핫 정답 레이블 간 제곱 차이를 합산한 값의 평균입니다.










