Le nombre optimal d'arbres dans une forêt aléatoire dépend-il du nombre de prédicteurs?


46

Quelqu'un peut-il expliquer pourquoi nous avons besoin d'un grand nombre d'arbres dans une forêt aléatoire lorsque le nombre de prédicteurs est grand? Comment pouvons-nous déterminer le nombre optimal d'arbres?

Réponses:


70

Une forêt aléatoire utilise la mise en sac (sélectionner un échantillon d'observations plutôt que toutes) et la méthode du sous-espace aléatoire (choisir un échantillon de caractéristiques plutôt que toutes, en d'autres termes - attribuer la mise en sac ) pour faire pousser un arbre. Si le nombre d'observations est grand mais que le nombre d'arbres est trop petit, certaines observations ne seront prédites qu'une fois, voire pas du tout. Si le nombre de prédicteurs est grand mais que le nombre d'arbres est trop petit, alors certaines caractéristiques peuvent (théoriquement) être omises dans tous les sous-espaces utilisés. Les deux cas entraînent une diminution du pouvoir prédictif aléatoire des forêts. Mais le dernier cas est un cas assez extrême, puisque la sélection du sous-espace est effectuée à chaque nœud.

Pendant la classification, la dimensionnalité du sous-espace est (plutôt petit,pest le nombre total de prédicteurs) par défaut, mais un arbre contient de nombreux nœuds. Lors de la régression, la dimensionnalité du sous-espace estp/3(assez grand) par défaut, bien qu'un arbre contienne moins de nœuds. Ainsi, le nombre optimal d’arbres dans une forêt aléatoire ne dépend du nombre de prédicteurs que dans des cas extrêmes.ppp/3

ntreekeep.inbagnn1ntree


-2

Conformément à cet article

Ils suggèrent qu'une forêt aléatoire devrait avoir un nombre d'arbres compris entre 64 et 128 arbres . Avec cela, vous devriez avoir un bon équilibre entre la AUC ROC et le temps de traitement.


10
Il semble étrange que leurs résultats ne dépendent pas du nombre d'entités dans l'ensemble de données ...
naught101

-5

Je veux ajouter quelque chose si vous avez plus de 1000 fonctionnalités vous et 1000 lignes que vous ne pouvez pas prendre simplement un nombre rond d'arbre.

Je suggère que vous deviez d’abord détecter le nombre de processeurs et de RAM avant d’essayer de lancer la validation croisée pour trouver le rapport entre eux et le nombre d’arbres.

si vous utilisez sikit learn en python, vous avez la possibilité n_jobs=-1d'utiliser tous les processus, mais le coût de chaque copie de base de données, après quoi, vous pouvez utiliser cette formule.

ntree = sqrt (nombre de lignes * nombre de colonnes) / nombredefu


6
Je pense que vous devez modifier ceci pour fournir des preuves et une justification pour vos déclarations.
mdewey
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.