2016-07-07 23 views
10

複数のモデルを学習することについては、previous questionまで続きます。R - 複数モデル学習を並列化する(dplyrとpurrrを使用)

各ケースで複数の観測があり、 それぞれのモデルを訓練したいと思っています。これを行う方法については、Hadleyのexcellent presentationを参照してください。要するに

が、これはそうのようdplypurrを使用して行うことが可能です:

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

だから、モデル構築があきれるほど並列タスクであるため、私は 思っていたdplyr場合、purrrは使いやすい持っていますそのようなタスクのための並列化メカニズム(並列mapなど)

これらのライブラリが簡単な並列化を提供しない場合は、古典的なR並列化ライブラリ(parallel,foreachなど)を使用して実行できますか?

答えて

11

ただ、ここで完全性についての答えを追加し、あなたがこれを実行するにはハドレーのレポからmultidplyrをインストールする必要があります、vignetteで詳細:

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) 
関連する問題