我用一些随机参数设置在一夜之间运行了 4500 个随机森林:
Ysignal = x1^2+sin(x2*pi) + x3 * x4 + x5
任何x
独立于正态分布的样本的回归问题,sd=1,mean=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
数据集是从回归问题中采样的,添加的噪声
是1 到 20n.obs
之间的 1000 到 5000 之间的随机数
n.extra.dummy.variables
ntree
总是 1000
sample_replacement
总是true
mtry
是 5 到 25,限制n.obs
noise.factor
在 0 到 9 之间
samplesize.ratio
一个介于 10% 和 100% 之间的随机数,每个 bootstrap 的比例大小
所有模型都接受过类似的训练rfo = randomForest(x=X, y=Ytotal, <more args>)
,randomForest.performance
它能够解释TEV
通常当小于 50%时samplesize
降低而高于 50% 时降低的最高比例。TEV
TEV
因此,如果您的报告(例如,OOB-CV 解释了 15% 的方差),并且这对您来说是可接受的模型精度,那么您可能可以通过将观察次数randomForest-modelfit
降低到三分之一来稍微提高性能,给定.sampsize
ntree > 1000
士气:对于非常嘈杂的数据,最好对树进行去相关而不是通过生长最大尺寸的树来降低偏差。