Оптимизация скорости обработки пакетов randomForest с помощью параллельной обработки

#r #parallel-processing #rstudio #random-forest

#r #параллельная обработка #первая студия #случайный лес

Вопрос:

Как я могу получить следующий код (альтернативный код тоже был бы хорош) для повышения скорости анализа случайного леса в уравнении регрессии с использованием нескольких ядер при параллельном подходе к работе?

 #Parallelized Random Forest Model
RFcores <- detectCores()/3   4
RFcores
RFtrees <- 1000/RFcores
RFtrees
cl <- makeCluster(RFcores)
registerDoParallel(cl)
timer <- proc.time()
form <- as.formula(paste(a, "~", b))
fit <- foreach(ntree = rep(RFtrees, RFcores), .combine = gtable_combine, .packages = 'randomForest') %dopar% 
   { 
                randomForest(form, data = maindf, mtry = 4, 
                             keep.forest = FALSE, nodesize = 10000, do.trace = TRUE, maxnodes = 5, 
                            improve = 0.01, doBest = TRUE, importance = TRUE, ntree = ntree)}
proc.time() - timer
stopCluster(cl)
}
 

Я продолжаю получать следующую ошибку, связанную с функцией .combine argument in foreach .

 error calling combine function:
<simpleError in align_2(x, y, along = along, join = join): Both gtables must have names along dimension to be aligned>
 

Я с нетерпением жду любых мыслей по этому вопросу.

Ответ №1:

Взгляните на параллельные статистические вычисления с помощью R: иллюстрация на двух архитектурах, которая дает два способа распараллеливания вычислений случайного леса: с mclapply помощью и с pbdMPI помощью .