【发布时间】:2016-12-23 15:33:57
【问题描述】:
我试图在 Kaggle 中为数据集构建随机森林模型,我总是使用 caret 包进行机器学习,数据集有 150 万+行和 46 个没有缺失值的变量(大小约为 150 mb),40 + 变量是分类的,结果是我试图预测的响应,它是二元的。在使用 dplyr 进行一些预处理后,我开始使用 caret 包构建模型,但是当我尝试运行“train”函数时收到此错误消息:“错误:无法分配大小为 153.1 Gb 的向量”这是我的代码:
## load packages
require(tidyr)
require(dplyr)
require(readr)
require(ggplot2)
require(ggthemes)
require(caret)
require(parallel)
require(doParallel)
## prepare for parallel processing
n_Cores <- detectCores()
n_Cluster <- makeCluster(n_Cores)
registerDoParallel(n_Cluster)
## import orginal datasets
people_Dt <- read_csv("people.csv",col_names = TRUE)
activity_Train <- read_csv("act_train.csv",col_names = TRUE)
### join two sets together and remove variables not to be used
first_Try <- people_Dt%>%
left_join(activity_Train,by="people_id")%>%
select(-ends_with("y"))%>%
filter(!is.na(outcome))
## try with random forest
in_Tr <- createDataPartition(first_Try$outcome,p=0.75,list=FALSE)
rf_Train <- firt_Try[in_Tr,]
rf_Test <- firt_Try[-in_Tr,]
## set model cross validation parameters
model_Control <- trainControl(method = "repeatedcv",repeats=2,number=2,allowParallel = TRUE)
rf_RedHat <- train(outcome~.,
data=rf_Train,
method="rf",
tuneLength=10,
importance=TRUE,
trControl=model_Control)
我的电脑是一台相当强大的机器,配备 E3 处理器和 32GB RAM。我有两个问题: 1. 我从哪里得到一个 150GB 大的向量?是因为我写了一些代码吗? 2. 我买不到这么大 ram 的机器,有什么办法可以解决我可以继续我的模型构建过程的问题吗?
【问题讨论】:
标签: r memory-management random-forest r-caret