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?
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?
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.
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=-1
d'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
la source