9.1 対数損失と正規化
scikit-learn
で用意されているだけでも, 分類モデルの評価指標は多くあります. 例えば的中率 (accuracy) や F値 (F-score) といったものがありますが, これらが評価するのはラベルの一致度合いです. つまり, 予測確率が 0.6 でも 0.9 でも, ラベルが 1 であれば的中率やF値は同じです. しかし我々が知りたいのは予測確率が適切であるかどうかです. そこで, 対数損失**29で評価できないか考えてみましょう. N 件のデータの正解ラベルをそれぞれ yi∈{0,1} として, 対応するモデルの予測確率を pi とすると, 対数損失は以下のように定義されます.
LogLoss=−1NN∑i=1[yiln(pi)+(1−yi)ln(1−pi)]
対数損失はロジスティック回帰モデルなど, 多くの分類モデルで使われている損失関数と同一のもので, 小さければ小さいほど損失が小さい, 言い換えると当てはまりが良いことになります. しかし, かならず0から1の範囲に収まる的中率などと違い, 上限・下限がないためどの程度の値ならば良いのか, 後どれくらい改善の余地があるのかなどが分かりにくいという問題があります. この問題を解決するのが He et al. (2014) の提案する正規化エントロピー (normalized (cross) entropy, NE) です. 正規化エントロピーは以下のように定義されます.
NE=−N−1∑Ni=1[yiln(pi)+(1−yi)ln(1−pi)]−N−1∑Ni=1[yiln(ˉy)+(1−yi)ln(1−ˉy)]=LogLoss−[ˉyln(ˉy)+(1−ˉy)ln(1−ˉy)]
ここで, ˉy=N−1∑iyi, つまり ˉy は正例ラベルの割合です. NE は −[ˉyln(ˉy)+(1−ˉy)ln(1−ˉy)] という要素で対数損失を「正規化」した指標です. 式 (9.1) の分子と分母の違いに注目してください. これは正例への予測確率が全て ˉy, 負例に対しては全て 1−ˉy を予測確率として返すようなモデルの対数損失とみなせます. つまり, 特徴量に関係なく, データ全体の正例/負例の割合をそのまま全ての予測確率とした場合の対数損失です. このような予測は機械学習を使わなくとも可能な, ごく単純なもので, 機械学習を使った場合より対数損失が大きいはずです. つまり, NEが1より大きいモデルはこのような単純な予測よりパフォーマンスが悪いことを意味します. NEが1を切ることが, 意味のある機械学習モデルの最低限の要件の1つです.
NEはまた, データの不均衡による錯覚から我々を守ってくれます. よく知られている錯覚として, 「正例(y=1)が9割のデータに対して, 一律同じ予測値(ˆy=1)を返す予測であっても, 的中率は 90%を超える」というものがあります. これは対数損失においても同様で, 正負例が不均衡なデータでは, そうでないデータより簡単に小さな値が出ます. しかし, NE の分母は正負例の不均衡さに応じて変化するため, いつでも 1が基準点となります. CTR予測ではクリック割合がとても小さいことが多いため, この性質が役に立ちます. 具体的にどれくらいの対数損失が基準点に対応しているかの目安として, 表 9.1 を参考にしてください.
正例の割合 | 対数損失 |
---|---|
50% | 0.693 |
30% | 0.611 |
10% | 0.325 |
5% | 0.199 |
1% | 0.056 |
また, 類似の指標として Yi et al. (2013) が相対情報量ゲイン (relative information gain, RIG)を提案しています. RIG と NE には
RIG=1−NE
という関係があるため, RIG は (1) ゼロが基準点, (2) 大きい方が当てはまりが良い, という違いがありますが本質的に NE と同じです. さらに, Lefortier, Truchet, and de Rijke (2015) は RIG の符号を逆転させただけの 正規化対数損失 (NLL) を定義しています. 3つはどれも本質的に同じなので, 見やすいものを使用してかまいません. しかし, 結果の共有の際には見る人にとってわかりやすくなるよう心がけてください.
参考文献一覧
対数損失はロジスティック損失とか交差エントロピーとも呼ばれます.↩︎