Verwendet Breimans zufälliger Wald Informationsgewinn oder Gini-Index?

15

Ich würde gerne wissen, ob Breimans zufälliger Wald (zufälliger Wald in R randomForest-Paket) als Aufteilungskriterium (Kriterium für die Attributauswahl) Informationsgewinn oder Gini-Index verwendet. Ich habe versucht, es auf http://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm und in der Dokumentation für das randomForest-Paket in R herauszufinden. Aber das einzige, was ich gefunden habe, ist, dass der Gini-Index dafür verwendet werden kann Computer mit variabler Wichtigkeit.

jemand
quelle
Ich frage mich auch, ob Bäume aus zufälligen Wäldern im randomForest-Paket binär sind oder nicht.
Jemand

Antworten:

16

Das randomForest-Paket in R von A. Liaw ist ein Port des Originalcodes, der eine Mischung aus C-Code (übersetzt), etwas verbleibendem Fortran-Code und R-Wrapper-Code ist. Um die bestmögliche Aufteilung über Haltepunkte und über mtry-Variablen zu bestimmen, verwendet der Code eine Bewertungsfunktion ähnlich der von gini-gain:

GichnichGeinichn(N,X)=Gichnich(N)-|N1||N|Gichnich(N1)-|N2||N|Gichnich(N2)

Wenn X ein gegebenes Merkmal ist, ist N der Knoten, an dem die Aufteilung erfolgen soll, und N1 und N2 sind die zwei untergeordneten Knoten, die durch Aufteilung von N . |.| ist die Anzahl der Elemente in einem Knoten.

Und Gichnich(N)=1-k=1Kpk2 , wobei K die Anzahl der Kategorien im Knoten ist

Die angewendete Scoring-Funktion ist jedoch nicht exakt dieselbe, sondern eine gleichwertige, recheneffizientere Version. Gichnich(N) und | N | sind für alle verglichenen Splits konstant und werden daher weggelassen.

Untersuchen den Teil auch, wenn die Summe der Quadratprävalenz in einem Knoten (1) als|N2||N|Gichnich(N2)|N2|Gichnich(N2)=|N2|(1-k=1Kpk2)=|N2|ncleinss2,k2|N2|2

Dabei ist die Klassenanzahl der k im Tochterknoten 1. Hinweiswird sowohl im Nominator als auch im Nenner platziert. | N 2 |ncleinss1,k|N2|

Entfernen der Trivialkonstante aus der Gleichung, so dass die beste Aufteilungsentscheidung darin besteht, die knotengrößengewichtete Summe der quadratischen Klassenprävalenz zu maximieren ...1-

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

Die Implementierung ermöglicht auch das klassenspezifische Hoch- / Runtergewichten von Samples. Ebenfalls sehr wichtig, wenn die Implementierung diese modifizierte Gini-Verstärkung aktualisiert, ist das Verschieben eines einzelnen Samples von einem Knoten zum anderen sehr effizient. Die Stichprobe kann von den Nennern / Nennern eines Knotens subtrahiert und zu den anderen addiert werden. Ich habe vor einigen Monaten einen Prototyp-RF geschrieben, der ignorant für jeden Breakpoint den Gini-Gain von Grund auf neu berechnet und das war langsamer :)

Wenn mehrere Zwischenergebnisse am besten sind, wird ein zufälliger Gewinner ausgewählt.

Diese Antwort basierte auf der Überprüfung der Quelldatei "randomForest.xxtar.gz / src / classTree.c", Zeile 209-250

Soren Havelund Welling
quelle