是否有公式或规则来确定randomForest的正确sampSize?


13

我正在与randomForest一起玩,并且发现通常增加sampSize会导致更好的性能。是否有一条规则/公式/等建议最佳sampSize应该是什么,或者是反复试验的事情?我想这是另一种措辞方式。sampSize太小或太大(过度拟合)有什么风险?


这个问题是指randomForest软件包中随机森林的R实现。该函数randomForest具有一个参数sampSize,该参数在文档中描述为

要抽取的样本大小。对于分类,如果sampsize是长度为层数的向量,则将采样按层进行分层,并且sampsize的元素指示要从层中提取的数字。

Answers:


21

通常,随机森林的样本大小可作为对所涉及的“随机度”的控制,从而可以作为调整偏差-方差折衷的一种方式。样本数量的增加导致“随机性较低”的森林,因此有过度拟合的趋势。减少样本大小会增加森林中各个树木的差异,防止过度拟合,但通常会以模型性能为代价。一个有用的副作用是较小的样本量减少了训练模型所需的时间。

最佳样本大小的通常经验法则是“引导样本”,该样本大小与原始数据集相等,但通过替换选择,因此某些行未选中,而另一些行被多次选择。这通常提供接近最佳的性能,并且是标准R实施中的默认设置。但是,在实际应用程序中,您可能会发现调整样本大小可以提高性能。如有疑问,请使用交叉验证选择适当的样本量(和其他模型参数)。


2

我整夜使用一些随机参数设置运行了4500个随机森林:

回归问题Ysignal = x1^2+sin(x2*pi) + x3 * x4 + x5 ,其中任何x从正态分布采样独立,SD = 1,平均值= 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

数据集是从回归问题中取样的,附加噪声 n.obs是1000到5000 n.extra.dummy.variables之间的随机数, 介于1到20之间

ntree 总是1000

sample_replacement 总是 true

mtry是5到25,限制n.obs noise.factor在0到9之间

samplesize.ratio 每个引导程序的比例大小在10%到100%之间的随机数

所有模型都像 rfo = randomForest(x=X, y=Ytotal, <more args>)

randomForest.performance,它的解释的最高分数的能力TEV增加时一般samplesize降低当TEV小于50%,并且减少当TEV是高于50%。

因此,如果您的randomForest-modelfit报告(例如,OOB-CV解释了15%的方差),并且这对于您来说是可接受的模型精度,那么您可以通过降低sampsize给定观察值的三分之一来将性能微调一些ntree > 1000

士气:对于嘈杂的数据,最好使树不相关,而要通过生长最大大小的树来降低偏差。


1

为了使随机森林在新数据中也能像在训练数据中一样出色地工作,所需的样本量非常大,通常是候选要素数量的200倍。看这里


2
Harrell博士,我认为OP正在询问用于构建每棵单独的树的重新采样的大小,而不是数据集的总大小。
Sycorax说恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.