12 votos

Creación de un árbol de decisión único a partir de un bosque aleatorio

Estoy utilizando scikit learn para construir un clasificador Random Forest. He oído que podría ser posible construir un único árbol de decisión a partir de un Random Forest. La sugerencia es que, aunque el árbol de decisión puede no ser tan buen clasificador como el Random Forest, puede ser mejor que el árbol de decisión que obtendría utilizando el método estándar.

Sin embargo, no he podido encontrar este método en Internet. ¿Existe?


Mi pregunta es no sobre la extracción de uno de los árboles de decisión de un Bosque Aleatorio. Se pregunta por un método para construir un nuevo árbol de decisión a partir de todo el Bosque Aleatorio, quizás combinando los árboles del Bosque Aleatorio de alguna manera.

9voto

ebricca Puntos 31

Los árboles en RF y los árboles individuales se construyen utilizando la función mismo algoritmo (normalmente CART). La única diferencia menor es que un solo árbol intenta todos predictores en cada división, mientras que los árboles en RF sólo prueban un subconjunto aleatorio de los predictores en cada división (esto crea árboles independientes). Además, cada árbol de una RF se construye sobre un muestra bootstrap de los datos de entrenamiento originales, en lugar de en el conjunto de entrenamiento completo. Esto hace que cada árbol del bosque sea un experto en algunos dominios del espacio de datos, y malo en otros.

Así que, por estas razones, no tiene sentido extraer un único árbol de un Bosque Aleatorio para utilizarlo como clasificador. Dependiendo de sus dominios de especialización, podría dar mejores resultados que un árbol tradicional construido con CART sobre el conjunto de datos completo, o mucho peores. Lo que permite que un RF sea mucho mejor que un solo árbol es que crece muchos árboles descorrelacionados y promedia sus resultados. Sólo cuando el comité de expertos cuenta con un número suficiente de miembros (normalmente entre 200 y 2000) se reduce la varianza. Pero individualmente, cada árbol de un RF sería más débil que un único árbol construido mediante el CART tradicional.

Ciertamente, se puede extraer un árbol de una RF para hacerse una idea de lo que ocurre en el bosque (véase el enlace que proporcioné en mi comentario anterior). Pero no utilice este árbol como clasificador.

8voto

Abraham D Flaxman Puntos 667

Quizás lo que busca es el Combinación de varios modelos (MMC) desarrollado por Domingos en los años 90. Los detalles de su uso con un conjunto empaquetado de reglas C4.5 se describen en su ponencia en el ICML

Domingos, Pedro. "Knowledge Acquisition from Examples Via Multiple Modelos". En Actas de la Decimocuarta Conferencia Internacional sobre Aprendizaje automático . 1997.

Sin embargo, el pseudocódigo de la Tabla 1 no es específico del C4.5 embolsado: enter image description here

Para aplicar esto a los Bosques Aleatorios, la cuestión clave parece ser cómo generar el ejemplo generado aleatoriamente $\overrightarrow{x}$ . He aquí un cuaderno que muestra una forma de hacerlo con sklearn .

Esto me ha hecho preguntarme qué trabajo de seguimiento se ha estado haciendo en CMM, y si alguien ha llegado a una mejor manera de generar $\overrightarrow{x}$ . He creado una nueva pregunta al respecto aquí .

4voto

JohnRos Puntos 3211

Salvo en escenarios muy improbables, una predicción de bosque aleatorio no puede representarse con un único árbol. Esto se debe a que aprenden predictores en diferentes clases de hipótesis: un bosque aleatorio aprende predictores sobre el espacio de combinaciones lineales de árboles, que incluye predictores que no son árboles. Dicho de otro modo: los bosques aprenden predictores en el espacio de los árboles.

Dicho esto, existe la esperanza de que exista un árbol que sea una buena aproximación al predictor del bosque. Una forma rápida y sucia de encontrar este árbol consiste en ajustar un árbol a las predicciones del bosque. La calidad de sus predicciones dependerá de la "distancia" entre el mejor predictor forestal y su mejor aproximación arbórea.

3voto

Brian J Puntos 11

Parece que buscas resolver dos problemas: 1. la interpretabilidad y 2. la eficacia de la predicción. Como ya se ha mencionado en los comentarios anteriores, puede extraer importancia de las variables en Python, por lo que aborda el punto 1.

En cuanto al punto 2, si le preocupa la eficiencia en microsegundos, puede explorar otros algoritmos, como la regresión logística, y comparar el rendimiento fuera de la muestra con el generado por Random Forest; si el rendimiento es casi equivalente, pero la regresión logística es mucho más rápida, puede decidirse por la regresión logística.

Si está decidido a utilizar Random Forest, la respuesta corta es que técnicamente podría construir un árbol aleatorio poniendo ntree=1 y puede que produzca una predicción decente, pero una colección de árboles será mucho mejor que un solo árbol. Así que no tiene sentido construir un solo árbol a partir del subconjunto de árboles a menos que esté dispuesto a sacrificar el rendimiento fuera de la muestra por la eficiencia.

Además, también podría acelerar las predicciones en un factor de 10 o más utilizando sólo un subconjunto de los árboles en la predicción final. Si entrenas 1500 árboles, podrías seleccionar el subconjunto que mejor contribuya a la predicción final. Estoy pensando en algo parecido a Selección de conjuntos a partir de un modelo de bibliotecas donde cada árbol de su bosque sería el modelo de su conjunto.

2voto

Erin Drummond Puntos 154

Uno de los clásicos en combinar este tipo de funciones es "Algoritmos basados en grafos para la manipulación de funciones booleanas" . Tiene más de 3.000 citas. Puedes tratar los árboles como un caso especial de funciones booleanas.

Tenga en cuenta que si su modelo de bosque aleatorio es grande, es probable que el modelo de árbol único también lo sea.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X