本日は機械学習のモデルの評価方法についてまとめます。Gistsがかなり重くなってしまったので一発で見れない場合はColabで開くか、Gistsに飛んだのちページを何度か更新してみてください。
分類指標
この記事では分類問題に焦点を当てます。なので回帰におけるMSEとかは話しません。- TP / TN / FP / FN (真陽性 / 真陰性 / 偽陽性 / 偽陰性)
- confusion matrix (混同行列)
- simple accuracy (正解率)
- recall (再現率) (sensitivity)
- precision (適合率)
- f1 measure (F値)
- f1 beta measure (重み付きF値)
- threshold (閾値)
- ROC / AUC (受信者操作特性 / AUC下部の面積)
- MCC (マシューズ相関係数)
分類指標の必要性
もちろん、汎用性がめちゃくちゃ高いものがあればそれでいいんですが残念ながら私は知らないです。。。他にも具体例で考えてみましょう。たとえば、100枚のラーメンの写真をデータセットとします。モデル

- 二郎系だ
- 二郎系ではない



Confusion Matrix
クラス分類の結果をまとめた表のこと。各要素がTP / TN / FP / FNとなる。ただし、これは二値の場合。しかし多値分類でも同様に作れます。

Accuracy
もっとも、シンプルかつ、直感的な正答率
Precision
少しの外れを許すが機会損失したくない時に使う
Recall (Sensitivity)
機会損失してでもとにかく正確に当てたい時に使う
PrecisionとRecallの具体例
たとえば全国の二郎系を制覇したいという目的に対してはRecallよりもPrecisionを重視します。なぜならば行ったラーメン店が高い確率で二郎系あっても素通りしてしまっては目標が達成できないからです。逆にRecallを重視するのはたとえば病気を判別するときです。病気なのに病気ではない、と判断すると大変ですよね
とはいえ、完璧な分類は共に高いのでどうせならこの二つの指標を同時に見たいですよね。つまり。2つの指標を同時に加味して「全体としての良さ」を測りたい時に

F1 measure
RecallとPrecisionを同時に考慮する指標です。調和平均という見方もできますが


F-beta measure
RecallとPrecisionに重みを加えたF measureです。いわば一般化です。

Recallを重視したいなら (



![Rendered by QuickLaTeX.com w_1 \in [0,1]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-68bb507dd59c93a6e06505c0011aa48e_l3.png)
![Rendered by QuickLaTeX.com w_2 \in [0,1]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-70c5a075787512d2f3ebdc8d1943b7ec_l3.png)

van Rijsbergen’s E (effectiveness) function
F-measureは実は別の指標から導出されたものらしいです。起源は次のもの

代入して変形します。


![Rendered by QuickLaTeX.com R, P \in [0,1]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-2179d1d0770c262db344b01b88238f2c_l3.png)














とはいえ、わかったことをまとめると直感的な加重調和平均は




ROCとAUC
確率出力に対して最もいい閾値を見つけると同時に、モデルを比較するための指標をグラフ化したものです。グラフ上の点は特定の閾値を用いてラベリングされたのちの混合行列から算出されたspecificity, sensitivityである。次の動画がかなりわかりやすいので絶対見てください。
簡単にまとめると、例えばロジスティック回帰を用いた2値分類を考えます。この時に閾値をいくつにするかが問題ですよね。出力の確率と閾値を比較して大きければ1,小さければ0のようにラベルを振る必要があるからです。つまり実数からカテゴリカルに変換する必要性。
ということはです、もちろん閾値と混合行列は一対一対応します。
どの閾値がもっともいい分類をしてくれるのか?という問に答えてくれるのがROCです。
そしていくつかのモデルに対してどのモデルがいいか、つまりどのROCがいいかという問に答えてくれるのがAUCです。

そして上の図中の点ですが、これひとつひとつが特定の閾値によって算出された混合行列を用いて計算されたTPR、FPRです。
ここでわかったこととして他クラスのROCはそう単純ではないということです。sklearnに実装はありますがバイナリ で実装されているのか閾値をクラス数で分割しているのかわかりませんが、理論上はそう簡単にROCが作れないことは気にかけておいた方がいいと思います。
MCC
各クラスのサイズが非常に異なっていても使用できる評価指標です。この記事の冒頭で極端な例をあげましたが、実世界の分析においてはよくあることだと思います。ですのでその点ではいい指標だなと思います。

