¿El bosque aleatorio de Breiman utiliza la ganancia de información o el índice de Gini?

15

Me gustaría saber si el bosque aleatorio de Breiman (bosque aleatorio en el paquete R randomForest) usa como criterio de división (criterio para la selección de atributos) la ganancia de información o el índice de Gini. Traté de encontrarlo en http://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm y en la documentación del paquete randomForest en R. Pero lo único que encontré es que el índice de Gini se puede usar para Computación de importancia variable.

alguien
fuente
También me pregunto si los árboles de bosque aleatorio en el paquete randomForest son binarios o no.
alguien

Respuestas:

16

El paquete randomForest en R de A. Liaw es un puerto del código original que es una mezcla de código c (traducido) de algún código fortran restante y código de envoltorio R. Para decidir la mejor división general entre puntos de ruptura y variables variables, el código utiliza una función de puntuación similar a la ganancia de gini:

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

Donde es un rasgo dado, N es el nodo en el que la división se va a realizar, y N 1 y N 2 son los dos nodos hijo creados por división N . El | . El | es el número de elementos en un nodo.XNN1N2N|.|

Y , donde K es el número de categorías en el nodoGini(N)=1k=1Kpk2K

Gini(N) y | N | son constantes para todas las divisiones comparadas y, por lo tanto, se omiten.

|N2||N|Gini(N2)|N2|Gini(N2)=|N2|(1k=1Kpk2)=|N2|nclass2,k2|N2|2

where nclass1,k is the class count of target-class k in daughter node 1. Notice |N2| is placed both in nominator and denominator.

removing the trivial constant 1 from equation such that best split decision is to maximize nodes size weighted sum of squared class prevalence...

score= |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

Soren Havelund Welling
fuente