Comment pourrais-je visualiser l'importance des différentes entrées dans les prévisions pour un modèle non linéaire à boîte noire?

9

Je crée un outil de prévision interactif (en python) pour aider à la prévision qui se fait dans mon organisation. À ce jour, le processus de prévision a été largement conduit par l'homme, les prévisionnistes assimilant les données dans leurs réseaux neuronaux naturels et utilisant leur intuition acquise pour faire des prédictions. À partir d'une vérification de prévision à long terme et d'une étude de modélisation prédictive que j'ai faite, j'ai trouvé ce à quoi vous pourriez vous attendre; différents prévisionnistes présentent des biais différents, les effets de certains prédicteurs semblent être surestimés et d'autres importants semblent être ignorés et, en général, les performances de prévision sont médiocres par rapport à des modèles empiriques relativement simples.

Les prévisions continueront d'être manuelles, mais j'essaie de construire un outil utile pour fournir aux prévisionnistes une meilleure quantification des effets relatifs des prédicteurs. Il y a aussi des effets importants tels que les influences saisonnières qui sont souvent négligés que j'aimerais que l'outil souligne à l'utilisateur. Je m'attends à un certain degré de réaction et de scepticisme à l'égard du processus de modélisation de certains des prévisionnistes les plus «expérimentés» (dont beaucoup ont peu de connaissances formelles des statistiques), donc la communication est au moins aussi importante et les performances du modèle lui-même en termes de obtenir une amélioration mesurable de la précision des prévisions.

Les modèles que je développe ont une forte composante auto-régressive qui est parfois modifiée de manière significative par des événements qui apparaissent sous forme de valeurs mesurées dans certains prédicteurs qui sont, pendant les périodes non-événementielles, proches de zéro. Cela correspond au modèle mental utilisé par les prévisionnistes. L'élément clé est de pouvoir démontrer laquelle des mesures «d'événement» est la plus influente pour éloigner la prédiction de la valeur autorégressive pour une prévision donnée. J'imagine le processus de cette façon; le prévisionniste devine sa meilleure valeur, le modèle en suggère une autre et le prévisionniste demande pourquoi. Le modèle répond quelque chose comme "voir ici, cette valeur de ce prédicteur augmente la valeur de prévision en été. Si c'était l'hiver, cela se déplacerait dans l'autre sens. Je sais qu'il y a ces autres mesures,

Maintenant, imaginez que le modèle était une simple régression linéaire. On pourrait imaginer afficher l '«effet» relatif des prédicteurs basés sur les événements en multipliant la valeur par le modèle co-efficace et en affichant un simple graphique à barres. Toutes les barres des différents prédicteurs totalisent l'écart total par rapport à la valeur AR, et cela montre succinctement et clairement ceux qui, dans ce cas, ont une forte influence.

Le problème est que le processus en cours de prévision affiche un degré élevé de non-linéarité dans les prédicteurs, ou du moins, j'ai eu beaucoup plus de succès avec les algorithmes d'apprentissage automatique non linéaire à boîte noire (forêt aléatoire et GBM) qu'avec les GLM pour cet ensemble de données. Idéalement, je voudrais pouvoir changer de façon transparente le modèle en travaillant `` sous le capot '' sans que l'expérience utilisateur ne change, j'ai donc besoin d'un moyen générique pour démontrer de manière simple l'importance des différentes mesures sans utiliser une approche spécifique à l'algorithme. Mon approche actuelle consistera à quasi-linéariser les effets en mettant toutes les valeurs à zéro, sauf pour un prédicteur, à enregistrer l'écart prévu et à répéter pour tous les prédicteurs, en affichant les résultats dans le graphique à barres mentionné ci-dessus. En présence d'une forte non-linéarité, cela peut ne pas fonctionner aussi bien.

Bogdanovist
la source
1
Avec quoi vous êtes-vous retrouvé - pourriez-vous afficher une photo ou deux? De plus, "mettre toutes les valeurs à zéro sauf pour un prédicteur" - ne voulez-vous pas le gradient autour des meilleures valeurs actuelles, pas autour de 0?
denis

Réponses:

4

Vous pouvez évaluer l'influence des prédicteurs sur les prévisions en estimant le gradient de la sortie par rapport aux prédicteurs. Cela peut être fait en estimant les dérivées partielles de la fonction de prédiction non linéaire par rapport à chacun des prédicteurs par différences finies.

Idéalement, vous le ferez sur les entrées de test réellement observées. Par exemple, vous pouvez faire la moyenne des valeurs absolues des gradients estimés sur toutes les entrées de test des 2 derniers jours. L'amplitude de ce gradient moyen peut être utilisée pour trier l'importance des prédicteurs. (Vous devrez faire attention à l'estimation du gradient pour utiliser les unités appropriées par la notation z ou une telle méthode.) Vous pouvez enregistrer ces gradients estimés par saison pour une analyse comparative.

Voir « Comment expliquer les décisions individuelles de classement », par David Baehrens et. Al. dans JMLR pour en savoir plus sur cette idée. L'article traite de la classification mais se généralise facilement à la régression également.

Innuo
la source
C'est fantastique! Une référence très utile qui sera utile pour ce numéro que j'ai et ailleurs.
Bogdanovist
2

Avez-vous essayé le module scikit-learn en python.

Vous pouvez "importance_ordinateur" pour les fonctionnalités de son randomForestClassifier

jf328
la source
1
Tout d'abord, j'ai également pensé que le calcul de l'importance des fonctionnalités pourrait être utile, mais en fin de compte, c'est une approche relativement médiocre quand on doit expliquer la valeur prédite pour une instance spécifique. L'importance des fonctionnalités ne fournit que de vagues indications aux experts humains.
steffen
De plus, le PO a demandé une approche indépendante du modèle ...
steffen
Le problème des mesures d'importance variable est qu'elles s'appliquent en moyenne à l'ensemble des données, plutôt que de vous dire ce qui était réellement important dans un cas particulier.
Bogdanovist
En fait, je pense que c'est une approche indépendante du modèle, vous pourriez en effet l'appliquer à d'autres classificateurs que les forêts aléatoires. Sur le site Web de Breiman, il y a une remarque subtile sur la façon dont vous pouvez calculer l'importance variable pour un seul cas. stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#varimp (dernière phrase) Je pense que cela n'a pas encore été étudié de manière approfondie, ou du moins largement testé. L'importance variable moyenne n'est pas toujours ce que vous voulez. Par exemple, ce n'est pas lorsque vous voulez aider un praticien à prendre une décision sur un cas. C'est un sujet vraiment intéressant.
Simone
Il y a un article intéressant où Breiman discute aussi un peu de cette méthode sur la régression logistique: "Modélisation statistique: les deux cultures". Une belle lecture. La phrase que j'aime le plus est: "Ma définition de l'importance d'une variable est basée sur la prédiction. Une variable peut être considérée comme importante si sa suppression affecte sérieusement la précision de la prédiction." Cette déclaration s'applique à tout classificateur que vous pourriez utiliser.
Simone