Existe-t-il un moyen d'expliquer une prédiction à partir d'un modèle forestier aléatoire?

11

Disons que j'ai un modèle de classification prédictif basé sur une forêt aléatoire (en utilisant le package randomForest dans R). Je voudrais le configurer pour que les utilisateurs finaux puissent spécifier un élément pour lequel générer une prédiction, et cela produira une probabilité de classification. Jusqu'à présent, aucun problème.

Mais il serait utile / cool de pouvoir sortir quelque chose comme un graphique d'importance variable, mais pour l'élément spécifique prévu, pas pour l'ensemble d'entraînement. Quelque chose comme:

L'article X devrait être un chien (73% de chances)
Parce que:
Jambes = 4
Souffle = mauvaise
fourrure = court
Nourriture = méchant

Tu obtiens le point. Existe-t-il un moyen standard, ou du moins justifiable, d'extraire ces informations d'une forêt aléatoire formée? Si oui, quelqu'un a-t-il du code qui le fera pour le package randomForest?

Harlan
la source
Un peu de complexité ... Vous pourriez imaginer compter le nombre de fois que la variable Legs faisait partie du chemin de décision. Mais le feriez-vous seulement pour les arbres qui ont prédit la réponse majoritaire, ou pour tous? Ou la différence?
Harlan
Et changer tous les mprédicteurs un par un et chercher à voir comment la forêt prédit différemment semble un peu cher. Il doit y avoir un meilleur moyen.
Harlan
ma première pensée a été de me demander en quoi ce que vous voulez faire diffère de l'importance variable des données d'entraînement? Cherchez-vous à dire que compte tenu des autres valeurs telles qu'elles étaient, quelle était la sensibilité de la prédiction sur les jambes = 4 par rapport aux jambes = 2 ou aux jambes = 0? Avez-vous regardé la fonction de tracé partiel dans le package randomforest?
B_Miner
L'importance variable est généralement définie en fonction de l'ensemble de la formation (ou de la population supposée, ou quelque chose). Mais ce que je veux, c'est l'importance variable pour un seul élément prédit. Imaginez un cas où la forêt est constituée d'arbres de décision très déséquilibrés. L'instance de test 1 pourrait être expliquée par 1 ou très peu de nœuds de décision, tandis que l'instance de test 2 pourrait être expliquée par un ensemble beaucoup plus important de nœuds de décision. Je veux une version très simple et interprétable par l'homme de cela, comme un ensemble de décisions classées, dont je peux fournir le top 5. Pour un seul arbre de décision, je les lirais simplement.
Harlan

Réponses:

3

La première idée consiste simplement à imiter la stratégie d'élimination à partir d'une importance variable et à tester comment le mélange de chaque attribut dégénérera la confiance de la forêt dans la classification des objets (sur OOB et avec certaines répétitions évidemment). Cela nécessite un certain codage, mais est certainement réalisable.

Cependant, je pense que c'est juste une mauvaise idée - le résultat sera probablement variable comme l'enfer (sans stabiliser l'impact de la moyenne sur les objets), bruyant (pour les objets pas si confiants que les attributs absurdes pourraient avoir de gros impacts) et difficile à interpréter (deux ou plusieurs règles coopératives d'attribut entraîneront probablement des impacts aléatoires de chaque attribut contributif).

Pour ne pas vous laisser de réponse négative, je préfère essayer de regarder la matrice de proximité et les archétypes possibles qu'elle peut révéler - cela semble beaucoup plus stable et simple.


la source
Le point règles coopératives / prédicteurs corrélés est une excellente critique. Pour que cela fonctionne, il pourrait être nécessaire de former le RF sur une sorte d'ensemble de variables prédéfinies, ou d'incorporer une sorte de stratégie de pénalisation pour amener le RF à se concentrer sur un sous-ensemble de prédicteurs.
Harlan
0

J'essaierais avec le framework Lime .

Il fonctionne avec de nombreux modèles (y compris la forêt aléatoire). Il peut être utilisé pour une interprétation locale (c'est-à-dire expliquer une seule prédiction) ou pour une interprétation globale (c'est-à-dire expliquer un modèle entier).

Citant de l'asbtract

Dans ce travail, nous proposons LIME, une nouvelle technique d'explication qui explique les prédictions de tout classificateur de manière interprétable et fidèle, en apprenant un modèle interprétable localement autour de la prédiction. Nous proposons également une méthode pour expliquer les modèles en présentant des prédictions individuelles représentatives et leurs explications de manière non redondante, encadrant la tâche comme un problème d'optimisation sous-modulaire.

Il a des packages à la fois pour R et python , et de nombreux exemples si vous le recherchez sur Google.

PolBM
la source