¿Hay alguna manera de explicar una predicción de un modelo forestal aleatorio?

11

Digamos que tengo un modelo de clasificación predictivo basado en un bosque aleatorio (usando el paquete randomForest en R). Me gustaría configurarlo para que los usuarios finales puedan especificar un elemento para generar una predicción y generará una probabilidad de clasificación. Hasta ahora, no hay problema.

Pero sería útil / genial poder generar algo como un gráfico de importancia variable, pero para el elemento específico que se predice, no para el conjunto de entrenamiento. Algo como:

Se predice que el artículo X es un perro (73% probable)
porque:
Piernas = 4
Aliento = mal
pelaje =
comida corta = desagradable

Tú entiendes. ¿Existe una forma estándar, o al menos justificable, de extraer esta información de un bosque aleatorio entrenado? Si es así, ¿alguien tiene un código que haga esto para el paquete randomForest?

Harlan
fuente
Alguna complejidad ... Podrías imaginar contar el número de veces que la variable Legs fue parte de la ruta de decisión. ¿Pero harías eso para los árboles que predijeron la respuesta de la mayoría, o para todos? O la diferencia?
Harlan
Y cambiar todos los mpredictores uno por uno y mirar para ver cómo el bosque predice de manera diferente parece algo costoso. Tiene que haber una mejor manera.
Harlan
mi primer pensamiento fue preguntarme en qué difiere lo que quiere hacer de la importancia variable de los datos de capacitación. ¿Está buscando decir que dados los otros valores como estaban, cuál era la sensibilidad de la predicción en las piernas = 4 versus las piernas = 2 o las piernas = 0? ¿Has mirado la función de trazado parcial en el paquete randomforest?
B_Miner
La importancia variable generalmente se define condicional en todo el conjunto de entrenamiento (o la población asumida, o algo así). Pero lo que quiero es la importancia variable para un solo elemento predicho. Imagine un caso en el que el bosque consiste en árboles de decisión muy asimétricos. La instancia de prueba 1 podría explicarse por 1 o muy pocos nodos de decisión, mientras que la instancia de prueba 2 podría explicarse por un conjunto mucho más grande de nodos de decisión. Quiero una versión muy simple e interpretable por humanos de eso, como un conjunto de decisiones clasificadas, las 5 mejores que puedo proporcionar. Para un solo árbol de decisión, solo los leería.
Harlan

Respuestas:

3

La primera idea es simplemente imitar la estrategia de eliminación de importancia variable y simplemente probar cómo mezclar cada atributo degenerará la confianza del bosque en la clasificación de objetos (en OOB y obviamente con algunas repeticiones). Esto requiere un poco de codificación, pero sin duda es posible.

Sin embargo, creo que es solo una mala idea: el resultado será probablemente variable como el infierno (sin estabilizar el impacto del promedio sobre los objetos), ruidoso (para objetos no tan seguros, los atributos sin sentido podrían tener grandes impactos) y difícil de interpretar (dos o más reglas cooperativas de atributos probablemente resultarán en impactos aleatorios de cada atributo contribuyente).

Para no dejarte con una respuesta negativa, preferiría tratar de ver la matriz de proximidad y los posibles arquetipos que puede revelar, esto parece mucho más estable y directo.


fuente
El punto cooperativo de reglas / predictores correlacionados es una excelente crítica. Para que esto funcione, podría ser necesario entrenar la RF en algún tipo de conjunto de variables reducido previamente, o incorporar algún tipo de estrategia de penalización para hacer que la RF se enfoque en un subconjunto de predictores.
Harlan
0

Lo intentaría con el marco de cal .

Funciona con muchos modelos (incluido el bosque aleatorio). Se puede usar para la interpretación local (es decir, para explicar una sola predicción) o para la interpretación global (es decir, para explicar un modelo completo).

Citando del extracto

En este trabajo, proponemos LIME, una técnica de explicación novedosa que explica las predicciones de cualquier clasificador de manera interpretable y fiel, al aprender un modelo interpretable localmente alrededor de la predicción. También proponemos un método para explicar modelos presentando predicciones individuales representativas y sus explicaciones de manera no redundante, enmarcando la tarea como un problema de optimización submodular.

Tiene paquetes para R y python , y muchos ejemplos si lo buscas en Google.

PolBM
fuente