¿Cuándo es un bosque aleatorio una mala elección en relación con otros algoritmos?

Los conjuntos de árboles de decisión (como Random Forests, que es un término registrado para una implementación particular) son muy rápidos de entrenar, pero bastante lentos para crear predicciones una vez entrenados. Los conjuntos más precisos requieren más árboles, lo que significa que el uso del modelo se vuelve más lento. En la mayoría de las situaciones prácticas, este enfoque es lo suficientemente rápido, pero ciertamente puede haber situaciones en las que el rendimiento en tiempo de ejecución es importante y, por lo tanto, se preferirían otros enfoques.

Por supuesto, es importante reconocer que es una herramienta de modelado predictivo, no una herramienta descriptiva; si está buscando una descripción de las relaciones en sus datos, debe buscar otras opciones.

En general, para un modelado predictivo rápido, simple y flexible, los conjuntos de árboles de decisión son probablemente la herramienta pragmática única más útil disponible en la actualidad, pero como cualquier método tienen sus limitaciones.

Me ha encantado el concepto de un bosque aleatorio desde que me lo presentaron en la universidad. Se pueden ejecutar en paralelo, y la teoría es elegante y relativamente sencilla. No pueden salir del rango de la variable dependiente, ya que Breiman los derivó (que a menudo, pero no siempre, es algo bueno). En general, son bastante geniales.

Sin embargo, a menudo se usan en exceso porque son muy fáciles de ejecutar (y generalmente dan resultados bastante buenos), y la teoría se malinterpreta. (He tenido una moneda de cinco centavos por cada vez que me he encontrado con alguien que malinterpreta la propiedad “no se puede sobreajustar” de bosques aleatorios, tendría muchas monedas de cinco centavos).

No funcionan en absoluto cuando se requiere extrapolación fuera del rango de las variables dependientes (o independientes), mejor usar, por ejemplo, MARS aquí.

Ciertamente no les va bien con el tiempo. Los árboles no, en general. Aparte: conozco varias variantes de árboles que tratan con nociones temporales y he trabajado con todas ellas, derivando y descubriéndolas en documentos más tarde para la mayoría de los casos, y he derivado dos que no he encontrado publicadas. Sí, amo los árboles y los bosques, y siempre estoy buscando nuevas formas de pronosticar algo. Pasé bastante tiempo tratando de casarme con los dos conceptos, y aunque una de esas dos formas funciona bastante bien en lo que a veces llamo un bosque semialeatorio temporal, pero solo para clases restrictivas de problemas de pronóstico. Termina a un lado.

No tratan bien una gran cantidad de categorías en variables categóricas, y no funcionan en absoluto si realiza una codificación única en las categorías. Edición, 23 de mayo de 2017: me di cuenta de que (gracias a Rafael Valle) había exagerado esto. Esta es básicamente la única forma de hacerlo en scikit-learn, pero no lo hagas en R. Hay razones por las que no tengo tiempo para entrar ahora, pero es una mala idea.

Mi principal problema con los bosques aleatorios no es, necesariamente, el algoritmo. Es la falta de comprensión que, como cualquier otro algoritmo predictivo, tienen supuestos incorporados, y usted los ignora bajo su propio riesgo. A menudo funciona bastante bien en una gran cantidad de casos, lo que engaña a las personas a pensar que trabajan en todos los casos, lo que no hacen.

Los bosques aleatorios tienden a ser sorprendentemente flexibles: se pueden usar con una gran cantidad de atributos, conjuntos de datos pequeños o grandes, son fáciles y rápidos de evaluar.

Las únicas dos debilidades que vería son:

  • Los resultados del aprendizaje son incomprensibles. En comparación con un solo árbol de decisión, o con un conjunto de reglas, no le dan mucha información.
  • Son difíciles de hacer incrementales. Se puede hacer, pero no hay un algoritmo natural para hacerlo (de la misma manera, por ejemplo, que es fácil ajustar los parámetros de los ingenuos bayes después de agregar una instancia, o agregar una nueva instancia al clasificador vecino más cercano) .