¿Cómo podría visualizar la importancia de diferentes entradas para el pronóstico para un modelo no lineal de caja negra?

9

Estoy construyendo una herramienta de pronóstico interactivo (en python) como ayuda para el pronóstico que se realiza en mi organización. Hasta la fecha, el proceso de pronóstico ha sido impulsado en gran medida por los humanos, con los pronosticadores asimilando los datos en sus redes neuronales naturales y utilizando su intuición intuitiva para hacer predicciones. De un estudio de verificación predictiva a largo plazo y de modelos predictivos que he realizado, he encontrado lo que podría esperar; diferentes pronosticadores exhiben sesgos diferentes, los efectos de algunos predictores parecen ser exagerados y otros importantes parecen ignorarse y, en general, el desempeño del pronóstico es mediocre en comparación con modelos empíricos relativamente simples.

Los pronósticos seguirán siendo manuales, pero estoy tratando de construir una herramienta útil para proporcionar a los pronosticadores una mejor cuantificación de los efectos relativos de los predictores. También hay efectos importantes, como las influencias estacionales, que a menudo se pasan por alto y me gustaría que la herramienta resaltara para el usuario. Espero cierto grado de reacción y escepticismo sobre el proceso de modelado por parte de algunos de los pronosticadores más 'experimentados' (muchos de los cuales tienen poco conocimiento formal de estadísticas), por lo que la comunicación es al menos tan importante y el desempeño del modelo en sí mismo en términos de logrando una mejora medible en la precisión del pronóstico.

Los modelos que estoy desarrollando tienen un fuerte componente de autorregresión que a veces se modifica significativamente por eventos que se muestran como valores medidos en algunos predictores que, durante los momentos que no son eventos, son cercanos a cero. Esto concuerda con el modelo mental que usan los pronosticadores. La parte clave es poder demostrar cuáles de las mediciones de 'evento' son más influyentes para alejar la predicción del valor de regresión automática para cualquier pronóstico dado. Imaginé el proceso de esta manera; el pronosticador adivina su mejor valor de conjetura, el modelo sugiere uno diferente y el pronosticador pregunta por qué. El modelo responde algo así como "mira aquí, este valor de este predictor aumenta el valor pronosticado en verano. Si fuera invierno, se movería para otro lado. Sé que existen estas otras medidas,

Ahora, imagine que el modelo era una regresión lineal simple. Uno podría imaginar mostrar el "efecto" relativo de los predictores basados ​​en eventos multiplicando el valor por el coeficiente del modelo y visualizándolo como un simple gráfico de barras. Todas las barras de los diferentes predictores se suman a la desviación total del valor de AR, y esto muestra sucinta y claramente las que, en este caso, tienen una fuerte influencia.

El problema es que el proceso que se pronostica muestra un alto grado de no linealidad en los predictores, o al menos, he tenido mucho más éxito con algoritmos de aprendizaje automático no lineales de caja negra (bosque aleatorio y GBM) que con GLM para Este conjunto de datos. Idealmente, me gustaría poder cambiar sin problemas el modelo que funciona 'bajo el capó' sin que cambie la experiencia del usuario, por lo que necesito una forma genérica de demostrar de manera simple la importancia de las diferentes mediciones sin utilizar un enfoque específico de algoritmo. Mi enfoque actual será cuasi-linealizar los efectos estableciendo todos los valores a cero, excepto un predictor, registrar la desviación pronosticada y luego repetir para todos los predictores, mostrando los resultados en el gráfico de barras mencionado anteriormente. En presencia de una fuerte no linealidad, esto puede no funcionar tan bien.

Bogdanovist
fuente
1
¿Con qué terminaste? ¿Podrías poner una foto o dos? Además, "establecer todos los valores a cero excepto un predictor": ¿no desea que el gradiente se encuentre alrededor de los mejores valores actuales, no alrededor de todos los 0?
denis

Respuestas:

4

Una forma de evaluar la influencia del predictor en los pronósticos es estimar el gradiente de la salida con respecto a los predictores. Esto se puede hacer estimando las derivadas parciales de la función de predicción no lineal con respecto a cada uno de los predictores por diferencias finitas.

Lo ideal sería hacer esto en las entradas de prueba realmente observadas. Por ejemplo, puede promediar los valores absolutos de los gradientes estimados en todas las entradas de prueba en los 2 días anteriores. La magnitud de este gradiente promedio se puede usar para ordenar la importancia de los predictores. (Deberá tener cuidado con la estimación de gradiente para usar las unidades apropiadas mediante la calificación z o algún método similar). Puede guardar estos gradientes estimados por temporada para el análisis comparativo.

Ver " Cómo explicar las decisiones de clasificación individual ", por David Baehrens et. Alabama. en JMLR para más información sobre esta idea. El documento aborda la clasificación, pero también generaliza fácilmente a la regresión.

Innuo
fuente
¡Eso es fantástico! Una referencia muy útil que será útil para este problema que tengo y en otros lugares.
Bogdanovist
2

¿Has probado el módulo scikit-learn en python?

Puedes "computer_importance" para las características de su randomForestClassifier

jf328
fuente
1
Primero, también pensé que calcular la importancia de la característica podría ser útil, pero al final es un enfoque comparativamente pobre cuando se explicará el valor predicho para una instancia específica. La importancia de la característica solo ofrece pistas vagas para los expertos humanos.
steffen
Además, el OP solicitó un enfoque independiente modelo ...
steffen
El problema con las medidas de importancia variable es que se aplican a todo el conjunto de datos en promedio, en lugar de decirle lo que realmente era importante en un caso particular.
Bogdanovist
En realidad, creo que este es un enfoque independiente del modelo, de hecho podría aplicarlo a otros clasificadores que no sean bosques aleatorios. En el sitio web de Breiman hay un comentario sutil sobre cómo se puede calcular la importancia variable para un solo caso. stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#varimp (última oración) Creo que esto aún no se ha estudiado exhaustivamente, o al menos no se ha probado exhaustivamente. La importancia variable media no siempre es lo que quieres. Por ejemplo, no es cuando quiere ayudar a un profesional a tomar una decisión sobre un caso. Este es un tema realmente interesante.
Simone
Hay un artículo interesante en el que Breiman discute un poco sobre este método también en la regresión logística: "Modelización estadística: las dos culturas". Una buena lectura. La oración que más me gusta es: "Mi definición de importancia variable se basa en la predicción. Una variable podría considerarse importante si eliminarla afecta seriamente la precisión de la predicción". Esta declaración se aplica a cualquier clasificador que pueda usar.
Simone