2016-08-17 1 views
3

私はKaggleのデータセットのランダムフォレストモデルを構築しようとしていました。私は常にマシンをキャレットパッケージで学習しています。欠損値のない46個の変数(約150 mbのサイズ)、40個以上の変数はカテゴリに分類され、結果は予測しようとしている応答であり、バイナリです。 dplyrでいくつかの前処理をした後、私はキャレットパッケージでモデルを構築する作業を始めましたが、 "train"関数を実行しようとしたときにこのエラーメッセージが表示されました: "エラー:サイズ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 RAMを備えたかなり強力なマシンです。私には2つの質問があります: 1.どこで150GBの大きさのベクトルが得られましたか?私が書いたコードがあるからでしょうか? 2.大きなラムを持つマシンを手に入れることはできません。問題を解決するためのワークラウドはありますか?モデル構築プロセスに進むことができますか?

答えて

3

the dataset has 1.5 million + rows and 46 variables with no missing values (about 150 mb in size)

ここで明確にし、あなたが最も可能性が高いは、モデルを構築するために150万行を必要としません。代わりに、メモリの問題を引き起こさない、より小さなサブセットを取るべきです。サンプルデータのサイズを小さくすることに懸念がある場合は、40個のプレディクタについて、小さなセットで説明的な統計をいくつか行い、その動作が同じに見えるようにすることができます。

関連する問題