実体と情報のはざま

何事にも囚われず。

ランダムフォレストのトレーニング部分まで

 めちゃくちゃ時間がかかってしまったが、ランダムフォレストのプログラムが一応完成した。しかし、まだトレーニング(学習)の部分だけ。。いつものようにPythonで書いたのだが、バグにかなり苦しんだ。いつもは紙と鉛筆でプログラミングの前段階までとことん煮詰めるのが自分流なのだが、ランダムフォレストに関してはプログラミングしながら試行錯誤せざるを得なかった。たぶん、フォレストを数式で扱うのが難しいからだと思う。他とは違う何かがある。そこが面白い!
 今回もプログラムはライブラリを使わないで書いた。scikit-learnにランダムフォレストがあるとのことで、私が以前紹介した本ではそれを使っている。なのでコーディング自体は著作権やらは気にしないでコピペできるのだが、コーディングがヘタなせいか非常に長くなってしまったので結果だけのせておく。トレーニング部分しかなくて何かアウトプットが出せるのかって?実は私が目指していたのはテスト部分(機械学習)ではなく、このトレーニング部分にある。ここから、特徴量の重要度が出したかったのだ!何が重要な特徴量かを知る術を持っておけば様々な問題に対応できると思って。以前、身につけた主成分分析(PCA)とは違う観点で特徴量を見ることができるかなと。
 で、今回の結果がこれ。Irisデータセットを使って特徴量の重要度を算出した。以前紹介した手持ちの本(パターン認識のやつ)とは使っている”不純度”の関数が違うから単純比較はできないが、傾向は同じで一安心。ちなみに、本ではジニ係数を用いていて、私はエントロピーを用いた。
f:id:myuteru:20170705013836p:plain
 計算設定は、木の数は500本で深さは1にした。深さを深くしても大差なかった。木の本数は100本ぐらいだと算出毎のブレが若干あった。10本だと結構ブレた。計算が一瞬で終わるのは嬉しいけど。
 次回はテスト(機械学習)部分も完成させたいと思う。そのあとは、いよいよKaggleに挑戦してみようかな。どうかな。あ、また深夜になってもーた。。
今日はここまで!