3

我的一位同事表示,randomForest()在非常大的数据集上表现不佳。现在,我只是想弄清楚是否真的如此,但由于数据集无法共享(敏感信息),我想我不妨尝试提出一个大型数据集。我尝试了以下操作,但无法理解错误消息:

library(randomForest)
data(iris)
dataFile <- iris
newdataFile <- dataFile[sample(dataFile, size= 1:1000000000, replace=T),]

错误信息:

Error in xj[i] : invalid subscript type 'list'

有人可以在这里指导我吗?

4

2 回答 2

2

sample接受一个向量。从 data.frame 中采样时,通常通过将行称为数字来对行进行采样,这很类似于子集,但在这种情况下,需要替换。

newdataFile <- iris[sample(nrow(iris),100000,replace=T),]
于 2012-10-22T17:50:42.663 回答
2

随机森林在大型数据集上表现不佳的断言是荒谬的。从样本量和多变量的角度来看,它特别适合高维问题。RF 的主要问题和非常大的问题是:1) 易处理性和 2) 样品平衡。

如果您遇到一个类按比例较大 (>30%) 的问题,则引导程序可能存在偏差,并且 OOB 验证以及可能的估计不正确。结果,例如 [0=10000,1=200] 的二进制问题,对于 0 的预测率非常高,对于 1 的预测率非常低,从而导致模型的 OOB 错误率非常好,但相当膨胀,但是1级的表现非常差。

这显然不能代表模型性能,并且您对第 1 类的预测流行率将非常低。如果您遇到类平衡问题,我将遵循 Chen 等人的方法。al., (2004) 或 Evans & Cushman (2009)。

Chen C, Liaw A, Breiman L (2004) 使用随机森林学习不平衡数据。http://www.stat.berkeley.edu/tech-reports/666.pdf

Evans, JS 和 SA Cushman (2009) 使用随机森林对针叶树物种进行梯度建模。景观生态学五:673-683。

于 2012-10-22T20:12:04.830 回答