¿Por qué los árboles de decisión no son computacionalmente caros?

38

En Una introducción al aprendizaje estadístico con aplicaciones en R , los autores escriben que ajustar un árbol de decisión es muy rápido, pero esto no tiene sentido para mí. El algoritmo tiene que pasar por cada característica y particionarlo de todas las formas posibles para encontrar la división óptima. Para entidades numéricas con observaciones, esto podría resultar en particiones para cada entidad.nnn

¿Estoy malinterpretando cómo funciona la división binaria? ¿O hay una razón por la cual este algoritmo no tomaría mucho tiempo?

matt_js
fuente
1
+1 para la pregunta. Puede comenzar a verificar esta nota de lectura , página 15, usar el algoritmo lugar del . O(N)O(N2)
Haitao Du

Respuestas:

40

Los algoritmos de árboles de decisión no calculan todos los árboles posibles cuando se ajustan a un árbol. Si lo hicieran, estarían resolviendo un NP-hardproblema. Los algoritmos de ajuste del árbol de decisiones suelen tomar decisiones ambiciosas en el proceso de ajuste: en cada etapa optimizan el subproblema para encontrar una división óptima con los datos en el nodo dado y seguir avanzando en el proceso de ajuste. Además, a medida que avanza más en el árbol de decisión, tiene un conjunto de datos más pequeño que ha llegado al nodo dado, por lo que optimizará la regla de división en un subconjunto de datos más pequeño. Todas estas opciones son exploraciones lineales de los datos en el nodo dado. Esto no es complicado de hacer, pero puede ser algo costoso computacionalmente si tiene una gran cantidad de observaciones o una gran cantidad de covariables para dividir. Sin embargo, gran parte del trabajo se puede dividir y enviar a diferentes máquinas para trabajar, por lo que hay formas de desarrollar su arquitectura computacional para escalar.

Lucas Roberts
fuente
10
En otras palabras, es más o menos comparable a una búsqueda binaria.
Robert Harvey
1
log2(N)
2
De acuerdo, pero el principio sigue vigente. (Por eso usé las palabras "más o menos")
Robert Harvey
2

Existen algunas diferencias entre los algoritmos CART y C4.5 para construir árboles de decisión. Por ejemplo, CART usa la impureza de Gini para elegir características, mientras que C.4.5 usa la entropía de Shannon. No creo que las diferencias sean relevantes para la respuesta, por lo que no diferenciaré entre ellas.

Lo que hace que los árboles de decisión sean más rápidos de lo que piensas es:

  1. Como han dicho otros, estos algoritmos son algoritmos de búsqueda anticipada. Realizan optimizaciones locales. En cada rama, eligen la regla que maximiza / minimiza cualquier métrica que utilicen (Gini o Entropía). Esto significa que pueden pasar por alto reglas en las que usar un operador lógico andpodría resultar en un mejor árbol. Esto significa que debe ser muy cuidadoso / inteligente al hacer ingeniería de características. Por ejemplo, supongamos que está tratando de predecir la cantidad de personas que beben, es posible que desee contar con elementos de ingeniería como new_feature = hour > 22 & hour < 4 & (friday_night | saturday_night). Los árboles de decisión pueden pasar por alto tales reglas o darles menos importancia de lo que deberían.
  2. X1={3,1.5,2.5,2,1}X <= 1X <= 1.5X <= 2X1={1,1.5,2,2.5,3}X <= 1X <= 1.5x¯vx¯nx¯+vn+1
  3. Los árboles de decisión pueden ser paralelos. Cada nodo está compuesto por dos ramas que son independientes. Por lo tanto, en cada rama, tiene la oportunidad de paralelizar la creación del árbol. Además, la selección de características en sí también puede ser paralela. Esto es lo que hace que los paquetes sean xgboosttan rápidos. El aumento de gradiente es secuencial y no puede ser paralelo, pero los árboles sí pueden.
Ricardo Cruz
fuente
1

Solo para enriquecer las respuestas,

Los árboles jerárquicos de decisión paralelos al eje son rápidos (CART, C4.5) pero hay otras alternativas, como los árboles de decisión no jerárquicos o aquellos que realizan particiones oblicuas que no lo son, aunque pueden ser más precisos. Verifique las siguientes referencias si está interesado (No son una selección exhaustiva).

No jerárquico:

Grubinger, T., Zeileis, A. y Pfeiffer, K.-., 2014. Evtree: Aprendizaje evolutivo de árboles de clasificación y regresión óptimos a nivel mundial en RJStat. Software 61 (1), 1-29.

Divisiones oblicuas:

Murthy, SK, Kasif, S. y Salzberg, S., 1994. Un sistema para la inducción de árboles de decisión oblicuos. J. Artif. Intell. Res. 2 (1), 1-32. http://dx.doi.org/doi:10.1613/jair.63 . Cantú-Paz, E. y Kamath, C., 2003. Inducción de árboles de decisión oblicuos con algoritmos evolutivos. IEEE Trans. Evol. Comput 7 (1), 54-68. http://dx.doi.org/10.1109/TEVC.2002.806857 . Heath, D., Kasif, S. y Salzberg, S., 1993. Inducción de árboles de decisión oblicuos. J. Artif. Intell. Res. 2 (2), 1002-1007.

¡Buena suerte!

Rafa_Mas
fuente