機械学習

ランダムフォレスト

こんにちは!

今回は、汎化能力の非常に高い最強手法ランダムフォレストについてみていきましょう!

今でこそディープラーニングやXGboostなどの台頭により日の目を見なくなりましたが、依然としてパッケージで簡単に実装でき相当良い精度をたたき出す最強手法であることには変わりありません。

そんなランダムフォレストとは一体どんな手法なのでしょうか?

ランダムフォレストとは

ざっくり言うと、

決定木をたくさん集めて合体させた手法

です。

決定木に関しては「決定木」を見てください。詳しくまとめています。

決定木は単体だとそれほど強い手法ではありません。

しかし、その決定木をバギングと呼ばれる集団学習法を用いてたくさん集めてくると最強のランダムフォレストが出来上がるんです。

集団学習法は,決して精度が高いとはいえない弱いモデルをたくさん構築し,これらの予測結果を統合することで高い精度を出す方法論です。

ランダムフォレストのイメージはこんな感じ。

なんでもかんでもバギングすれば良くなるわけじゃないことは注意しておきましょう!

それでは、次に具体的なアルゴリズムを見ていきます

ランダムフォレストのアルゴリズム

有名なはじめてのパターン認識から引用します!

  1. データセットからN個のブートストラップサンプルを作成する。
  2. ブートストラップサンプルの中から分岐に用いる変数をM個ランダムサンプリングし、決定木を作成する。
  3. 1~2を繰り返す。
  4. 量産された決定木に対して、予測したいデータを入力する。
  5. 全ての結果を統合(回帰の問題では平均、分類の問題では多数決)して、1つの予測結果として出力する。

ランダムサンプリングする変数の数Mはユーザが自由に設定することができますが、一般的には変数の数の正の平方根を取ることが多いです。

ランダムフォレストはどんな時に使える?

ランダムフォレストのアルゴリズム自体はそれほど複雑ではありませんが、決定木を弱学習器として用いており結果を解釈するのにはそれほど向いていません。

精度と解釈容易性は比較的トレードオフの関係にあるため、解釈容易性を求めるなら決定木を用いたほうが良いです。

精度を徹底的に求めるならランダムフォレストなどの機械学習手法を使いましょう!無論、XGboostが強いことは言うまでもありませんが笑

ちなみにランダムフォレストでも、変数重要度を算出することができ、どの変数が寄与しているのかを可視化することは可能です。

ランダムフォレストをRで実装してみよう!

それでは具体的にランダムフォレストを使って解析を行ってみましょう!

データはなんでも良いんですが、とりあえず簡易的にRにデフォルトで入っているirisデータを使いましょう!あやめの種類を分類したデータで目的変数は3カテゴリーの質的変数、説明変数は花びらの幅とか4つです。

サンプルは150個で、分類しやすいデータなのでどんな手法でも割と簡単に分類できるんですが、どうなるでしょう!

今回はランダムフォレスト以外に決定木とSVMとニューラルネットワークで比較しました。

 

結果はこんな感じになりました!

予想通りどれもいい感じに分類できてますね~!まあirisデータは分類しやすいので!

 

続いて!

こちらも有名な

タイタニックのデータを用います。Kaggleの公式サイトからデータをダウンロードできます。

まず、データのクレンジングを行い、欠損値は削除、不要と考えられる項目は削除しました。

項目8つ

Survived:生死 pclass:客室のクラス sex:性別 age:年齢 sibsp:兄弟・配偶者の数 parch:親・子供の数 fare:乗船料金 embarked:乗船した港

サンプル数714

この時、生死を目的変数としそれ以外を説明変数とします。

 

サンプル数714のうちランダムに400個のデータを取り出し学習データとし、残りの314を予測データとします。

学習データで予測モデルを作り、予測データにあてはめ真値と予測値の判別率を精度として比較します。

シミュレーション回数は1000回とし、上記の手順を1000回繰り返し、結果を平均したものを最終アウトプットとします。

ランダムフォレスト、サポートベクターマシン、ナイーブベイズ、ニューラルネットワークの4手法で比較します!

基本的に引数は全部デフォルトで!果たして結果はどうなるでしょうか!


見づらいですが、やはりランダムフォレストとSVMが強いですね!

ランダムフォレスト まとめ

ランダムフォレストについて見てきました!簡単に実装できる割には精度が高いことが特徴です。

最後にランダムフォレストについてまとめておきましょう!

・ランダムフォレストは決定木とバギングを組み合わせた手法
・ランダムフォレストは簡単に高精度をたたき出すコスパの良い手法

ランダムフォレストに関してもっと詳しく知りたいかたは以下の書籍を参考にしてみてください!

ちなみにランダムフォレストをはじめとした機械学習手法に関して深く勉強したい方はこちらにオススメ本をまとめていますのでご覧ください!

厳選7冊!機械学習を勉強する上でおすすめな本!こんにちは! この記事ではデータ解析の花形、機械学習を勉強する上でおすすめな本をご紹介します! 機械学習ってなに? 最...