東京に棲む日々

データ分析、統計、ITを勉強中。未だ世に出ず。

ランダムフォレスト1

前回の投稿「とりあえず決定木モデルを実行のためのメモ」で、決定木モデルを使ってみた。
http://highschoolstudent.hatenablog.com/entry/2013/07/03/193603

これはどんなモデルかと言うならば、目的変数が数値データの場合(回帰木)、その目的変数の平均値に最も大きく差が出るような分岐を説明変数の中から探す(説明変数自体と分岐の水準)。要するにt検定で最も有意となる分岐を見つけて行くのを繰り返す。目的変数がカテゴリカルデータの場合(分類木)、その目的変数の割合に最も大きく差が出るような分岐を説明変数の中から探す。要するにカイ2乗検定で最も有意となる分岐を見つけて行くのを繰り返す。とイメージしておけば問題ない。

 

では、決定木の応用であるランダムフォレスト。

ランダムフォレストは、ブートストラップサンプリングにより複数のデータセットを作成し、それら各データに決定木をあてはめ、すべての結果を平均(カテゴリカル目的変数の場合は多数決の場合も)して最終結果とする手法(バギングと呼ばれる手法)。ただし、分岐毎に候補変数がランダムに選ばれる。たとえば、説明変数が10あり、決定木を作成する際、分岐の候補となる変数が3つランダムに選ばれ、その中から目的変数をよく区別する一つの変数と水準が決定される。

ランダムフォレストは、単純な決定木より予測精度が高いと言われる。

これは、沢山の決定木の予測値を集めて平均することにより、予測値の分散が小さくなる、と説明される。決定木は、ある程度分岐させるとhigh variance、low biasなモデル(要するにオーバーフィッティング気味なモデル)になるので、沢山の結果の平均をとることによって分散が小さくなり、予測精度が向上する。

メモ: バギングは平均を取ることにより最終結果のvarianceを減らせる。ただし、biasは平均を取るために使われる各モデルのbiasの期待値と変わらない。対し、ブースティングはbiasを取り除きながら最終的な予測結果を得る手法。)

ただし、平均値の分散は、平均値を構成する統計量(予測値)間の相関にも影響を受けるので相関も小さく抑える工夫が必要になってくる。
Cov(X1, X2) = r
Var(X1) = Var(X2) = v
μ= X1 + X2 / 2
Var(μ) = 2v + 2r / 4 = v + r / 2  ← rを小さく抑える必要がある。

ランダムフォレストでは、分岐のたびに候補となる変数をランダムに選択することにより、似すぎたツリーが生成されるのを防いでいる、ということだと思われる。


次回、ランダムフォレスト、randomForest()、を使ってみる。