Brier Score

最終更新: 2 分で読めます このページを編集
まとめ
  • Brier Score | Mengukur kalibrasi probabilitasの概要を押さえ、評価対象と読み取り方を整理します。
  • Python 3.13 のコード例で算出・可視化し、手順と実務での確認ポイントを確認します。
  • 図表や補助指標を組み合わせ、モデル比較や閾値調整に活かすヒントをまとめます。

1. Definisi #

Untuk klasifikasi biner, Brier Score ditulis sebagai \mathrm{Brier} = \frac{1}{n} \sum_{i=1}^{n} (p_i - y_i)^2, dengan \(p_i\) adalah probabilitas kelas positif dan \(y_i\) label aktual (0 atau 1). Pada kasus multikelas, error kuadrat dihitung per kelas lalu dirata-rata.


2. Implementasi dan visualisasi di Python 3.13 #

python --version        # contoh: Python 3.13.0
pip install scikit-learn matplotlib

Contoh berikut melatih regresi logistik pada dataset Breast Cancer, menghitung Brier Score, dan menggambar diagram reliabilitas. Gambar disimpan di static/images/eval/classification/brier-score/reliability_curve.png sehingga dapat diregenerasi lewat generate_eval_assets.py.

import matplotlib.pyplot as plt
from pathlib import Path
from sklearn.calibration import CalibrationDisplay
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import brier_score_loss
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, stratify=y, random_state=42
)
pipeline = make_pipeline(
    StandardScaler(),
    LogisticRegression(max_iter=2000, solver="lbfgs"),
)
pipeline.fit(X_train, y_train)
proba = pipeline.predict_proba(X_test)[:, 1]
score = brier_score_loss(y_test, proba)
print(f"Brier Score: {score:.3f}")
fig, ax = plt.subplots(figsize=(5, 5))
CalibrationDisplay.from_predictions(y_test, proba, n_bins=10, ax=ax)
ax.set_title("Reliability Diagram (Breast Cancer Dataset)")
fig.tight_layout()
output_dir = Path("static/images/eval/classification/brier-score")
output_dir.mkdir(parents=True, exist_ok=True)
fig.savefig(output_dir / "reliability_curve.png", dpi=150)
plt.close(fig)
Diagram reliabilitas

Penyimpangan dari garis 45° menandakan probabilitas yang terlalu percaya diri atau terlalu ragu.


3. Cara membaca skor #

  • Kalibrasi sempurna menghasilkan 0.
  • Model yang selalu memprediksi 0.5 (pada data seimbang) mencapai 0.25.
  • Nilai semakin kecil semakin baik; probabilitas yang jauh dari hasil aktual akan menambah penalti secara kuadrat.

4. Diagnostik kalibrasi dengan reliabilitas diagram #

Diagram reliabilitas mengelompokkan probabilitas ke dalam beberapa bin, lalu menampilkan rata-rata probabilitas yang diprediksi versus frekuensi aktual.

  • Titik di bawah garis diagonal → model terlalu percaya diri (probabilitas terlalu tinggi).
  • Titik di atas garis diagonal → model kurang percaya diri.
  • Setelah menerapkan teknik kalibrasi (Platt scaling, isotonic regression, dsb.), hitung kembali Brier Score dan diagram ini untuk memastikan adanya perbaikan.

Ringkasan #

  • Brier Score mengukur kesalahan kuadrat rata-rata dari probabilitas; semakin kecil semakin baik.
  • Dengan Python 3.13, rier_score_loss dan diagram reliabilitas memberikan inspeksi kalibrasi secara cepat.
  • Gunakan bersama ROC-AUC serta Precision/Recall agar evaluasi mencakup kualitas ranking sekaligus akurasi probabilitas.