ブライマンのランダムフォレストは、情報ゲインまたはGiniインデックスを使用しますか?


15

ブライマンのランダムフォレスト(R randomForestパッケージのランダムフォレスト)が分割基準(属性選択の基準)情報ゲインまたはGiniインデックスとして使用するかどうかを知りたいのですが?私はhttp://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htmとRのrandomForestパッケージのドキュメントでそれを見つけようとしました。しかし、私が見つけた唯一のことは、Giniインデックスを使用できることです変数重要度計算。


また、randomForestパッケージのランダムフォレストのツリーがバイナリであるかどうかも疑問に思います。
誰か

回答:


16

A. LiawによるRのrandomForestパッケージは、c-code(translated)と残りのFortranコードとRラッパーコードの混合である元のコードの移植版です。ブレークポイントおよびmtry変数全体の全体的な最適な分割を決定するために、コードはgini-gainと同様のスコアリング関数を使用します。

GiniGain(N,X)=Gini(N)|N1||N|Gini(N1)|N2||N|Gini(N2)

ここで、与えられた機能であり、Nは、分割がなされるべきでノードであり、N 1及びN 2は、分割によって作成された2つのつの子ノードであるN| | ノード内の要素の数です。XNN1N2N|.|

そして、、ここでKはノード内のカテゴリの数Gini(N)=1k=1Kpk2K

ただし、適用されるスコアリング関数はまったく同じではなく、より効率的な同等の計算バージョンです。および| N | 比較されたすべての分割に対して定数であるため、省略されます。Gini(N)

また、node(1)の有病率の合計が|として計算される場合、部品を検査します|N2||N|Gini(N2)|N2|Gini(N2)=|N2|(1k=1Kpk2)=|N2|nclass2,k2|N2|2

ここで、はドーターノード1のターゲットクラスkのクラスカウントですN 2 | は、分母と分母の両方に配置されます。nclass1,k|N2|

些細な一定の取り外し最良の分割の決定は、ノードが二乗クラスの有病率の加重和のサイズを最大化することであるような式から...1

|N1|k=1Kp1,k2+|N2|k=1Kp2,k2=|N1|k=1Knclass1,k2|N1|2+|N2|k=1Knclass2,k2|N2|2 =k=1Knclass2,k21|N1|1+k=1Knclass2,k21|N1|2 =nominator1/denominator1+nominator2/denominator2

The implementation also allows for classwise up/down weighting of samples. Also very important when the implementation update this modified gini-gain, moving a single sample from one node to the other is very efficient. The sample can be substracted from nominators/denominators of one node and added to the others. I wrote a prototype-RF some months ago, ignorantly recomputing from scratch gini-gain for every break-point and that was slower :)

If several splits scores are best, a random winner is picked.

This answer was based on inspecting source file "randomForest.x.x.tar.gz/src/classTree.c" line 209-250

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.