2016-07-07 17 views
10

Bu, birden çok modeli öğrenmekle ilgili olarak bir previous question izlemesidir.R - Çoklu model öğrenmeyi paralelleştirme (dplyr ve purrr ile)

Kullanım durumu, her konu için birden fazla gözlemim var ve Her biri için bir model oluşturmak istiyorum. Bunun nasıl yapılacağı hakkında Hadley excellent presentation. Kısacası

, bu yüzden böyle dply ve purr kullanarak yapmak mümkündür:

library(purrr) 
library(dplyr) 
library(fitdistrplus) 
dt %>% 
    split(dt$subject_id) %>% 
    map(~ fitdist(.$observation, "norm")) 

Yani model kurma utandıracak paralel bir iştir çünkü ben merak dplyr eğer purrr kullanımı kolay olması Bu görevler için paralelleştirme mekanizması (paralel olarak map).

Bu kitaplıklar kolay bir paralelleştirme sağlamazsa, klasik R paralelleştirme kitaplıkları (parallel, foreach vb.) Kullanılarak yapılabilir mi?

cevap

11
Sadece burada şeyiyle bir cevap ekleyerek

, sen bu çalışmasına Hadley'in repo multidplyr yüklemek için vignette daha fazla bilgi 'gerekir:

library(dplyr) 
library(multidplyr) 
library(purrr) 

cluster <- create_cluster(4) 
set_default_cluster(cluster) 
cluster_library(cluster, "fitdistrplus") 

# dt is a dataframe, subject_id identifies observations from each subject 
by_subject <- partition(dt, subject_id) 

fits <- by_subject %>% 
    do(fit = fitdist(.$observation, "norm"))) 

collected_fits <- collect(fits)$fit 
collected_summaries <- collected_fits %>% map(summary)