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 x
sont échantillonnés indépendamment d'une distribution normale, sd = 1, moyenne = 1
Ytotal = Ysignal + Yerror
où 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.variables
entre 1 et 20
ntree
toujours 1000
sample_replacement
toujours true
mtry
est n.obs
noise.factor
compris 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 TEV
augmentations en général lorsqu'elle samplesize
diminue lorsqu'elle TEV
est inférieure à 50% et qu'elle diminue lorsqu'elle TEV
est supérieure à 50%.
Ainsi, si vos randomForest-modelfit
rapports, 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.