Les forêts aléatoires sont considérées comme des boîtes noires, mais récemment, je pensais quelles connaissances peuvent être obtenues à partir d'une forêt aléatoire.
La chose la plus évidente est l’importance des variables, dans la variante la plus simple, il suffit de calculer le nombre d’occurrences d’une variable.
La deuxième chose à laquelle je pensais, ce sont les interactions. Je pense que si le nombre d’arbres est suffisamment grand, le nombre d’occurrences de paires de variables peut être testé (quelque chose comme l’indépendance du chi carré). La troisième chose sont les non linéarités de variables. Ma première idée consistait simplement à regarder un graphique d’un score Vs variable, mais je ne suis pas encore sûr que cela ait un sens.
Ajouté 23.01.2012
Motivation
Je souhaite utiliser ces connaissances pour améliorer un modèle logit. Je pense (ou du moins j'espère) qu'il est possible de trouver des interactions et des non-linéarités négligées.
la source
Réponses:
Les forêts aléatoires sont à peine une boîte noire. Ils sont basés sur des arbres de décision, très faciles à interpréter:
Cela donne un arbre de décision simple:
Si Petal.Length <4,95, cette arborescence classe l’observation dans la catégorie "autre". S'il est supérieur à 4,95, l'observation est classée comme "virginica". Une forêt aléatoire est une simple collection de nombreux arbres de ce type, où chacun est formé sur un sous-ensemble aléatoire de données. Chaque arbre "vote" ensuite sur le classement final de chaque observation.
Vous pouvez même extraire des arbres individuels de la radio et regarder leur structure. Le format est légèrement différent de celui des
rpart
modèles, mais vous pouvez inspecter chaque arbre si vous le souhaitez et voir comment il modélise les données.De plus, aucun modèle n'est vraiment une boîte noire, car vous pouvez examiner les réponses prévues par rapport aux réponses réelles pour chaque variable de l'ensemble de données. C'est une bonne idée quel que soit le type de modèle que vous construisez:
J'ai normalisé les variables (longueur et largeur des sépales et des pétales) sur une plage de 0 à 1. La réponse est également 0-1, 0 étant autre et 1 virginica. Comme vous pouvez le constater, la forêt aléatoire est un bon modèle, même sur l’ensemble de tests.
De plus, une forêt aléatoire calculera diverses mesures d'importance variable, ce qui peut être très informatif:
Ce tableau représente combien le fait de supprimer chaque variable réduit la précision du modèle. Enfin, il existe de nombreux autres tracés que vous pouvez créer à partir d'un modèle de forêt aléatoire pour voir ce qui se passe dans la boîte noire:
Vous pouvez afficher les fichiers d'aide de chacune de ces fonctions pour avoir une meilleure idée de ce qu'ils affichent.
la source
Il y a quelque temps, j'ai dû justifier un ajustement de modèle RF à certains chimistes de mon entreprise. J'ai passé pas mal de temps à essayer différentes techniques de visualisation. Au cours du processus, j’ai aussi accidentellement mis au point de nouvelles techniques que j’ai intégrées dans un package R ( forestFloor ) spécifiquement pour la visualisation aléatoire de forêts.
L'approche classique consiste en des diagrammes de dépendance partielle supportés par: Rminer (l'analyse de sensibilité basée sur les données est une dépendance partielle réinventée), ou partialPlot dans le package randomForest . Je trouve le paquet de dépendance partielle iceBOX comme un moyen élégant de découvrir les interactions. Je n'ai pas utilisé le paquet edarf , mais semble avoir de belles visualisations dédiées à RF. Le package ggRandomForest contient également un grand nombre de visualisations utiles.
Actuellement, forestFloor prend en charge les objets randomForest (la prise en charge d'autres implémentations RF est en cours). Des contributions peuvent également être calculées pour les arbres boostés par gradient, étant donné que ces arbres après leur entraînement ne sont pas très différents des arbres forestiers aléatoires. Ainsi, forestFloor pourrait prendre en charge XGBoost à l’avenir. Les diagrammes de dépendance partielle sont complètement invariants au modèle.
Tous les packages ont en commun de visualiser la structure de mappage géométrique d'un modèle, de l'espace des fonctions à l'espace cible. Une courbe sinusoïdale y = sin (x) serait une application de x à y et peut être tracée en 2D. Tracer directement un mappage RF nécessiterait souvent trop de dimensions. Au lieu de cela, la structure de cartographie globale peut être projetée, découpée en tranches ou décomposée, de sorte que toute la structure de cartographie se résume en une séquence de tracés marginaux 2D. Si votre modèle RF a uniquement capturé les effets principaux et aucune interaction entre les variables, les méthodes de visualisation classiques conviendront parfaitement. Ensuite, vous pouvez simplifier la structure de votre modèle comme ceci:y=F(X)≈f1(x1)+f2(x2)+...+fd(xd) . Ensuite, chaque fonction partielle de chaque variable peut être visualisée comme une courbe sinusoïdale. Si votre modèle RF a capturé des interactions considérables, il est alors plus problématique. Les tranches 3D de la structure permettent de visualiser les interactions entre deux entités et la sortie. Le problème est de savoir quelle combinaison de fonctionnalités doit être visualisée ( iceBOX résout ce problème). De plus, il n'est pas facile de dire si d'autres interactions latentes ne sont toujours pas prises en compte.
Dans cet article , j’ai utilisé une version très ancienne de forestFloor pour expliquer quelle relation biochimique réelle un très petit modèle RF avait capturé. Et dans cet article, nous décrivons en détail les visualisations des contributions des entités, Visualisations de sol forestier de forêts aléatoires .
J'ai collé l'exemple simulé du paquet forestFloor, dans lequel je montre comment découvrir une fonction masquée simulée bruity=x12+sin(x2π)+2∗x3∗x4+
Enfin, le code des diagrammes de dépendance partielle codé par A.Liaw décrit par J.Friedman. Ce qui convient pour les effets principaux.
la source
Pour compléter ces réponses précises, je mentionnerais l’utilisation d’arbres à gradient renforcé (par exemple, le paquetage GBM dans R ). Dans R, je préfère ceci aux forêts aléatoires car les valeurs manquantes sont autorisées par rapport à randomForest où l'imputation est requise. Des graphes d'importance variable et partiels sont disponibles (comme dans randomForest) pour vous aider à sélectionner des fonctionnalités et à explorer la transformation non linéaire dans votre modèle logit. En outre, l’interaction variable est traitée avec la statistique H de Friedman (
interact.gbm
), la référence étant donnée parJ.H. Friedman and B.E. Popescu (2005). “Predictive Learning via Rule Ensembles.” Section 8.1
. Une version commerciale appelée TreeNet est disponible chez Salford Systems et cette présentation vidéo décrit leur interprétation de la vidéo d' estimation par interaction variable .la source
Réponse tardive, mais je suis tombé sur un ensemble récent de R
forestFloor
(2015) qui vous aide à faire cette tâche « unblackboxing » de façon automatisée. Cela semble très prometteur!Produit les parcelles suivantes:
Il fournit également une visualisation en trois dimensions si vous recherchez des interactions.
la source
Comme mentionné par Zach, une façon de comprendre un modèle consiste à tracer la réponse à mesure que les prédicteurs varient. Vous pouvez le faire facilement pour "n'importe quel" modèle avec le package plotmo R. Par exemple
qui donne
Cela change une variable tout en maintenant les autres à leurs valeurs médianes. Pour les diagrammes d'interaction, deux variables sont modifiées. (Remarque ajoutée en novembre 2016: prend
plotmo
désormais également en charge les tracés de dépendance partiels.)L'exemple ci-dessus utilise seulement deux variables; Des modèles plus compliqués peuvent être visualisés de manière fragmentée en examinant une ou deux variables à la fois. Puisque les "autres" variables sont maintenues à leurs valeurs médianes, cela ne montre qu'une tranche des données, mais peut toujours être utile. Quelques exemples sont dans la vignette du paquet plotmo . Vous trouverez d'autres exemples au chapitre 10 de la section Tracer des arbres rpart avec le package rpart.plot .
la source
Je suis très intéressé par ce type de questions moi-même. Je pense qu'il y a beaucoup d'informations que nous pouvons extraire d'une forêt aléatoire.
À propos des interactions, il semble que Breiman et Cultier aient déjà essayé de s’y intéresser, en particulier pour les RF de classification.
À ma connaissance, cela n’a pas été implémenté dans le package randomForest R. Peut-être parce que cela n’est peut-être pas aussi simple et que la signification de "interactions variables" est très dépendante de votre problème.
En ce qui concerne la non-linéarité, je ne sais pas ce que vous recherchez, les forêts de régression sont utilisées pour les problèmes de régression multiple non linéaires sans aucun préalable sur le type de fonction non linéaire à utiliser.
la source
En fin de partie, mais il y a de nouveaux développements dans ce domaine, par exemple LIME et SHAP . Un paquet à vérifier également est DALEX (en particulier si vous utilisez R mais contient en tout cas de jolis cheatsheets, etc.), mais ne semble pas couvrir les interactions pour le moment. Et ceux-ci sont tous agnostiques envers les modèles, ils fonctionneront donc pour les forêts aléatoires, les GBM, les réseaux de neurones, etc.
la source
Les méthodes de forêt causale développées récemment constituent une légère modification des forêts aléatoires fournissant davantage d'informations sur les données. Voir le paquet GRF R et le papier de motivation ici . L'idée est d'utiliser les méthodes de base de la forêt aléatoire pour trouver l'hétérogénéité des effets causals.
Un article précédent ( ici ) donne une approche détaillée d’une forêt causale simple. La page 9 du document décrit une procédure étape par étape pour la croissance d'un arbre causal, qui peut ensuite être étendu à une forêt de la manière habituelle.
Équation 4:
Équation 5:
la source
Réponse tardive liée à ma question ici ( Pouvons-nous rendre Random Forest 100% interprétable en réparant la graine? ):
la source