【问题标题】:Issue with randomForest & long vectorsrandomForest 和长向量的问题
【发布时间】:2014-08-03 10:50:13
【问题描述】:

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

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 的向量。我正在使用带有 Intel Core i7 的 Mac OS X 10.9.2(以防架构很重要)。

会话信息

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

【问题讨论】:

  • 你发现了吗? (同样的问题......)

标签: r random-forest


【解决方案1】:

我之前遇到过这个问题,使用proximity = FALSE 解决了这个问题。这样就不会计算邻近矩阵,并且 R 能够完成该过程

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我认为需要建立的联系是,如果您使用 64 位版本的 R,训练集或树大小太大会触发一些仅与 32 位版本兼容的 c 代码。所以,减少树的大小和训练的大小来弥补。

      【讨论】:

        【解决方案4】:

        你也可以减少树的数量(ntree)。

        【讨论】:

          【解决方案5】:

          永远不要在训练集上运行太多行的随机森林。

          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,然后将它们组合起来。希望对您有所帮助。

          【讨论】:

          • 为什么?你能提供更多细节吗!
          • 因为我们对普通 R 可以运行的内存量有限制,除非我们对其进行调整
          猜你喜欢
          • 2014-04-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多