【最新AutoMLツール】varista.aiの学習結果画面をもう少し掘り下げてみた

#はじめに🍕
varista.aiってなに？って方は過去にもいくつか記事を書いているのでご覧ください
👉[kaggleで使えるツールVARISTAの機能まとめ](https://qiita.com/shiotomo27/items/bdd7493f9a14c32dc912)

そんなvaristaですが、最近色々さわって細かい情報もわかってきたのでまとめてみました。

#学習結果画面⭐️
<img width="1678" alt="スクリーンショット 2020-06-08 22.41.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/cd3ea8f0-9128-8225-96f4-e8aabf3ded67.png">

各パネルをみていきましょう

##回帰問題の精度パネル
<img width="705" alt="スクリーンショット 2020-06-08 22.42.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/59717352-989d-0f3e-557e-79dfd639de81.png">
###スコア
モデルの総合評価といったところでしょうか
予測精度が0〜100で表されているこのスコアですが、
色々みててわかったのはこのスコアは回帰の場合「R2スコア」、分類の場合「F1スコア」を100倍した値です。

###平均誤差
<img width="343" alt="スクリーンショット 2020-06-08 22.47.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/4e22e5e3-e284-8bc1-fc95-e1df247263ff.png">
説明では☝️のように書かれています。
これは、専門用語でいうところの**「Root Mean Squared Error」**です。
知識がない人でも理解できる言い方になっていることがわかります。

###平均誤差率
<img width="333" alt="スクリーンショット 2020-06-08 22.49.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/73dee1b1-8527-5aa2-3c8a-666286130d8b.png">

こちらの平均誤差率は**「Root Mean Squared Persentage Error」**であることがわかりました。
これらの用語に関しては以下のリンクなどに細かく説明があるのでご参考に
[精度評価指標と回帰モデルの評価 | https://funatsu-lab.github.io/open-course-ware/basic-theory/accuracy-index/](https://funatsu-lab.github.io/open-course-ware/basic-theory/accuracy-index/)

###有効な範囲
<img width="405" alt="スクリーンショット 2020-06-08 22.53.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/b6099aa2-0185-5524-218b-8a00acb15718.png">
この値は一体何を表しているのでしょうか？
これは、学習データに使った目標変数の標準偏差をσとしたときの平均±(σの３倍)の値です。
つまり、データが正規分布にしたがって存在する場合、99.7%の値が存在している範囲です。
この範囲外にあるデータを外れ値として扱い、予測精度が落ちる領域として見なしているようです。
以下参考
[外れ値 | Wikipedia](https://ja.wikipedia.org/wiki/%E5%A4%96%E3%82%8C%E5%80%A4)

##分類問題の精度パネル
<img width="702" alt="スクリーンショット 2020-06-08 23.04.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/a823ef2d-b382-765a-3bba-f1acd886cff5.png">

回帰問題よりは理解し安い項目になっています。
###全体の正解率
文字通り、検証データ全ての正解率です。

###yがTrueの正解率
検証データのうち、実測値がTrue/1のデータの正解率です。
つまり、**タイタニック問題で言うと、生存者をどのくらい当てられたか**です。

###yがFalseの正解率
逆に検証データのうち、実測値がFalse/0のデータの正解率です。
つまり、**タイタニック問題で言うと、死亡者をどのくらい当てられたか**です。

これらの正解率は課題によってどちらを見るべきか判断するのが良いでしょう。
不良品検知などの場合には、ほとんど不良品がない中、性格に不良品を検出しなければならないため
全体の正解率ではなく、不良品がTrueの正解率を見るべきです。

##影響度の高い要因パネル
<img width="529" alt="スクリーンショット 2020-06-09 16.32.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/00700f06-7c5a-bc23-8cfa-92a23bc22d9c.png">
説明は以下のようになってます。
<img width="441" alt="スクリーンショット 2020-06-09 16.33.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/17b12950-b54a-b8ab-ee5e-3f19e7a19846.png">

これはいわゆる**「Permutation Importance」**という、特徴の影響度を検証した結果であることがわかります。
以下の記事などが参考になります。
[Permutation Importanceを使って検証データにおける特徴量の有用性を測る | https://qiita.com/kenmatsu4/items/c49059f78c2b6fed0929](https://qiita.com/kenmatsu4/items/c49059f78c2b6fed0929)

特定の列の値のみをランダムにして推論を行い、入れ替える前とあとでどの程度予測値が変わるのかという差分をみて、影響度を算出しています。
ランダムに置き換えた時に大きく予測値が変わるものほど影響度が高く、置き換えても予測が変わらないものは影響度が低いと見なします。

##データの分割パネル
<img width="497" alt="スクリーンショット 2020-06-09 16.40.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/a45af1f9-e133-4a58-b278-148342077243.png">

文字通り、データをどのように分割しているのかが表示されています。
sklearnでいうtrain_test_split関数の結果でしょう。
学習に利用していない「検証に利用」の方のデータを利用してスコアや、各精度が算出されていることがわかります。
学習設定画面から、検証データの割合を変更することでこの割合を変更することができます。
検証データを減らすことで、学習データが増やせる分、精度が上がる可能性があります。
しかし、検証時のデータが減ってしまう分、検証データの偏りなどがある場合に影響が出やすく、正しく精度が算出できない場合があるので要注意です。

## 検証データによる予測結果(回帰)
<img width="725" alt="スクリーンショット 2020-06-09 16.46.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/1a7db3ff-9a00-6cb6-bd15-0f8db3a4e19c.png">
**「Observed-Predicted Plot」**または**「yyplot」**などと呼ばれるチャートです。
x軸に実測値、y軸に予測値がプロットされ、それとともにy=xの直線も表示されます。
この直線にプロットが近ければ近いほど、予測精度が高いことがわかります。
どの程度予測が外れているのかを、ぱっと見でわかりやすくしたのが、このチャートになります。
<img width="592" alt="スクリーンショット 2020-06-09 16.50.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/803e4624-c098-f0d6-7593-9ae9f925aa16.png">
varistaではプロットにカーソルを合わせると実測値と予測値の差分を表示してくれます。

## 検証データによる予測結果(二値分類)
<img width="731" alt="スクリーンショット 2020-06-09 16.53.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/ee0aec60-f961-9e56-6cc2-4d2b02ca0ce4.png">
**「Confusion Matrix（混同行列）」**と言われる表示です。
以下の記事などが参考になります。
[混同行列(Confusion Matrix) とは 〜 2値分類の機械学習のクラス分類について | https://qiita.com/TsutomuNakamura/items/a1a6a02cb9bb0dcbb37f](https://qiita.com/TsutomuNakamura/items/a1a6a02cb9bb0dcbb37f)

>混同行列(Confusion Matrix) とは
2値分類問題で出力されたクラス分類の結果をまとめたマトリックス(行列≒表)のことで、2 値分類機械学習モデルの性能を測る指標として使われます。

###左上「True Positive」
左上の項目は、予測値がTrueで実測値もTrueであった予測の件数です。
**タイタニック問題で言うと、実際に生き残った人を、「生き残った」と予測した数**です。
つまり正解⭕️です。

###右上「False Negative」
右上の項目は、予測値がFalseで実測値はTrueであった予測の件数です。
**タイタニック問題で言うと、実際に生き残った人を、「亡くなった」と予測した数**です。
つまり不正解❌です。

###右下「True Negative」
左上の項目は、予測値がFalseで実測値もFalseであった予測の件数です。
**タイタニック問題で言うと、実際に亡くなった人を、「亡くなった」と予測した数**です。
つまり正解⭕️です。

###左下「False Positive」
右上の項目は、予測値がFalseで実測値はTrueであった予測の件数です。
**タイタニック問題で言うと、実際に亡くなった人を、「生き残った」と予測した数**です。
つまり不正解❌です。


なにがなにかわからなくなったら、とりあえずホバーすると、説明が表示されるので、無理に覚える必要もないかもしれません。
<img width="403" alt="スクリーンショット 2020-06-09 17.23.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/ebac3fe8-d9bf-f3e0-16fd-411af6e67392.png">

##分類の閾値
<img width="1235" alt="スクリーンショット 2020-06-09 17.24.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620435/bb316741-499b-5413-58e9-5aee5c6bc3cf.png">
二値分類は最終的に0/1やTrue/Falseで値を出力します。
しかし、機械学習モデルでは予測時に0/1などのフラグではなく、0.0~1.0の少数で確率を算出することができます。
0.5以上の場合Trueと判断することもできますが、varistaでは、その閾値を自動で調整し、最も精度が高くなる閾値を算出してくれます。
今回のデータの場合、**「死亡する確率が35％未満なら、生存するって判断した方がいいですよ」**と言っています。

#おわり✋
このように、モデル評価を行う際には様々な評価手段があり、それらを全て生成するには多少なりとも手間がかかります。
varistaを使えばこれらが、自動生成されるので、とても助かりますね。