不均衡データの評価指標MCC(マシューズ相関係数)/F1-Scoreと比較

4 min read読了の目安(約2400字

恥ずかしながら今まで不均衡データにはF1値だけを使ってきたのですが、最近マシューズ相関係数というものを知ったので、それについてまとめようと思います。

https://guchio3.hatenablog.com/entry/2020/03/13/222815
↑こちらのサイトを参考にさせていただきました。

マシューズ相関係数とは

予測データ\hat{y}と真ラベルyの間の相関係数です。
具体的には

MCC = \frac{TP\cdot TN-FP\cdot FN}{\sqrt{(TP+FP)(TP+FN)(TN+FP)(TN+FN)}}

で定義されます。ところで極端なケースでは分母の値が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と比較して、次のような利点があります。

  1. 陽性のみや陰性のみについて注目する指標ではなく、TP,TN,FP,FN全てを考慮した指標である。
  2. 不均衡データに強い

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でも評価が困難ということでしょうか。(このレベルになると異常値検知なので、その他の指標を用いたほうが良いということだと思われます。)