знак вставки с SNOW, не использующим параллельный процессор для определенного набора данных

У меня есть два фрейма данных (здесь для воспроизводимости) trainFin1 и trainFin2, оба взяты из одного и того же большого набора данных.

Я пытаюсь запустить на них перекрестную проверку rpart, используя caret в многопроцессорном режиме, используя пакет doSNOW.

Интересно, что trainFin1 хорошо обучался на 4 процессорах (окончание примерно за 25 секунд). Но trainFin2, кажется, застрял только на одном процессоре (наблюдается в окне диспетчера задач Windows), и я никогда не увижу, как он завершает обработку, даже спустя почти полчаса.

Мой код ниже

require(caret)
require(rpart)
load("trainFin.RData")

fitControl <- trainControl(method = "repeatedcv", number = 5, repeats = 5)

#setup parallel processing
require(doSNOW)
cl <- makeCluster(4, type = "SOCK")
registerDoSNOW(cl)

#train
set.seed(12345)
firstSet <- train(x = trainFin1[, names(trainFin1) != "Happiness"],
                  y = trainFin1$Happiness,
                  method = "rpart2", trControl = fitControl)

set.seed(12345)
secondSet <- train(x = trainFin2[, names(trainFin2) != "Happiness"],
                   y = trainFin2$Happiness,
                   method = "rpart2", trControl = fitControl)

stopCluster(cl)

Обратите внимание, что я избегал использования formula в train и вместо этого подавал необработанные данные, чтобы caret не преобразовывал мои порядковые переменные в фиктивные категориальные переменные (см. ответ на этот вопрос). Когда я использовал formula (т.е. train(Happiness ~ ., data = trainFin2, method = "rpart2", trControl = fitControl)), проблем с параллельной обработкой не было. Но я хочу избежать использования formula по другому вопросу.

Любые предложения о том, как я могу параллельно обрабатывать эти данные без преобразования предикторов в категориальные манекены?


person Ricky    schedule 14.06.2015    source источник
comment
Если это поможет пролить свет, похоже, что запуск rpart на trainFin2 без train также займет целую вечность...   -  person Ricky    schedule 14.06.2015