Brier Score
Brierスコアは、予測確率と結果の平均二乗誤差であり、値が小さいほど優れています。計算式、ベースライン、スキルスコア、コードを紹介します。
Brierスコアは、予測確率と実際の結果(事象が発生した場合は1、発生しなかった場合は0)との差の二乗平均として、確率予測の精度を測定します。二値事象では、完全なスコアである0から1までの値を取り、常に0.5と予測するモデルのスコアはちょうど0.25です。気象学者Glenn W. Brierが1950年に確率的な天気予報の検証用に導入し、現在では臨床リスクモデル、予測コンテスト、機械学習 (ML)分類器の評価に使われています。しきい値で判断に変換する前の確率そのものを評価するため、正解でも確信度が低い0.51の予測と、確信度が高い0.99の予測を区別できます。一方、正解率、適合率、再現率では、どちらも同じように数えられます。
Brierスコアの計算方法#
確率をp、結果をoとすると、N件の予測に対するBrierスコアは(p − o)²の平均です。欠陥の発生確率を80%と予測したモデルは、欠陥があれば(0.8 − 1)²で0.04、なければ(0.8 − 0)²で0.64のペナルティを受けます。このため、確信を持った誤りは確信度の低い誤りよりはるかに大きく評価されます。Brierスコアは厳密に適正なスコアリングルールです。モデルが最良の期待スコアを得られるのは、実際に信じている確率を報告した場合だけなので、予測を0または1寄りに調整しても有利にはなりません。
クラスが2つを超える場合、予測確率ベクトルと正解クラスのone-hotベクトルとの差の二乗をクラスごとに合計し、サンプル間で平均します。Brierによる元の定義であるこの多クラス形式は、0から2の範囲を取ります。scikit-learnのbrier_score_loss関数は両方のケースに対応し、デフォルトでは二値スコアを半分にして通常の0~1の範囲に収める一方、多クラス入力では0~2の範囲を維持します。そのため、異なるツールのスコアを比較できるのは、同じ方式を使った場合に限られます。
Brierスコアの解釈#
事象の発生頻度に依存するため、Brierスコアに普遍的な「良い」値はありません。常にベースレートpを予測するモデルのスコアはp(1 − p)です。発生率が10%の事象では0.09、半分の確率で発生する事象では0.25になります。Brierスキルスコア(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年の分解では、スコアを3つの要素に分けます。BS = 信頼性 − 分解能 + 不確実性です。信頼性はキャリブレーションを測定し、予測確率が、その確率を割り当てられた事例の観測頻度からどれほど離れているかを示します。値は低いほど望ましいです。分解能は、結果の異なる事例を予測がどれほど区別できているかを測定し、値は高いほど望ましいです。不確実性はベースレート項p(1 − p)に等しく、データのみに依存します。常にベースレートを予測するモデルは完全にキャリブレーションされ、分解能がゼロになるため、そのスコアは不確実性項と等しくなります。
Brier Scoreと関連指標の比較#
- 対数損失:真の結果に割り当てられた確率の対数を使って計算する、こちらも厳密に適正なスコアリングルールです。確信を持った誤りへのペナルティはさらに大きく、発生しなかった事象を0.99と予測した場合、Brierスコアでは0.98、対数損失では4.6になります。発生した事象を確率0と予測すると、対数損失は無限大になります。
- 期待キャリブレーション誤差 (ECE):予測を確信度ごとにビン分けし、確信度と正解率の差を平均して、キャリブレーションだけを測定します。分解能は考慮しないため、常にベースレートを予測するモデルでもECEを完全な値にできます。
- 曲線下面積 (AUC):陽性を陰性より上位にランク付けするスコアの性能を測定します。温度スケーリングのように順位を維持するキャリブレーションでは、値は変わりません。
- 信頼度:モデルが予測に付与するスコアです。Brierスコアは、そのスコアが確率として適切に機能するかを評価します。過度に高い信頼度のスコアは、信頼性項を通じてBrierスコアを悪化させます。
コンピュータービジョンにおけるBrierスコア#
確率を出力する画像分類器は、ラベル付きの保留画像でBrierスコアを評価します。また、新たにラベル付けされた本番画像で再計算すると、データドリフトによって入力が変化してもキャリブレーションが維持されるかを確認できます。YOLO26の分類モデルは、result.probs.data内でクラス全体の完全なsoftmax分布を返します。そのため、ファインチューニング済みYOLO26分類器の多クラスBrierスコアは、保留画像ごとに確率ベクトルと正解ラベルのone-hotベクトルとの差を二乗して合計し、その平均を取った値です。










