在64GB上的rm(list = ls())然后错误:在尝试决策树

时间:2017-09-03 10:15:48

标签: r memory

我正在尝试通过插入包运行决策树。我通过使用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环境窗格当前显示一个对象,使用上述的dims训练数据。

### 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

我可以要求我们的管理员增加我的内存,但在此之前要确保我没有错过任何东西。如果我使用的是64 GB,那么我有多少RAM可用吗?

我有任何选择吗?我尝试将我的数据框作为矩阵并将其传递给插入符号,但它引发了错误。通过矩阵而不是值得尝试?

1 个答案:

答案 0 :(得分:2)

以下是您的错误消息:

  尝试决策树时,

无法分配大小为11.6 Gb的向量

这意味着当R请求另外11.6 GB的内存时发生了特定的故障,并且无法执行此操作。但是,随机森林计算本身可能需要许多此类分配,并且很可能已经使用了剩余的可用RAM。

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

相关问题