【问题标题】:Random Forest with caret package: Error: cannot allocate vector of size 153.1 Gb带有插入符号包的随机森林:错误:无法分配大小为 153.1 Gb 的向量
【发布时间】: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


    【解决方案1】:

    问题可能与分类变量中插入符号的单热编码有关。由于您有很多分类变量,这似乎是一个真正的问题,它会极大地增加您的数据集。 One-hot 编码将为您拥有的每个分类变量的每个因子创建一个新列。

    也许您可以尝试使用 h2o-package 之类的东西,它以另一种方式处理分类变量,这样在模型运行时不会爆炸您的数据集。

    【讨论】:

      【解决方案2】:

      数据集有 150 万多行和 46 个没有缺失值的变量(大小约为 150 mb)

      这里要明确一点,您很可能不需要需要 150 万行来构建模型。相反,您应该采用不会导致内存问题的较小子集。如果您担心减少样本数据的大小,那么您可以在较小的集合上对 40 个预测变量进行一些描述性统计,并确保行为看起来是相同的。

      【讨论】:

        猜你喜欢
        • 2018-08-16
        • 2016-08-10
        • 2021-04-03
        • 2016-04-10
        • 1970-01-01
        • 2015-02-10
        • 2019-06-16
        • 2016-05-11
        • 2019-10-05
        相关资源
        最近更新 更多