У меня есть большой набор данных n (> 1,000,000) с небольшим количеством функций для оценки (регрессии) случайного леса и были предназначены для реализации Rborist (in R). Я хотел бы распараллелить свою работу, но не нахожу много рекомендаций относительно того, как это будет сделано. У меня есть 16 процессоров для использования на компьютере, где он работает. Когда я использую doParallel с пакетом RandomForest, например, команда:Параллелизация с Rborist
rf <- foreach(ntree=rep(32, 16), .combine=combine, .packages='randomForest') %dopar% randomForest(x, y, nodesize = 25, ntree=ntree)
Он запускает 16 процессов R, и работает медленно, как RandomForest делает, но работает.
Аналогичная команда для Rborist:
rb <- foreach(ntree=rep(32, 16), .combine=combine, .packages='Rborist') %dopar% Rborist(x, y, minNode = 25, ntree=ntree)
Выдает ошибку:
error calling combine function:
Warning message: In mclapply(argsList, FUN, mc.preschedule = preschedule, mc.set.seed = set.seed, : all scheduled cores encountered errors in user code
Кто-нибудь знает, как распараллелить с Rborist? Это не по всей видимости, происходит под капотом, как это только с использованием 1 процессора, когда я бегу:
rb <- Rborist(x, y, minNode = 25, ntree = 512)
Работает ли он с одной резьбой с Rborist? В противном случае, не ответ на самом деле, но я использую h2o реализацию случайного леса, h2o.randomForest, когда вы делаете большой анализ. Найти это проще, чем использовать foreach. – YCR
Да, работает однопоточная версия.По крайней мере, в моих настройках это действительно намного быстрее, чем ванильный randomForest, хотя для этого требуется гораздо больше ОЗУ, а точность предсказания была ниже (интересно, не связано ли это из-за разницы, останавливая критерии между стандартными значениями по умолчанию для randomforest и Robbyist mininfo). –