【问题标题】:rm(list = ls()) on 64GB then Error: cannot allocate vector of size 11.6 Gb when trying a decision treerm(list = ls()) on 64GB then 错误:尝试决策树时无法分配大小为 11.6 Gb 的向量
【发布时间】:2017-09-03 18:24:05
【问题描述】:

我正在尝试通过 caret 包运行决策树。我通过使用rm(list = ls()) 从内存中删除所有内容来重新开始我的脚本,然后我加载我的训练数据,即 3M 行和 522 个特征。 R studio 没有以 gb 为单位显示大小,但根据错误消息推测它是 11.6。

如果我使用的是 64gb R,那么我会看到这个错误吗?有什么办法可以在不借助较小数据的培训的情况下解决这个问题?

rm(list = ls())
library(tidyverse)
library(caret)
library(xgboost)

# read in data
training_data <- readRDS("/home/myname/training_data.rds")

R studio 环境窗格目前显示一个对象,即带有上述暗淡的训练数据。

### Modelling
# tuning & parameters
set.seed(123)
train_control <- trainControl(
  method = "cv",
  number = 5,
  classProbs = TRUE, # IMPORTANT!
  verboseIter = TRUE,
  allowParallel = TRUE
)

# Fit a decision tree (minus cad field)
print("begin decision tree regular")
mod_decitiontree <- train(
  cluster ~.,
  tuneLength = 5,
  data = select(training_data, -c(cad, id)), # a data frame
  method = "rpart",
  trControl = train_control,
  na.action = na.pass
)

Loading required package: rpart
Error: cannot allocate vector of size 11.6 Gb

我可以要求我们的管理员增加我的 RAM,但在这样做之前要确保我没有遗漏任何东西。如果我使用 64 GB,难道我没有大量可用的 RAM 吗?

我有什么选择吗?我尝试将我的数据框设为矩阵并将其传递给插入符号,但它引发了错误。传递矩阵是否值得尝试?

【问题讨论】:

    标签: r memory


    【解决方案1】:

    这里是您的错误信息转载:

    尝试决策树时无法分配大小为 11.6 Gb 的向量

    这意味着当 R 请求另一个 11.6 GB 内存时发生特定故障,并且无法这样做。但是,随机森林计算本身可能需要很多这样的分配,而且很可能剩余的空闲 RAM 已经被使用了。

    我不知道你计算的细节,但我想说即使在 1GB 数据集上运行随机森林也已经非常大了。我的建议是找到一种方法来获取数据集的统计准确子样本,这样您就不需要如此大量的 RAM。

    【讨论】:

    • 您好,感谢您的信息。如果我要向我们的管理员询问更多 RAM,有没有办法近似地推断出我还需要多少?传递矩阵而不是数据框会有帮助吗?
    • @DougFir 您将需要弄清楚 Caret 随机森林计算的内存需求与输入数据的大小等之间的关系。但是,正如我的回答所暗示的那样,我不认为你应该需要这么多内存。
    • 您需要全部 522 个功能吗?您需要 300 万行吗?
    • RE 特征,这是文本数据,非常稀疏,大部分为 0。我认为我确实需要它们,因为值为 1 的单个特征(令牌)可能是分类的全部区别
    • 还有一点:如果您使用 rf 工作,比如说 10% 的随机子样本,那么您可以尝试使用不同的样本再次运行,看看情况是否会发生显着变化。我的猜测是他们不会,但你会是评判者。
    猜你喜欢
    • 2021-04-03
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多