Los bosques aleatorios se consideran cajas negras, pero recientemente estaba pensando qué conocimiento se puede obtener de un bosque aleatorio.
Lo más obvio es la importancia de las variables, en la variante más simple se puede hacer simplemente calculando el número de ocurrencias de una variable.
La segunda cosa en la que estaba pensando son las interacciones. Creo que si el número de árboles es suficientemente grande, entonces se puede probar el número de ocurrencias de pares de variables (algo así como la independencia de chi cuadrado). Lo tercero son las no linealidades de las variables. Mi primera idea fue solo mirar un gráfico de una puntuación Vs variable, pero aún no estoy seguro de si tiene algún sentido.
Añadido 23.01.2012
Motivation
Quiero usar este conocimiento para mejorar un modelo logit. Creo (o al menos eso espero) que es posible encontrar interacciones y no linealidades que se pasaron por alto.
fuente
Respuestas:
Los bosques al azar son apenas una caja negra. Se basan en árboles de decisión, que son muy fáciles de interpretar:
Esto da como resultado un árbol de decisión simple:
Si Petal.Length <4.95, este árbol clasifica la observación como "otro". Si es mayor que 4.95, clasifica la observación como "virginica". Un bosque aleatorio es una simple colección de muchos de estos árboles, donde cada uno es entrenado en un subconjunto aleatorio de los datos. Cada árbol "vota" en la clasificación final de cada observación.
Incluso puede extraer árboles individuales del rf y observar su estructura. El formato es ligeramente diferente al de los
rpart
modelos, pero puede inspeccionar cada árbol si lo desea y ver cómo modela los datos.Además, ningún modelo es realmente un recuadro negro, porque puede examinar las respuestas pronosticadas frente a las respuestas reales para cada variable en el conjunto de datos. Esta es una buena idea independientemente del tipo de modelo que esté construyendo:
He normalizado las variables (sepal y pétalo de largo y ancho) a un rango de 0-1. La respuesta también es 0-1, donde 0 es otro y 1 es virginica. Como puede ver, el bosque aleatorio es un buen modelo, incluso en el conjunto de prueba.
Además, un bosque aleatorio calculará varias medidas de importancia variable, que pueden ser muy informativas:
Esta tabla representa cuánto eliminar cada variable reduce la precisión del modelo. Finalmente, hay muchas otras parcelas que puede hacer a partir de un modelo de bosque aleatorio, para ver lo que está sucediendo en el cuadro negro:
Puede ver los archivos de ayuda para cada una de estas funciones para tener una mejor idea de lo que muestran.
fuente
Hace algún tiempo tuve que justificar un modelo de RF ajustado a algunos químicos en mi empresa. Pasé bastante tiempo probando diferentes técnicas de visualización. Durante el proceso, accidentalmente se me ocurrieron algunas técnicas nuevas que puse en un paquete R ( forestFloor ) específicamente para visualizaciones aleatorias del bosque.
El enfoque clásico son las parcelas de dependencia parcial respaldadas por: Rminer (el análisis de sensibilidad basado en datos es una dependencia parcial reinventada) o la parcela parcial en el paquete randomForest . Encuentro el paquete de dependencia parcial iceBOX como una forma elegante de descubrir interacciones. No he usado el paquete edarf , pero parece tener algunas visualizaciones finas dedicadas a RF. El paquete ggRandomForest también contiene un gran conjunto de visualizaciones útiles.
Actualmente forestFloor admite objetos randomForest (está en camino la compatibilidad con otras implementaciones de RF). También se pueden calcular las contribuciones de características para los árboles impulsados por gradiente, ya que estos árboles después del entrenamiento no son muy diferentes de los árboles forestales aleatorios. Entonces forestFloor podría soportar XGBoost en el futuro. Las parcelas de dependencia parcial son completamente invariantes modelo.
Todos los paquetes tienen en común visualizar la estructura de mapeo geométrico de un modelo desde el espacio de características hasta el espacio objetivo. Una curva sinusoidal y = sin (x) sería un mapeo de xay y se puede trazar en 2D. Trazar un mapeo de RF directamente a menudo requeriría demasiadas dimensiones. En cambio, la estructura general de mapeo se puede proyectar, dividir o descomponer, de modo que toda la estructura de mapeo se reduzca a una secuencia de gráficos marginales 2D. Si su modelo de RF solo ha capturado los efectos principales y no interacciones entre variables, los métodos de visualización clásicos funcionarán bien. Luego puede simplificar la estructura de su modelo de esta maneray=F(X)≈f1(x1)+f2(x2)+...+fd(xd) . Entonces, cada función parcial de cada variable se puede visualizar como la curva sinusoidal. Si su modelo de RF ha capturado interacciones considerables, entonces es más problemático. Los sectores 3D de la estructura pueden visualizar interacciones entre dos entidades y la salida. El problema es saber qué combinación de funciones visualizar ( iceBOX aborda este problema). Además, no es fácil saber si otras interacciones latentes aún no se tienen en cuenta.
En este artículo , utilicé una versión muy temprana de forestFloor para explicar qué relación bioquímica real había capturado un modelo de RF muy pequeño. Y en este artículo describimos minuciosamente las visualizaciones de las contribuciones de características, las visualizaciones del suelo forestal de los bosques aleatorios .
He pegado el ejemplo simulado del paquete forestFloor, donde muestro cómo descubrir una función oculta simulada noisey=x12+sin(x2π)+2∗x3∗x4+
Por último, el código de parcelas de dependencia parcial codificado por A.Liaw descrito por J.Friedman. Que hacen bien para los efectos principales.
fuente
Para complementar estas excelentes respuestas, mencionaría el uso de árboles potenciados en gradiente (por ejemplo, el paquete GBM en R ). En R, prefiero esto a bosques aleatorios porque se permiten valores faltantes en comparación con randomForest donde se requiere imputación. La importancia variable y los gráficos parciales están disponibles (como en randomForest) para ayudar en la selección de características y la exploración de transformación no lineal en su modelo logit. Además, la interacción variable se aborda con el estadístico H de Friedman (
interact.gbm
) con referencia dada comoJ.H. Friedman and B.E. Popescu (2005). “Predictive Learning via Rule Ensembles.” Section 8.1
. Una versión comercial llamada TreeNet está disponible en Salford Systems y esta presentación de video habla de su opinión sobre el video de estimación de interacción variable .fuente
Respuesta tardía, pero me encontré con un paquete R reciente
forestFloor
(2015) que te ayuda a realizar esta tarea de "desbloqueo" de manera automatizada. ¡Se ve muy prometedor!Produce las siguientes parcelas:
También proporciona visualización tridimensional si está buscando interacciones.
fuente
Como mencionó Zach, una forma de entender un modelo es trazar la respuesta a medida que varían los predictores. Puede hacer esto fácilmente para "cualquier" modelo con el paquete plotmo R. Por ejemplo
lo que da
Esto cambia una variable mientras mantiene a las otras en sus valores medios. Para tramas de interacción, cambia dos variables. (Nota agregada en noviembre de 2016:
plotmo
ahora también admite parcelas de dependencia parcial).El ejemplo anterior usa solo dos variables; Los modelos más complicados se pueden visualizar de manera gradual mirando una o dos variables a la vez. Dado que las "otras" variables se mantienen en sus valores medios, esto muestra solo una porción de los datos, pero aún puede ser útil. Algunos ejemplos se encuentran en la viñeta del paquete plotmo . Otros ejemplos se encuentran en el Capítulo 10 de Trazado de árboles rpart con el paquete rpart.plot .
fuente
Estoy muy interesado en este tipo de preguntas yo mismo. Creo que hay mucha información que podemos obtener de un bosque aleatorio.
Sobre las interacciones, parece que Breiman y Cultier ya han tratado de analizarlo, especialmente para las RF de clasificación.
Que yo sepa, esto no se ha implementado en el paquete randomForest R. Tal vez porque podría no ser tan simple y porque el significado de "interacciones variables" depende mucho de su problema.
Acerca de la no linealidad, no estoy seguro de lo que está buscando, los bosques de regresión se usan para problemas de regresión múltiple no lineal sin antecedentes sobre qué tipo de función no lineal usar.
fuente
Al final del juego, pero hay algunos desarrollos nuevos en este frente, por ejemplo, LIME y SHAP . También un paquete que vale la pena verificar es DALEX (en particular si usa R pero en cualquier caso contiene buenas hojas de trucos, etc.), aunque no parece cubrir las interacciones en este momento. Y estos son todos independientes del modelo, por lo que funcionarán para bosques aleatorios, GBM, redes neuronales, etc.
fuente
Una ligera modificación de los bosques aleatorios que proporcionan más información sobre los datos son los métodos forestales causales desarrollados recientemente. Vea el paquete GRF R y el documento motivador aquí . La idea es usar los métodos de referencia aleatorios del bosque para encontrar heterogeneidad en los efectos causales.
Un artículo anterior ( aquí ) ofrece un enfoque detallado de un bosque causal simple. La página 9 del documento ofrece un procedimiento paso a paso para cultivar un árbol causal, que luego puede expandirse a un bosque de la manera habitual.
Ecuación 4:
Ecuación 5:
fuente
Respuesta tardía relacionada con mi pregunta aquí ( ¿Podemos hacer que Random Forest sea 100% interpretable arreglando la semilla? ):
fuente