randomForest&的问题长矢量

时间:2014-06-13 00:06:55

标签: r random-forest

我在一个包含8个数字列(预测变量)和1个因子(结果)的数据集上运行随机林。数据集中有1.2M行。当我这样做时:

randomForest(outcome.f ~ a + b + c + d + e + f + g + h,data=mdata)),我收到错误:

"Error in randomForest.default(m, y, ...) : 
 long vectors (argument 26) are not supported in .Fortran"

有什么方法可以阻止这种情况吗?我不明白为什么包(显然)试图分配长度为2 ^ 31-1的向量。我使用的是Mac OS X 10.9.2,带有Intel Core i7(如果架构很重要)。

会话信息

R version 3.1.0 (2014-04-10)
Platform: x86_64-apple-darwin13.1.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] randomForest_4.6-7

loaded via a namespace (and not attached):
[1] tools_3.1.0

5 个答案:

答案 0 :(得分:7)

永远不要在训练集上运行带有太多行的randomforest。

rf1 <- randomForest(Outcome ~ ., train[1:600000,], ntree=500, norm.votes=FALSE, do.trace=10,importance=TRUE)
rf2 <- randomForest(Outcome ~ ., train[600001:1200000,], ntree=500, norm.votes=FALSE, do.trace=10,importance=TRUE)
rf.combined <- combine(rf1,rf2)

如果仍然出现错误,请尝试减小训练集的大小(例如500000或100000),分为rf1,rf2和rf3,然后将它们组合起来。希望它有所帮助。

答案 1 :(得分:3)

我以前遇到过这个问题,可以通过使用proximity = FALSE来解决。这样不计算邻近矩阵,R就能完成该过程

答案 2 :(得分:1)

您还可以减少树木的数量(ntree)。

答案 3 :(得分:0)

我认为需要建立的连接是,如果使用64位版本的R,训练集或树大小太大会触发一些只与32位版本兼容的c代码。因此,减少树的大小和训练大小来补偿。

答案 4 :(得分:0)

由于我的“ y”数据集实际上为NULL,所以我刚刚弹出此错误,因此请注意这一点,并检查并确保您的y向量不为空。