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.
fuente
Respuestas:
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.
fuente
¿Has probado el módulo scikit-learn en python?
Puedes "computer_importance" para las características de su randomForestClassifier
fuente