見出し画像

9/14 交差検証法、KFold法、SHAP

9/14に学んだこと。備忘録用。

モデルの評価方法

ホールドアウト法と交差検証法の2種類ある。
ホールドアウト法はデータを学習データとテストデータに分ける。そして、学習データで構築されたモデルをテストデータで検証する。
めちゃめちゃシンプルだが、データ数が少ない時は、たまたま学習データで作ったモデルの評価が高くなってしまう可能性がある。同時に学習データの母数が少なくなり、正確なモデルを構築できなくなる。
これの欠点を排除したのが交差検証法である。これはあるデータを時には学習データとして時にはテストデータとして使うというモデルである。k分割交差検証が有名だが、これは全部のデータをkで割って、k個のデータ群を作る。そしてそのうちのk-1個のデータ群を学習モデルとして、1個のデータ群を学習モデルとして使用する。これをすべてのデータ群は一度は学習モデルとして扱われるようにk回繰り返すというものだ。

KFold法のよくあるエラー

KFold法について調べていて見つけたこの記事、よかった
https://blog.amedama.jp/entry/2018/06/21/235951

要素じゃなくて、要素に割り振られた通し番号で考えると、その通し番号の前提(1から順に割り振ること)が覆った途端にエラーを起こすことが書かれている。

SHAPの概念

この記事を参考に理解できました。
https://speakerdeck.com/dropout009/shapley-additive-explanationsdeji-jie-xue-xi-moderuwojie-shi-suru?slide=27

SHAPというのは、SHapley Additive exPlanationsの略である。

簡単にいうと、機械学習の概念で、産出された予測値において、どの特微量がどの程度その予測値に貢献しているかを明らかにするものである。

SHAPは、限界貢献度という概念を用いている。これは、協力ゲーム理論であるShapley Valueのコンセプトを利用している。詳しい説明は上記参考に譲るが、作業能率の違うAさんBさんCさんに、作業後に全体でXX万円のお金を渡した後の分配額は全員同じであるわけではないよねっていう話。

これをwaterfall_plotやdependence_plot、summary_plotを使うと可視化しやすくなる。

ちなみにどんなモデルにでもSHAPが使えるっぽい。計算は遅いらしいけど。


最後に

データサイエンス領域、学ぶこと多すぎるので、毎日勉強になっていること多い。多分、全部を理解使用とするよりも、データの前処理からモデルの構築・検証までの仮定をよくある方法で一通りできるようになることが至上命題で、それが終わった後に、そのやり方じゃなくてこういうやり方でもできるよみたいに学んで行って、各フレーム内で横展開的に知識を充足するやり方が良さそう。
もう少し言語化すると、データの前処理を一通り学ぶ→モデルの構築を一通り学ぶ→・・・・とかではなくて、データの前処理を最小限度に学ぶ→モデルの構築を最小限度に学ぶ→・・・を何周かするみたいな方が良さそうだっていう話。
で、あんまり効果的でない議論でありがちな「どこまでが最小限度?」みたいなものに関しては、自分が最小限度だと感じたものを最小限度だとする。日にちで考えたり、工数で考えたりとかいろいろできるけど、別にアルバイトをしてるわけじゃないので!

頑張ろう〜早くKaggle本、届け〜〜

いいなと思ったら応援しよう!