Si je lance un randomForest
modèle, je peux alors faire des prédictions basées sur ce modèle. Existe-t-il un moyen d’obtenir un intervalle de prévision de chacune des prévisions de sorte que je sache à quel point le modèle est sûr de sa réponse. Si cela est possible, est-il simplement basé sur la variabilité de la variable dépendante pour l'ensemble du modèle ou aura-t-il des intervalles plus larges et plus étroits en fonction de l'arbre de décision particulier suivi pour une prédiction particulière?
r
confidence-interval
random-forest
Dean MacGregor
la source
la source
score
fonction permettant d’évaluer les performances. Étant donné que le résultat est basé sur le vote majoritaire des arbres de la forêt, en cas de classification, il vous donnera une probabilité que ce résultat soit vrai, sur la base de la distribution des votes. Je ne suis toutefois pas sûr de la régression ... Quelle bibliothèque utilisez-vous?Réponses:
Ceci est en partie une réponse à @Sashikanth Dareddy (car cela ne rentrera pas dans un commentaire) et en partie à une réponse au message original.
Rappelez-vous ce qu'est un intervalle de prédiction, c'est un intervalle ou un ensemble de valeurs où nous prédisons que les observations futures se trouveront. Généralement, l’intervalle de prédiction comprend 2 éléments principaux qui déterminent sa largeur, l’un représentant l’incertitude concernant la moyenne prédite (ou tout autre paramètre), l’intervalle de confiance, et l’autre représentant la variabilité des observations individuelles autour de cette moyenne. L’intervalle de confiance est assez robuste du fait du théorème de la limite centrale et, dans le cas d’une forêt aléatoire, l’amorçage aide également. Mais l'intervalle de prédiction dépend entièrement des hypothèses sur la répartition des données en fonction des variables de prédicteur. Le CLT et l'amorçage n'ont aucun effet sur cette partie.
L'intervalle de prédiction doit être plus large, l'intervalle de confiance correspondant étant également plus large. Les hypothèses sur une variance égale ou non qui affectent la largeur de l'intervalle de prévision sont également liées à la connaissance du chercheur, et non au modèle de forêt aléatoire.
Un intervalle de prédiction n'a pas de sens pour un résultat catégorique (vous pouvez faire un ensemble de prédiction plutôt qu'un intervalle, mais la plupart du temps, ce ne serait probablement pas très informatif).
Nous pouvons voir certains des problèmes liés aux intervalles de prédiction en simulant des données pour lesquelles nous connaissons la vérité exacte. Considérez les données suivantes:
Ces données particulières suivent les hypothèses pour une régression linéaire et sont assez simples pour un ajustement aléatoire de forêt. Nous savons d'après le modèle "vrai" que, lorsque les deux prédicteurs valent 0, que la moyenne est égale à 10, nous savons également que les points individuels suivent une distribution normale avec un écart-type de 1. Cela signifie que l'intervalle de prédiction de 95% basé sur une connaissance parfaite pour ces points seraient de 8 à 12 (bien en fait de 8,04 à 11,96, mais l’arrondi le rend plus simple). Tout intervalle de prédiction estimé doit être plus large que prévu (ne pas disposer d'informations parfaites ajoute de la largeur à compenser) et inclure cette plage.
Regardons les intervalles de régression:
Nous pouvons constater qu'il existe une certaine incertitude dans les moyennes estimées (intervalle de confiance), ce qui nous donne un intervalle de prédiction plus large (mais comprenant) la plage de 8 à 12.
Examinons maintenant l'intervalle basé sur les prévisions individuelles d'arbres individuels (nous devrions nous attendre à ce qu'elles soient plus larges, car la forêt aléatoire ne bénéficie pas des hypothèses (que nous savons être vraies pour ces données) comme le fait la régression linéaire):
Les intervalles sont plus larges que les intervalles de prédiction de régression, mais ils ne couvrent pas toute la plage. Ils incluent les vraies valeurs et peuvent donc être légitimes en tant qu'intervalles de confiance, mais ils ne font que prédire où se trouve la moyenne (valeur prédite) sans l'élément supplémentaire pour la distribution autour de cette moyenne. Pour le premier cas où x1 et x2 sont tous deux égaux à 0, les intervalles ne descendent pas au-dessous de 9,7, ce qui est très différent de l'intervalle de prédiction véritable qui descend à 8. Si nous générons de nouveaux points de données, il y aura plusieurs points (beaucoup plus moins de 5%) qui se trouvent dans les intervalles vrais et de régression, mais ne tombent pas dans les intervalles aléatoires de forêt.
Pour générer un intervalle de prédiction, vous devez émettre de fortes hypothèses sur la répartition des points individuels autour des moyennes prédites. Vous pouvez ensuite prendre les prédictions des arbres individuels (l’intervalle de confiance initialisé), puis générer une valeur aléatoire à partir de la valeur supposée. distribution avec ce centre. Les quantiles de ces pièces générées peuvent constituer l'intervalle de prédiction (mais je le testerais quand même, vous devrez peut-être répéter le processus plusieurs fois et combiner).
Voici un exemple de cela en ajoutant des écarts normaux (puisque nous savons que les données d'origine utilisaient un comportement normal) aux prévisions avec l'écart type basé sur la MSE estimée à partir de cet arbre:
Ces intervalles contiennent ceux qui sont basés sur une connaissance parfaite. Mais ils dépendront grandement des hypothèses retenues (les hypothèses sont valables ici car nous avons utilisé la connaissance de la manière dont les données ont été simulées, elles risquent de ne pas être aussi valables dans les cas réels). Je voudrais encore répéter les simulations plusieurs fois pour des données qui ressemblent davantage à vos données réelles (mais simulées afin que vous sachiez la vérité) plusieurs fois avant de faire pleinement confiance à cette méthode.
la source
Je me rends compte que c’est un vieux billet, mais j’ai fait quelques simulations à ce sujet et je pense partager mes conclusions.
@GregSnow a publié un article très détaillé à ce sujet, mais je pense que lorsqu'il calculait l'intervalle à l'aide de prédictions d'arbres individuels, il examinait qui ne représente qu'un intervalle de prédiction de 70%. Nous devons examiner pour obtenir l'intervalle de prédiction de 95%.[ μ + 1,96 * σ , μ - 1,96 * σ ][ μ + σ, μ - σ] [ Μ + 1,96 * σ, Μ - 1,96 * σ]
En apportant cette modification au code @GregSnow, nous obtenons les résultats suivants
Maintenant, en comparant ces intervalles avec les intervalles générés en ajoutant un écart normal aux prédictions avec un écart type, comme MSE comme @GregSnow l’a suggéré,
L'intervalle entre ces deux approches semble maintenant très proche. Le tracé de l'intervalle de prédiction pour les trois approches par rapport à la distribution d'erreur dans ce cas est présenté ci-dessous.
Maintenant, relançons la simulation, mais cette fois en augmentant la variance du terme d'erreur. Si nos calculs d’intervalle de prédiction sont bons, nous devrions nous retrouver avec des intervalles plus larges que ce que nous avons obtenu plus haut.
Cela montre clairement que le calcul des intervalles de prédiction par la deuxième approche est beaucoup plus précis et donne des résultats assez proches de l'intervalle de prédiction de la régression linéaire.
En prenant l'hypothèse de la normalité, il existe un autre moyen plus facile de calculer les intervalles de prédiction à partir d'une forêt aléatoire. Nous avons la valeur prédite ( ) et l'erreur quadratique moyenne ( ) de . Donc, la prédiction de chaque arbre individuel peut être considérée comme . En utilisant les propriétés de distribution normales, notre prédiction à partir de la forêt aléatoire aurait la distribution . En appliquant ceci à l'exemple que nous avons discuté ci-dessus, nous obtenons les résultats ci-dessous M S E i N ( μ i , R M S E i ) N ( Σ μ i / n , Σ R M S E i / n )μje MSEje N( μje, R MSEje) N( ∑ μje/ n,∑RMSEje/ n)
Celles-ci correspondent très bien aux intervalles du modèle linéaire et à l'approche suggérée par @GregSnow. Mais notez que l’hypothèse sous-jacente dans toutes les méthodes que nous avons discutées est que les erreurs suivent une distribution normale.
la source
Si vous utilisez R, vous pouvez facilement produire des intervalles de prédiction pour les prédictions d’une régression aléatoire de forêts: il suffit d’utiliser le paquet
quantregForest
(disponible au CRAN ) et de lire le document de N. Meinshausen sur la manière dont on peut inférer des quantiles conditionnels avec des forêts de régression de quantiles et comment. peut être utilisé pour construire des intervalles de prédiction. Très instructif même si vous ne travaillez pas avec R!la source
C'est facile à résoudre avec randomForest.
Permettez-moi d'abord de traiter de la tâche de régression (en supposant que votre forêt compte 1 000 arbres). Dans la
predict
fonction, vous avez la possibilité de renvoyer les résultats des arbres individuels. Cela signifie que vous recevrez une sortie de 1000 colonnes. Nous pouvons prendre la moyenne des 1000 colonnes pour chaque ligne - il s’agit de la sortie normale que RF aurait produite de toute façon. Maintenant, pour obtenir l’intervalle de prédiction, disons +/- 2 std. les écarts, tout ce que vous devez faire est, pour chaque ligne, à partir des 1000 valeurs, calculer +/- 2 std. déviations et faites-en vos limites supérieure et inférieure sur votre prédiction.Deuxièmement, dans le cas de la classification, rappelez-vous que chaque arbre génère 1 ou 0 (par défaut) et que la somme sur les 1 000 arbres divisés par 1 000 donne la probabilité de classe (dans le cas de la classification binaire). Pour définir un intervalle de prédiction sur la probabilité, vous devez modifier la valeur min. nodesize option (voir la documentation randomForest pour le nom exact de cette option) une fois que vous lui attribuez la valeur >> 1, les arbres individuels produiront des nombres compris entre 1 et 0. À partir de là, vous pouvez répéter le processus décrit ci-dessus pour la tâche de régression.
J'espère que cela à du sens.
la source
J'ai essayé quelques options (tout cela en WIP):
En fait, j'ai fait de la variable dépendante un problème de classification avec les résultats sous forme de plages, au lieu d'une valeur unique. Les résultats que j'ai obtenus étaient médiocres, comparés à l'utilisation d'une valeur simple. J'ai abandonné cette approche.
Je l'ai ensuite convertie en plusieurs problèmes de classification, chacun représentant une limite inférieure pour la plage (le résultat étant que le modèle traverse ou non la limite inférieure), puis j'ai exécuté tous les modèles (~ 20), puis combiné le résultat pour obtenir une réponse finale sous forme de plage. Cela fonctionne mieux que 1 ci-dessus, mais pas aussi bon que j'en ai besoin. Je travaille toujours pour améliorer cette approche.
J'ai utilisé des estimations hors-programme et hors-programme pour décider si mes modèles sont bons ou mauvais.
la source
Le problème de la construction d'intervalles de prévision pour les prévisions aléatoires de forêt a été traité dans le document suivant:
Zhang, Haozhe, Joshua Zimmerman, Dan Nettleton et Daniel J. Nordman. "Intervalles de prédiction aléatoire des forêts." Le statisticien américain, 2019.
Le package R "rfinterval" est son implémentation disponible au CRAN.
Installation
Pour installer le package R rfinterval :
Usage
Démarrage rapide:
Exemple de données:
la source