予測された延滞率が実際どれだけ当たっているか。予測と結果の合致性の評価
はじめに
- 今回は、説明可能性についての3回目、モデルを評価するための指標の1つであるブライアスコアについてまとめています。
- MLで作成されたモデルをどう評価するか、どう説明するかについてさまざまな指標・方法を用いて行うことを目的としており、主にPoCなどで利用していくことを想定しています。
- 説明可能性についてのまとめはこちら。
Brier Score(ブライアスコア)
- Brier Scoreとは
-
日本語ではWIKIもないブライアスコアですが、天気予報のWIKIの中にこんな記述があります。
予報確率Fi、実際値Ai(発生した場合1、発生しなかった場合0などとする)としたときの確率誤差の総和を予報回数Nで割ったもの。値が0に近いほど精度が高い。
$$\frac{1}{N} \sum_{i=1}^N(F_i - A_i)^2$$
-
英語版のWikiにある例を引用すると
- 延滞予測が100%($F_i$=1)で結果も延滞($A_i$=1)の場合は、Brier scoreは0となり、最高値となります。
- 延滞予測が100%($F_i$=1)で結果は延滞しない($A_i$=0)の場合は、Brier scoreは1となり、最低値となります。
- 延滞予測が70%($F_i$=0.7)で結果も延滞($A_i$=1)の場合は、Brier scoreは$(0.70-1)^2$=0.09となります。
- 延滞予測が30%($F_i$=0.3)で結果も延滞($A_i$=1)の場合は、Brier scoreは$(0.30-1)^2$=0.49となります。
-
予測値と結果に乖離があるほどスコアが下がる(Bier scoreの値が高くなる)ことになります。
-
上記のように、確率は0から1の値となり、結果も0と1の2項分類となるときには機能しますが、それ以外の場合には別な方法を使用することとなります。別な方法についてはWikiのOriginal definition by Brierを参照してください。
-
検索して出てくる文献のほとんどは天気予報関連でした。たぶんそちらの業界ではかなり一般的な指標と思われますが、あまり金融系では使われていないようです。
-
こちらでも書いた通りに、Forecastに拘りたい私としては、予測した確率の精度は重要な指標の1つとなります。
-
クレジットスコアで置き換えて考えると、機械学習で得られた延滞確率が実際にはどれだけの確率で発生しているのか、その確率の誤差を評価できます。
- 利用方法
-
上記のように計算も割と単純ですが、Sklernにも準備されているので容易に使うことができます。
-
サンプルは下記のようになります。
import numpy as np from sklearn.metrics import brier_score_loss # Probabilityの値 y_prob = np.array([0.1, 0.9, 0.8, 0.3]) # 2項分類の場合 # 結果の値。 y_true = np.array([0, 1, 1, 0]) brier_score_loss(y_true, y_prob) 0.037...
-
ちなみに、多項分類なども準備されています。
# 多項分類の場合 # 結果の値。 y_true_categorical = np.array(["spam", "ham", "ham", "spam"]) brier_score_loss(y_true_categorical, y_prob, pos_label="ham") 0.037...
まとめ
- 0と1の予測結果の精度を評価するのがAUCやジニ係数などになります。今回のブライアスコアは何%の確率と予測して、その結果がどうだったのかを評価します。
- クレジットスコアでは、延滞する・しないの予測のほかに、何%で延滞するのかを適切に予測する必要があります。その確率が正しければ、延滞確率に見合う融資金額や利率、全体のポートフォリオでの許容アセットなどを適切にすることで、しっかりとリスクをコントロールしていくことができます。
- 学習する分類器によっては、予測値の値をそのまま使用すると正確ではない数値を利用することになります。それを防ぐため適切な予測値に変換するprobability calibrationを行ってから利用しましょう。たとえばランダムフォレストの場合は予測値が >0.1 <0.7の値になっていますので、他の分類器と比較する際は注意が必要です。