先日、AIベンダーに話を聞く機会があり、
「このシステムはなにを使っているんですか?」
と聞いたら、
「if文を組み合わせたランダムフォレストです」
とのことだった。
いまや、AIといえば、
ディープラーニングのこと。
それを使っていないのだ。
で、家に戻って、機械学習の必読本と言われる
『Pythonではじめる機械学習』を開いたら、

基本テキストの一冊。
という説明があり、頭を抱えた。

なに言ってるか全然わからん。
との説明が、さらに追い打ちをかけてくる。

う〜む。6カ月間、AIスクールに通って、自分はなにを勉強してきたんだ!
しかし、落ち込んでばかりいられない。
久しぶりにGoogle Colabを立ち上げ、
決定木とランダムフォレストを実装してみた。
(スクールテキストを参考にしています)
データは、
scikit-learnのToy datasetsのひとつ、
load_iris()を使う。
まずは、決定木を図示してみる。

mglearnをインストールして表示。True=Yes, False=No
ただ、これだけだと、当然訓練データに過学習してしまう(というか100%の精度だ)。

scoreが1.0とは100%のこと!
なので、この決定木をたくさん集め、

graphvizでツリー構造も表示できる!
その答えを平均することで(=アンサンブル学習)、
これを解決しようというのが、ランダムフォレストなのだ。

デフォルトでmax_features=’auto’になっている
2つのパラメータ、
n_estimators(決定木の数。今回は3つ)と
max_features(個々の決定木の乱数性を決定する特徴量の個数。デフォルト値を使用)
の調整で、モデルの良し悪しが決まるのだが、
それほどチューニングしなくていいのも人気が高い理由のひとつだそうだ。
でも、どういう風に使えば、
さっきのシステムが作れるんだろう?
その答えは、
自分で見つけたい。