2016-07-27 2 views
0

J'essaie d'utiliser le paquet 'caret' pour exécuter des prédictions sur un ensemble de données d'environ 28000 lignes et 58 colonnes de toutes les données numériques. (Ce qui est le jeu de données de nouvelles sociales mash du dépôt central de jeu de données UCI si vous vous demandez, après avoir pris 75% pour l'ensemble de données de formation)Problèmes de mémoire dans R lorsque vous essayez d'exécuter des modèles en parallèle

Je suis en train d'exécuter certains modèles de classification sur un « oui »/« non » si le nombre de pages vues a dépassé 1400.

Cette entrée générale J'utilise

library(caret) 
library(foreach) 
library(doParallel) 

cl<-detectCores() *.5 
registerDoParallel(cl) 

ctrl = trainControl(
    summaryFunction = twoClassSummary, 
    classProbs = TRUE, 
    savePredictions = 'final', # change to TRUE for all 
    method = 'cv', 
    number = kfolds, 
    repeats = repeats_folds, 
    verboseIter = TRUE, 
    seeds = seeds, 
    allowParallel =TRUE, 
    preProcOptions = c('scale','center') 
) 




"train" is the first 58 or so columns exlcuding a couple of irrelevant ones 



mod_rf = train(
    x = train, y = target, 
    method = 'rf', 
    trControl = ctrl, 
    tuneGrid = grid_rf, 
    # tuneLength = NULL, 
    metric=measurement 
) 

Cependant, j'ai ce qui semble être des problèmes majeurs en matière de génération de la prédiction réelle. Soit mon ordinateur tombe en panne avec un popup sur Rstudio disant qu'il doit se terminer ou il ne semble tout simplement pas finir.

J'ai un état de l'art Macbook Pro 16gb. Y at-il quelque chose que je pourrais ou devrais faire pour améliorer ma performance? Mon nombre de cœurs utilisés ici est de 4 au lieu de 8 car cela a ralenti le reste de mon ordinateur portable.

+0

Essayez d'utiliser method = "parRF". Sinon, randomforest ne fonctionnera pas en parallèle. – phiver

+0

Essayez d'utiliser 'method =" ranger "' ou l'un des autres paquets de forêt aléatoire haute performance. Gardez à l'esprit que vous augmenterez toujours la quantité de mémoire nécessaire pour exécuter _X_-fold en parallèle avec les travailleurs _X_. Consultez également Activity Monitor avant d'exécuter en parallèle pour évaluer la quantité de mémoire occupée par vos données avant d'exécuter la forêt aléatoire. . – topepo

+1

@phiver L'utilisation du traitement parallèle comme il le fera exécutera le réglage du modèle en parallèle mais pas le modèle RF sous-jacent. Ceci est généralement plus rapide que le réglage séquentiel et l'exécution de chaque modèle RF en parallèle. – topepo

Répondre

-1

Je pense que vous utilisez incorrectement registerDoParallel. Essayez d'utiliser:

cl <- makeCluster(detectCores()) 
registerDoParallel(cl)