sklearn:機械学習モデルを評価 混同行列・交差検証・ROC・AUC

model_evalation

今日は機械学習モデルの評価について考えてみます。

Contents

機械学習モデルの評価

訓練したモデルに対して、新しいデータが入ってきたときに、データのカテゴリをどれだけ正確に当てられたかが、その訓練済みモデルの性能になりますよね。

カテゴリの分類精として、下記4つの確率的な指標があります。

  1. 度適合率 Precision = tp / (tp + fp) :予測するクラスをなるべく間違えないようにする指標
  2. 再現率 Recall = tp / (tp +fn )
  3. F値  F-Value = 2/((1/適合率)+(1/再現率)) :適合率と再現率の調和平均
  4. 正解率 (tp+tn)/(tp+fp+fn+tn) :予測と実績が一致したデータの割合

で、これを一つの行列にまとめたのが、
混同行列 Confusion matrix

というものです。

各変数になっていのは

  • tp : True-Positive 正例Positiveと予測して、正解Trueだった
  • fp : False-Positive 正例Positiveと予測して、不正解Falseだった
  • fn : True-Negative 負例Negativeと予測して、正解Trueだった
  • tn : False-Negative 負例Negativeと予測して、不正解Falseだった

という結果の数が入ります。

統計用語が入っていますが、

  • 正例:興味のある事柄のクラスに属するデータ
  • 負例:興味のない事柄のクラスに属するデータ

ということです。

アイリスデータをSVMで分類する

混同行列を見ていきたいので、まずはサンプルデータとしてアイリスデータをSVM分類し、予測結果まで実行してみます。

混同行列を算出する

基本的には適合率が高いものが優秀と考えています。

再現率も考慮して 適合率と再現率の間を取るのがF1という値です。

こんな形のマトリクスで出力されます。

層化k分割交差検証

もともとのデータをk個の塊に等分して、訓練用データと検証用データの組み合わせをkパターン用意して、kパターンすべてについて一気に交差検証をする方法です。

ROCとAUC

予測確率の正確さを見ていく方法です。

  •  ROC曲線:Receiver Operating Characteristic
  •  AUC : Area Under the Curve

確率の高い順にデータを並べる
確率以上のデータはすべて正例と予測する

実際に正例だったデータの割合(真陽性率)
実際は負例にも関わらず正例と予測されたデータの割合(偽陽性率)

正例と予測する確率のしきい値を変えていったときに真陽性率を横軸、
偽陽性率を縦軸にとったものがROC曲線

次に AUC曲線 Area Under the Curveですが、要するにROC曲線の面積のことです。1に近いほど正例、0.5に近づくほど正例と負例が混在していて分類できなくなるという意味があります。

ROC曲線と AUCを素早く求めて見ましょう

参考

機械学習の評価指標 – ROC曲線とAUC