¿El número óptimo de árboles en un bosque aleatorio depende del número de predictores?

46

¿Alguien puede explicar por qué necesitamos una gran cantidad de árboles en un bosque aleatorio cuando la cantidad de predictores es grande? ¿Cómo podemos determinar la cantidad óptima de árboles?

Z Khan
fuente

Respuestas:

70

El bosque aleatorio utiliza el embolsado (selección de una muestra de observaciones en lugar de todas) y el método de subespacio aleatorio (selección de una muestra de características en lugar de todas ellas, en otras palabras, embolsado de atributos ) para hacer crecer un árbol. Si el número de observaciones es grande, pero el número de árboles es demasiado pequeño, entonces algunas observaciones se pronosticarán solo una vez o incluso en absoluto. Si el número de predictores es grande pero el número de árboles es demasiado pequeño, algunas características (teóricamente) pueden perderse en todos los subespacios utilizados. Ambos casos resultan en la disminución del poder predictivo aleatorio del bosque. Pero el último es un caso bastante extremo, ya que la selección del subespacio se realiza en cada nodo.

Durante la clasificación, la dimensionalidad del subespacio es (bastante pequeño,pes el número total de predictores) por defecto, pero un árbol contiene muchos nodos. Durante la regresión, la dimensionalidad del subespacio esp/3(lo suficientemente grande) por defecto, aunque un árbol contiene menos nodos. Entonces, la cantidad óptima de árboles en un bosque aleatorio depende de la cantidad de predictores solo en casos extremos.ppp/3

ntreekeep.inbagnn1ntree

O_Devinyak
fuente
-2

De acuerdo con este artículo

Sugieren que un bosque aleatorio debe tener una cantidad de árboles entre 64 y 128 árboles . Con eso, debe tener un buen equilibrio entre ROC AUC y el tiempo de procesamiento.

silviomoreto
fuente
10
Parece extraño que sus resultados no dependan del número de características en el conjunto de datos ...
nada101
-5

Quiero agregar algo si tiene más de 1000 características que usted y 1000 filas que no puede tomar simplemente en número de árbol.

Mi sugerencia es que primero debe detectar el número de CPU y RAM antes de intentar iniciar la validación cruzada para encontrar la relación entre ellos y el número de árboles

si usa sikit learn en python, tiene la opción n_jobs=-1de usar todos los procesos, pero el costo de cada copia de datos del solicitante principal después de eso puede probar esta fórmula

ntree = sqrt (número de fila * número de columnas) / numberofcpu

Malouke
fuente
66
Creo que necesita editar esto para proporcionar evidencia y justificación para sus declaraciones.
mdewey