不均衡データの評価指標MCC(マシューズ相関係数)/F1-Scoreと比較
恥ずかしながら今まで不均衡データにはF1値だけを使ってきたのですが、最近マシューズ相関係数というものを知ったので、それについてまとめようと思います。
↑こちらのサイトを参考にさせていただきました。
マシューズ相関係数とは
予測データ
具体的には
で定義されます。ところで極端なケースでは分母の値が0になってしまって未定義となってしまう可能性があります。TP+FN>0,TN+FP>0は仮定して良い(陽性と陰性のラベルは1件ずつそれぞれ存在する)ので、(TP+FP)= 0 or (TN+FN) = 0 のとき未定義になります。
どういうケースかといえば、全部陰性を出力するモデルか全部陽性を出力するモデルのケースですね。
どうやらこのケースではMCC=0(worst case)として扱うようです。全部同じ出力は役に立つモデルとは言いいにくいケースが多いと思うので、妥当だとは思いつつ、学習対象が極度に不均衡なデータで、かつ検証用(予測を出力する)データ数が少ない場合はこうなってしまう可能性があるので、このようなケースに適用するには注意が必要ですね
まぁ、異常値検知に近い問題だったら素直に生のPrecisionとかRecallを見るべきな気がしますが、念の為。
MCCの値と良し悪し。
基本相関係数ですので、1が最良,0が最悪,-1は予測を全て反転させれば最良という解釈になります。わかりやすいですね。
F1-Scoreとの比較。
MCCはF1-Scoreと比較して、次のような利点があります。
- 陽性のみや陰性のみについて注目する指標ではなく、TP,TN,FP,FN全てを考慮した指標である。
- 不均衡データに強い
1.に関しては、参考にしたサイト様では対称であるという表現をしています。
どういうことかといえば、通常のF1-Scoreは陽性の検出率のみに注目した値で、陰性の検出率に対するF1-Scoreと値が異なります。
もちろん2値分類でもF1-macroやF1-microを計算すれば対称な指標とはなりますが、macroを選ぶのか,microを選ぶのかといった問題が生じてきます。その点MCCは最初から全てのケースを元に計算される値であるため、心配が要りません。
2.に関しては、ちょっと実験をしてみます。
- 陽性vs陰性を(3:97),(10:90),(30:70),(50:50)の4ケースで考える。
- 陽性正答率(精度)と陰性正答率(精度)をそれぞれ変えてシミュレーションし、その時のF1及びMCCを見る。
シミュレーション結果(抜粋)
表が大きくて比べにくいので、2つだけ載せてまとめようと思います(その他の結果は最後に載せます)
不均衡(10:90) | 均衡(50:50) |
---|---|
この2つの結果を比べると、
- F1値(左上)は不均衡(陽性例が少ない)データでは殆ど0に近い値で参考になりにくい。
- F1-micro(左下)は不均衡なデータでは陽性精度のみに純粋に依存することになる。陰性に関してはわからない。
- F1-macro(右上),MCC(右下)は不均衡なデータでも結構良い指標となる(陰性精度、陽性精度どちらの改善に対しても精度の向上が見れる。)
- ただし、F1-macroはMCCと比較して不均衡なデータのときは多数例に関する精度向上に関しては鈍感(改善してもF1-macroに反映されにくい)
という感じになりました。
F1-scoreとの比較、結論
- 均衡データは正直何使ってもいい
- 不均衡なデータかつ、陰性例の検出にも意味がある場合はMCCが良い
- 不均衡なデータでも、陰性例の検出には意味がない場合はF1-macroでもいいが、正直この場合は直接PrecisionやRecallを見ればいい。
↓
大体のケースでMCCの方が良いと思われる
と言った感じになりました。
その他のシミュレーション結果
不均衡(3:97) | 均衡(30:70) |
---|---|
特に新しい発見は無いですね。敷いて言えば3:97とかまで来ちゃうとさすがのMCCでも評価が困難ということでしょうか。(このレベルになると異常値検知なので、その他の指標を用いたほうが良いということだと思われます。)
Discussion