我正在尝试通过插入包运行决策树。我通过使用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可用吗?
我有任何选择吗?我尝试将我的数据框作为矩阵并将其传递给插入符号,但它引发了错误。通过矩阵而不是值得尝试?
答案 0 :(得分:2)
以下是您的错误消息:
尝试决策树时,无法分配大小为11.6 Gb的向量
这意味着当R请求另外11.6 GB的内存时发生了特定的故障,并且无法执行此操作。但是,随机森林计算本身可能需要许多此类分配,并且很可能已经使用了剩余的可用RAM。
我不知道你的计算细节,但我会说即使在1GB数据集上运行随机森林已经非常庞大。我的建议是找到一种方法来获取数据集的统计上准确的子样本,这样您就不需要如此大量的RAM。