forest for dummies bosques aleatorios random-forest

random-forest - for - bosques aleatorios en r



Afinación aleatoria de bosques-profundidad de árboles y número de árboles (2)

Es cierto que generalmente más árboles resultarán en una mayor precisión. Sin embargo, más árboles también significa más costos computacionales y, después de un cierto número de árboles, la mejora es insignificante. Un artículo de Oshiro et al. (2012) señaló que, en base a su prueba con 29 conjuntos de datos, después de 128 de árboles no hay una mejora significativa (que está en línea con la gráfica de Soren).

Con respecto a la profundidad del árbol, el algoritmo de bosque aleatorio estándar hace crecer el árbol de decisión completo sin poda. Un solo árbol de decisión necesita una poda para superar un problema excesivo. Sin embargo, en el bosque aleatorio, este problema se elimina seleccionando aleatoriamente las variables y la acción OOB.

Referencia: Oshiro, TM, Pérez, PS y Baranauskas, JA, 2012, julio. ¿Cuántos árboles en un bosque al azar ?. En MLDM (pp. 154-168).

Tengo una pregunta básica sobre el ajuste de un clasificador de bosque aleatorio. ¿Hay alguna relación entre el número de árboles y la profundidad del árbol? ¿Es necesario que la profundidad del árbol sea menor que la cantidad de árboles?


Para la mayoría de las preocupaciones prácticas, estoy de acuerdo con Tim.

Sin embargo, otros parámetros sí afectan cuando el error de conjunto converge en función de los árboles agregados. Supongo que limitar la profundidad del árbol haría que el conjunto converja un poco antes. Raramente jugueteaba con la profundidad del árbol, ya que si el tiempo de computación se reduce, no ofrece ninguna otra bonificación. Al reducir el tamaño de la muestra bootstrap se obtiene un menor tiempo de ejecución y una menor correlación del árbol, por lo tanto, a menudo, un mejor rendimiento del modelo en un tiempo de ejecución comparable. Un truco no tan mencionado: cuando el modelo de RF explica que la varianza es inferior al 40% (datos aparentemente ruidosos), se puede reducir el tamaño de la muestra a ~ 10-50% y aumentar los árboles a, por ejemplo, 5000 (generalmente muchos). El error de conjunto convergerá más tarde en función de los árboles. Pero, debido a la menor correlación del árbol, el modelo se vuelve más robusto y alcanzará una meseta convergente de nivel de error OOB más baja.

El siguiente tamaño de muestra muestra la mejor convergencia a largo plazo, mientras que los maxnodos comienzan desde un punto más bajo pero convergen menos. Para estos datos ruidosos, la limitación de maxnodes aún es mejor que la RF predeterminada. Para datos de bajo ruido, la disminución de la varianza al reducir los nódulos máximos o el tamaño de la muestra no hace que aumente el sesgo debido a la falta de ajuste.

Para muchas situaciones prácticas, simplemente se daría por vencido, si solo pudiera explicar el 10% de la variación. Por lo tanto, la RF por defecto suele ser buena. Si es un jugador que puede apostar en cientos o miles de posiciones, la variación explicada del 5-10% es increíble.

la curva verde es maxnodes que tipo de profundidad de árbol pero no exactamente.

library(randomForest) X = data.frame(replicate(6,(runif(1000)-.5)*3)) ySignal = with(X, X1^2 + sin(X2) + X3 + X4) yNoise = rnorm(1000,sd=sd(ySignal)*2) y = ySignal + yNoise plot(y,ySignal,main=paste("cor="),cor(ySignal,y)) #std RF rf1 = randomForest(X,y,ntree=5000) print(rf1) plot(rf1,log="x",main="black default, red samplesize, green tree depth") #reduced sample size rf2 = randomForest(X,y,sampsize=.1*length(y),ntree=5000) print(rf2) points(1:5000,rf2$mse,col="red",type="l") #limiting tree depth (not exact ) rf3 = randomForest(X,y,maxnodes=24,ntree=5000) print(rf2) points(1:5000,rf3$mse,col="darkgreen",type="l")