Brier Score
Brier Score가 확률적 예측의 정확도, 캘리브레이션 및 해상도를 측정하는 방법을 알아보세요. 공식, 예제, 관련 지표 및 YOLO26 평가 워크플로를 살펴보세요.
Brier Score는 각 예측 확률과 실제 발생한 결과 간의 제곱 오차 평균을 구하여 확률적 예측의 정확도를 측정합니다. 0점은 완벽한 예측을 의미하며, 값이 클수록 예측의 정확도가 낮거나, 보정이 잘 안 되었거나, 혹은 둘 다 해당함을 나타냅니다. 최종 클래스 레이블만을 기반으로 하는 메트릭과 달리, Brier Score는 machine learning model이 합리적인 확률을 할당하는지 평가합니다.
Brier Score의 작동 방식#
이진 분류의 경우, 이벤트가 발생하면 결과를 1로, 발생하지 않으면 0으로 인코딩합니다. 모든 예제에 대해 (predicted probability - outcome) squared을 계산한 다음, 해당 값들의 평균을 구합니다.
모델이 이미지에 결함이 포함되어 있을 확률을 80%로 예측한다고 가정해 보겠습니다.
- 결함이 존재하는 경우, 제곱 오차는
(0.8 - 1) squared또는 0.04입니다. - 결함이 존재하지 않는 경우, 오차는
(0.8 - 0) squared또는 0.64입니다.
모델이 확신을 가지고 틀렸기 때문에 두 번째 예측에는 훨씬 더 큰 패널티가 부과됩니다. 이로 인해 Brier Score는 **엄격하게 타당한 스코어링 규칙(strictly proper scoring rule)**이 됩니다. 즉, 예측 담당자는 평균적으로 정직한 확률 추정치를 보고할 때 가장 좋은 점수를 얻게 됩니다. scikit-learn Brier score loss documentation은 표준 구현을 제공합니다.
이진 문제의 경우 일반적인 범위는 0에서 1 사이입니다. 다중 클래스 버전은 모든 클래스에 걸쳐 제곱 오차를 합산하므로 2로 나누지 않는 한 범위가 0에서 2 사이일 수 있습니다. 라이브러리마다 yardstick’s multiclass Brier Score의 재조정된 접근 방식처럼 서로 다른 스케일링 규칙을 사용하므로, 비교 시에는 동일한 구현과 설정을 사용해야 합니다.
좋은 Brier Score 해석하기#
낮을수록 좋지만, “좋은” Brier Score에 대한 보편적인 임계값은 없습니다. 그 의미는 이벤트 빈도, 데이터셋 난이도, 그리고 합리적인 베이스라인의 품질에 따라 달라집니다.
예를 들어, 전체 사례의 10%에서 이벤트가 발생하는 경우 항상 0.10을 예측하는 모델의 기대 점수는 0.09입니다. 유용한 모델은 일반적으로 이러한 빈도 기반 베이스라인보다 성능이 향상되어야 합니다. 평가는 대표적인 validation data를 사용하여 수행해야 하며, 중요한 클래스, 운영 환경 또는 인구통계 그룹에 대해 별도로 보고해야 합니다.
이 점수는 상호 연관된 두 가지 특성을 반영합니다.
- 보정(Calibration): 0.80으로 예측된 값은 약 80%의 확률로 정확해야 합니다. Probability calibration methods 및 신뢰도 다이어그램은 체계적인 과신 또는 과소신뢰를 드러낼 수 있습니다.
- 해상도(Resolution): 예측은 발생할 가능성이 높은 이벤트와 낮은 이벤트를 의미 있게 구분해야 합니다. 항상 기본 비율을 예측하는 모델은 전체적으로 보정되었을 수 있지만 사례별 정보를 거의 제공하지 않습니다.
단일 종합 점수는 국소적인 문제를 숨길 수 있습니다. 이를 calibration curve, 하위 그룹 분석, 그리고 광범위한 uncertainty quantification과 함께 사용하십시오.
Brier Score 대 관련 메트릭#
-
Accuracy, precision, and recall: 이는 임계값 적용 후 개별적인 결정을 평가합니다. Brier Score는 임계값 적용 전의 확률을 평가하여 0.51의 신중하고 정확한 예측과 0.99의 자신 있는 예측을 구분합니다.
-
ROC AUC: AUC는 랭킹을 측정하며, 양성 사례가 음성 사례보다 더 높은 점수를 받는 경향이 있는지 확인합니다. 모델은 사례의 랭킹을 올바르게 매기면서도 보정이 제대로 되지 않은 확률을 생성할 수 있습니다.
-
Log loss: 둘 다 타당한 스코어링 규칙이지만, log loss는 극도로 자신감 넘치는 오답에 대해 훨씬 더 강력하게 페널티를 부과합니다. Brier Score의 제곱 오차 해석은 대개 설명하기가 더 쉽습니다.
-
Confidence: “신뢰도(confidence)”로 레이블이 지정된 모델 출력은 자동으로 보정된 이벤트 확률이 아닙니다. Brier Score를 적용하기 전에 그 의미를 반드시 검증해야 합니다.
실제 애플리케이션 사례#
**의료용 이미지 트리아지(medical image triage)**에서 image classification 모델은 스캔에 이상 징후가 포함되어 있을 확률을 추정할 수 있습니다. Brier Score는 그러한 확률이 관찰된 진단과 일치하는지 평가할 수 있으며, 이는 의뢰 규칙에 따라 90% 추정치와 55% 추정치를 다르게 다룰 때 중요합니다.
**제조업 시각 검사(manufacturing visual inspection)**에서 모델은 제품에 결함이 있을 확률을 추정할 수 있습니다. 잘 보정된 예측은 위험 기반 라우팅을 지원합니다. 확률이 높은 사례는 거부하고, 불확실한 사례는 사람이 검사하도록 보내며, 확률이 낮은 사례는 수락할 수 있습니다. 보정이 불량하면 결함이 유출되거나 불필요한 낭비가 발생할 수 있습니다. NIST AI Risk Management Framework Core는 배포된 시스템에서 불확실성 측정 및 성능 모니터링의 중요성을 강조합니다.
실무 평가 워크플로#
다음 예제는 모델의 점수를 계산하고 이를 상수 빈도 베이스라인과 비교합니다.
from sklearn.metrics import brier_score_loss
# Binary outcomes and predicted event probabilities
y_true = [0, 1, 1, 0, 1, 0]
y_probability = [0.10, 0.75, 0.60, 0.30, 0.90, 0.40]
model_score = brier_score_loss(y_true, y_probability)
# Compare against always predicting the observed event rate
event_rate = sum(y_true) / len(y_true)
baseline_probability = [event_rate] * len(y_true)
baseline_score = brier_score_loss(y_true, baseline_probability)
print(f"Model: {model_score:.3f}")
print(f"Baseline: {baseline_score:.3f}")컴퓨터 비전의 경우, Ultralytics YOLO26 분류 예측은 Predict mode를 통해 클래스 확률을 노출합니다. 점수를 계산하기 전에 레이블이 지정된 홀드아웃 이미지에서 이러한 확률을 수집합니다. 결과를 Ultralytics validation mode 및 YOLO performance metrics guide와 결합하여 사용하시고, 태스크 전용 메트릭의 대체제로 취급하지 마십시오.
배포 후 새로운 정답(ground-truth) 레이블을 사용할 수 있게 되면 점수를 다시 계산하십시오. Ultralytics Platform deployment monitoring은 주변 운영 워크플로를 지원할 수 있으며, 반복적인 레이블 지정 평가는 데이터 드리프트로 인해 발생하는 보정 변경을 감지하는 데 도움이 됩니다.






