機械学習および
データマイニング
問題
分類
クラスタリング
回帰
異常検知
相関ルール
ランダムフォレスト(英: random forest, randomized trees)は、2001年に Leo Breiman によって提案された[1]機械学習のアルゴリズムであり、分類、回帰、クラスタリングに用いられる。決定木を弱学習器とする集団学習アルゴリズムであり、この名称は、ランダムサンプリングされたトレーニングデータによって学習した多数の決定木を使用することによる。ランダムフォレストをさらに多層にしたアルゴリズムにディープ・フォレスト (機械学習)がある。対象によっては、同じく集団学習を用いるブースティングよりも有効とされる。
目次
1 アルゴリズム
1.1 学習
1.2 評価
2 特徴
2.1 長所
2.2 短所
3 実装
4 外部リンク
5 文献
アルゴリズム
学習
学習を行いたい観測データから、ランダムサンプリングによりB組のサブサンプルを生成する(ブートストラップサンプル)
各サブサンプルをトレーニングデータとし、B 本の決定木を作成する
指定したノード数 n m i n {\displaystyle n_{\mathrm {min} }} に達するまで、以下の方法でノードを作成する
トレーニングデータの説明変数のうち、m 個をランダムに選択する
選ばれた説明変数のうち、トレーニングデータを最も良く分類するものとそのときの閾値を用いて、ノードのスプリット関数を決定する
要点は、ランダムサンプリングされたトレーニングデータとランダムに選択された説明変数を用いることにより、相関の低い決定木群を作成すること。
パラメータの推奨値 最終出力は以下のように決定する オープンソースによる実装
n m i n {\displaystyle n_{\mathrm {min} }} : 分類の場合は1、回帰の場合は5
m: 説明変数の総数をpとすると、分類の場合は p {\displaystyle {\sqrt {p}}} 、回帰の場合は p/3
評価
識別: 決定木の出力がクラスの場合はその多数決、確率分布の場合はその平均値が最大となるクラス
回帰: 決定木の出力の平均値
特徴
長所
説明変数が多数であってもうまく働く
学習・評価が高速
決定木の学習は完全に独立しており、並列に処理可能
説明変数の重要度(寄与度)を算出可能
Out of Bag エラーの計算により、クロスバリデーションのような評価が可能
AdaBoost などと比べて特定の説明変数への依存が少ないため、クエリデータの説明変数が欠損していても良い出力を与える
短所
説明変数のうち意味のある変数がノイズ変数よりも極端に少ない場合にはうまく働かない
実装
⇒The Original RF by Breiman and Cutler. Written in Fortran 77. May be difficult to configure.
⇒ALGLIB contains implementation of modified random forest algorithm in C#, C++, Pascal, VBA.
⇒FastRandomForest Efficient implementation in Java, utilitizes multiple cores. Integrates into the Weka environment.
⇒orngEnsemble module within Orange data mining software suite
⇒PARF Written in Fortran 90. Can distribute work over a cluster of computers using MPI.
⇒party an implementation of Breiman's random forests based on conditional inference trees for R
⇒randomForest for R
⇒Random Jungle is a fast implementation of for high dimensional data. (C++, parallel computing, sparse memory, Linux+Windows)
⇒TMVA Toolkit for Multivariate Data Analysis implements random forests.