手軽に機械学習を楽しむ ランダムフォレスト(回帰) webブラウザー上で動作するコード付き 

データサイエンス

機械学習になれていない方は、アルゴリズムが多すぎて、どれを使っていいか悩んでしまうと思います。

はじめに学ぶべきアルゴリズムとして、私がおすすめすのは、ランダムフォレストです。

最近は、XGboostやLightGBMなどに負けていますが、精度が高く、実装が簡単なため、短時間で結果を出す必要があるときには特におすすめです。

webブラウザーで動作するpythonコードを用意しましたので、pythonが動作する環境が整っていない方も気軽に楽しんでください。

おすすめの理由

ランダムフォレストは、決定木を複数作成して、それぞれの決定木の結果を多数決でまとめて、一つの答えを導き出すあるごりずむです。ツリーモデルをたくさん作ります。

データの質がよければ、とりあえず、ハイパーパラメータは何もいじらずとも、そこそこの結果でてしまいます。

scikit-learnを使うと実装も、数行終わりますので、簡単です。

数値データだけでなく、カテゴリデータにも対応していますし、データのレンジ(振れ幅)をそろえる、正規化や標準化の必要もないため、前処理もいりません。

特に初心者の方は、コードが上手く回らずに嫌になってあきらめてしまう方がいますので、ランダムフォレストはおすすめです。

ブラウザーで動くコードで遊んでみましょう!

下の▶ボタンを押すとコードが実行されます。結果右側に表示されますので確認してみてください。

コード解説

データ準備

scikit-learnライブラリでロード可能な、ボストンの住宅価格のデータセットを使います。

ロードして、13種類の説明変数(犯罪発生率とか部屋の広さです)と、予測対象の、住宅価格のデータを使いやすいように変数に格納します。

学習データと検証データに分ける

sk-learnのtrain_test_splitを使って、説明変数と、目的変数(予測対象)を同時に、学習データとテストデータに分けます。今回は7:3に分けます。

学習

学習は、mode.fitの1行です。ハイパーパラメータは今回は特に指定せず、デフォルトのままです。

変えてみたい人は、上のコードで変えてみてください。

フィットさせて検証

予測も、model.predict 1行で済みます。学習デートテストデータそれぞれにフィッテイングさせて、確認します。

考察

横軸が、実際の住宅の価格、縦軸がモデルによる予測値です。

サンプルの点が、傾き1の直線上にのれば精度が高い状態ですね。

青点は、学習データへのフィッティングの様子で、誤差プラスマイナス10以内に収まっています。学習データへのフィッティングなので、あくまで参考値となります。

赤点がこのモデルの実力となる、テストデータの結果です。実運用での使い方しだいですが、まずまずの結果ではないでしょうか。

まとめ

機械学習のアルゴリズムとして、気軽に楽しめるランダムフォレストを、webブラウザーで動作するコードで説明しました。

ブラウザー上のコードを変更することも可能ですので、初心者の方も機械学習を楽しんでみてください。

タイトルとURLをコピーしました