Tamaño del árbol en el impulso del árbol degradado

10

El refuerzo del árbol de gradiente propuesto por Friedman utiliza árboles de decisión con Jnodos terminales (= hojas) como aprendices básicos. Hay varias formas de hacer crecer un árbol con Jnodos exactos, por ejemplo, uno puede hacer crecer el árbol de una manera profunda o de primera, ...

¿Hay una manera establecida de cómo cultivar árboles con Jnodos exactamente terminales para impulsar el árbol de gradiente?

Examiné el procedimiento de crecimiento del árbol del gbmpaquete de R y parece que expande el árbol de manera profunda y utiliza una heurística basada en la mejora de errores para elegir si expandir el nodo secundario izquierdo o derecho, ¿es correcto?

Peter Prettenhofer
fuente
2
gbm usa CART para construir los árboles, un algoritmo bien conocido de los años 80. La heurística se llama impureza de Gini, una opción bastante estándar para la regresión con pérdida cuadrática.
2
La impureza de Afaik gini se utiliza para problemas de clasificación. Sin embargo, la pregunta se refiere al tamaño de los árboles.
Peter Prettenhofer
Agrega una rama a la vez. Me sorprendería que cada próxima división sea la mejor de las restantes en el árbol, no solo la rama. Hay momentos en que los datos no admiten un número exacto, como cuando los datos son demasiado pequeños para 'J'.
EngrStudent
Como dijo @EngrStudent, no puede forzar un número preciso de nodos. Sin embargo, tiene cierto control sobre un límite superior en el número de nodos. gbmtiene un parámetro n.minobsinnodeque controla el número mínimo de objetos por nodo. Por supuesto, entonces el número de nodos es menor o igual que NumberOfPoints / n.minobsinnode
G5W
Si estuviera buscando hojas 'J', entonces construiría completamente el árbol y luego, suponiendo que hubiera más que hojas J, podría reducirme a J. Esto me daría nodos 'J', y serían los más divisiones informativas: sería el modelo CART más saludable que podría ser. Si no hay suficientes divisiones, podría dividirme al azar dentro de los dominios para obtener 'J', pero serían espurios y algo triviales. Podría mirar la distribución de valores dentro de la hoja y usar una aproximación basada en CDF, pero eso se apartaría del modelo de media por hoja.
EngrStudent

Respuestas:

2

La solución en R gbmno es la típica.

Otros paquetes, como scikit-learno LightGBMusan los llamados (en scikit-learn) BestFirstTreeBuilder, cuando el número de hojas está restringido. Admite una cola prioritaria de todas las hojas y en cada iteración divide la hoja que produce la mejor disminución de impurezas. Por lo tanto, no es primero en profundidad ni en ancho, sino un tercer algoritmo, basado en cálculos en las hojas.

ii

David Dale
fuente