Existe-t-il une formule ou une règle pour déterminer la taille sampSize correcte pour une forêt aléatoire?

13

Je joue avec randomForest et j'ai constaté qu'en augmentant généralement sampSize, les performances étaient meilleures. Existe-t-il une règle / formule / etc. qui suggère quelle devrait être la taille optimale de sampSize ou s'agit-il d'un essai et d'une erreur? Je suppose qu'une autre façon de le formuler; quels sont mes risques de taille trop petite ou trop grande (sur-ajustement?)?


Cette question fait référence à l'implémentation R de la forêt aléatoire dans le randomForestpackage. La fonction randomForesta un paramètre sampSizequi est décrit dans la documentation comme

Taille (s) de l'échantillon à prélever. Pour la classification, si sampsize est un vecteur de la longueur du nombre de strates, alors l'échantillonnage est stratifié par strates, et les éléments de sampsize indiquent les nombres à tirer des strates.

screechOwl
la source

Réponses:

21

En général, la taille de l'échantillon pour une forêt aléatoire agit comme un contrôle sur le "degré de caractère aléatoire" impliqué, et donc comme un moyen d'ajuster le compromis biais-variance. L'augmentation de la taille de l'échantillon se traduit par une forêt "moins aléatoire", et a donc tendance à sur-ajuster. La diminution de la taille de l'échantillon augmente la variation des arbres individuels dans la forêt, empêchant le sur-ajustement, mais généralement au détriment des performances du modèle. Un effet secondaire utile est que des tailles d'échantillon inférieures réduisent le temps nécessaire pour former le modèle.

La règle générale habituelle pour la meilleure taille d'échantillon est un "échantillon bootstrap", un échantillon de taille égale à l'ensemble de données d'origine, mais sélectionné avec remplacement, de sorte que certaines lignes ne sont pas sélectionnées et d'autres sont sélectionnées plus d'une fois. Cela fournit généralement des performances presque optimales et est la valeur par défaut dans l'implémentation R standard. Cependant, vous pouvez constater dans des applications réelles que l'ajustement de la taille de l'échantillon peut améliorer les performances. En cas de doute, sélectionnez la taille d'échantillon appropriée (et d'autres paramètres du modèle) à l'aide de la validation croisée.

Martin O'Leary
la source
2

J'ai exécuté 4500 forêts aléatoires pendant la nuit avec des réglages de paramètres aléatoires:

Problème de régression Ysignal = x1^2+sin(x2*pi) + x3 * x4 + x5 où certains xsont échantillonnés indépendamment d'une distribution normale, sd = 1, moyenne = 1

Ytotal = Ysignal + Yerror

Yerror = rnorm(n.observations,sd=sd(Ysignal))*noise.factor

theoretical.explainable.variance"TEV" = var(Ysignal= / var(Ytotal)

randomForest.performance = explained.variance(OOB cross-validation) / TEV

des ensembles de données ont été échantillonnés à partir du problème de régression et le bruit ajouté n.obsétait un nombre aléatoire entre 1000 et 5000 n.extra.dummy.variablesentre 1 et 20

ntree toujours 1000

sample_replacement toujours true

mtryest n.obs noise.factorcompris entre 5 et 25, limité entre 0 et 9

samplesize.ratio un nombre aléatoire compris entre 10% et 100%, la taille du rapport de chaque bootstrap

tous les modèles ont été formés comme rfo = randomForest(x=X, y=Ytotal, <more args>)

la randomForest.performance, sa capacité à expliquer la fraction la plus élevée des TEVaugmentations en général lorsqu'elle samplesizediminue lorsqu'elle TEVest inférieure à 50% et qu'elle diminue lorsqu'elle TEVest supérieure à 50%.

Ainsi, si vos randomForest-modelfitrapports, par exemple 15% expliquaient la variance par OOB-CV, et qu'il s'agit d'une précision de modèle acceptable pour vous, alors vous pouvez probablement modifier les performances un peu plus haut en réduisant sampsizeà un tiers du nombre d'observations, étant donné ntree > 1000.

Moral : Pour les données très bruyantes, il est préférable de décorréler les arbres plutôt que de réduire le biais en augmentant les arbres de taille maximale.

Soren Havelund Welling
la source
1

Pour que les forêts aléatoires fonctionnent aussi bien dans les nouvelles données que dans les données d'apprentissage, la taille d'échantillon requise est énorme, représentant souvent 200 fois le nombre de fonctionnalités candidates . Voyez ici .

Frank Harrell
la source
2
Docteur Harrell, je pense que OP pose des questions sur la taille du rééchantillonnage utilisé pour construire chaque arbre individuel, plutôt que sur la taille totale de l'ensemble de données.
Sycorax dit Réintégrer Monica