我試圖建立一個隨機森林模型的數據集在Kaggle,我一直在做機器學習與脫字符包,數據集有150萬+行和沒有缺失值的46個變量(大小約150 mb),40個變量是分類變量,結果是我試圖預測的響應,它是二元的。在使用dplyr進行了一些預處理之後,我開始使用caret包構建模型,但是當我嘗試運行「train」函數時出現了此錯誤消息:「Error:can not allocate vector of size 153.1 Gb」這是我的代碼:隨機森林與脫字符包:錯誤:不能分配矢量的大小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內存。我有兩個問題: 1.我在哪裏得到一個大到150GB的矢量?是否因爲我寫了一些代碼? 2.我無法獲得那臺大內存的機器,是否有任何workarouds來解決我可以通過我的模型構建過程來解決的問題?