ディープラーニング、使ってません!と言われ、ランダムフォレストを実装してみた

AI学習ダイアリー
ディープラーニングは機械学習の一つの手法だ!

先日、AIベンダーに話を聞く機会があり、

「このシステムはなにを使っているんですか?」

と聞いたら、

「if文を組み合わせたランダムフォレストです」

とのことだった。

いまや、AIといえば、
ディープラーニングのこと。
それを使っていないのだ。

で、家に戻って、機械学習の必読本と言われる
『Pythonではじめる機械学習』を開いたら、

基本テキストの一冊。

アンサンブル学習バギングをベースに、少しずつ異なる決定木をたくさん集めたもの」

という説明があり、頭を抱えた。

なに言ってるか全然わからん。

回帰でも分類でも、現在最も広く使われている機械学習手法である」

との説明が、さらに追い打ちをかけてくる。

う〜む。6カ月間、AIスクールに通って、自分はなにを勉強してきたんだ!

しかし、落ち込んでばかりいられない。
久しぶりにGoogle Colabを立ち上げ、
決定木ランダムフォレストを実装してみた。
(スクールテキストを参考にしています)

データは、
scikit-learnToy datasetsのひとつ、
load_iris()を使う。

まずは、決定木を図示してみる。

mglearnをインストールして表示。True=Yes, False=No

決定木ではYes/Noで答えられる質問で構成された階層的な木構造を学習する」(同書)

ただ、これだけだと、当然訓練データに過学習してしまう(というか100%の精度だ)。

scoreが1.0とは100%のこと!

なので、この決定木をたくさん集め、

graphvizでツリー構造も表示できる!

その答えを平均することで(=アンサンブル学習)、
これを解決しようというのが、ランダムフォレストなのだ。

デフォルトでmax_features=’auto’になっている

2つのパラメータ、
n_estimators(決定木の数。今回は3つ)と
max_features(個々の決定木の乱数性を決定する特徴量の個数。デフォルト値を使用)
の調整で、モデルの良し悪しが決まるのだが、
それほどチューニングしなくていいのも人気が高い理由のひとつだそうだ。

でも、どういう風に使えば、
さっきのシステムが作れるんだろう?

その答えは、
自分で見つけたい。

Follow me!