分類問題の機械学習モデルの評価指標
分類問題における実測値と予測値の関係性は混合行列で表現できます。
正(実測) | 負(実測) | |
---|---|---|
正(予測) | TP | FP |
負(予測) | FN | TN |
- TP:True Positive。実測値と予測値の両方が正であったもの。
- FP:False Positive。実測値が負なのに、誤って正と予測値したもの(誤検知、偽陽性)。
- TN:True Negative。実測値と予測値の両方が負であったもの。
- FN:False Negative。実測値が正なのに、誤って負と予測値したもの(偽陰性)。
この内どの数値を用いるかが評価指標を見るときのポイントになりますが、これはそのモデルがどういった目的で実装されるかという背景を加味して判断する必要があります。
基本はAccuracy(正答率)
Accuracyはモデルがどれだけ正確に予測できたかを判断する指標です。これは直感的に理解しやすく解釈もしやすいため問題ないでしょう。
Accuracy(正答率)の欠点
しかし、Accuracyだけで予測結果を評価してしまうと、場合によっては良くないモデルを誤って良いモデルだと判断してしまう危険性があります。
例えばデータ数100のうち、正が10個・負が90個みたいな不均衡データなどの場合、とりあえず負と判断するだけでモデルの正答率は90%、になります。ですがこれだと実装するとなんでもかんでも負と判断してしまい、正の事象を正確に予測したい場合などに上手く機能しません。こういったのは実際の案件例だと異常検知などがあります
そして。こういう問題点を解決するために、以下のPrecisionやRecall、F値いう指標が用います
Precision・Recall・F値
Precision
正と予測したものがどれだけ正しかったか
→ モデルの予測が1だったもので、結果も1で正解だった割合
Precisionでは、正と予測したものの正確性を見ることができます。 そのためレコメンド等を行う場合、Precisionが高いほど無駄打ちをなくすことができます。
しかしPrecisonはFN(実際には正だったけど、誤って負と予測してしまったもの)を考慮しておらず、抜け漏れがあっても高い数値を返してしまいます。この欠点を補完する性質を持つのがRecallになります。
Recall
どれだけ取りこぼしなく予測することができたか
→ 結果が1だったものうち、モデルが1と予測したもの割合
F値
分類問題ではPrecisionやRecallなど複数の指標を使うことになるわけですが、そうすると「手法A と手法B を較べると、こっちの指標は A がよいけれど、あっちの指標は B がよいので、総合的にどちらを選べば…」というようなことが起こります。そこで、一つの値でもう少し総合的なことを表せる指標がほしくなるわけですが、そんな指標の一つが F値 (F-score, F-value) です。
F値はPrecisionとRecallの調和平均を計算した指標です。
式は以下のように表されます。
F1:2×Precision×Recall / Precision+Recall
F値は重み付けを加えたバリエーション (Fβ値) も存在するので、区別するために F1 値ということもあります。一応他にもF0.5やF2スコアなんかが存在します。
終わり
ちょっとややこしいのがpresicionとrecallの違いですね、これ後輩から質問されてパッと答えられなかったのがこの記事を書こうと思ったきっかけだったりします笑
コメント