R中的并行回归(可能与降雪有关)

我试图并行运行R来运行回归。 我正在尝试使用降雪库(但我愿意接受任何方法)。 目前,我正在运行以下回归,运行时间非常长。 有人可以告诉我如何做到这一点?

 sales_day_region_ctgry_lm <- lm(log(sales_out+1)~factor(region_out) 
             + date_vector_out + factor(date_vector_out) +
             factor(category_out) + mean_temp_out)

我已经开始走下面的道路:

library(snowfall)
sfInit(parallel = TRUE, cpus=4, type="SOCK")

wrapper <- function() {
return(lm(log(sales_out+1)~factor(region_out) + date_vector_out +
               factor(date_vector_out) + factor(category_out) +   mean_temp_out))
}

output_lm <- sfLapply(*no idea what to do here*,wrapper)
sfStop()
summary(output_lm)

但是这种方法充满了错误。

谢谢!


partools软件包通过其calm()函数提供了一个简单的,现成的并行线性回归实现。 (“ca”前缀代表“块平均”。)

在你的情况中 - 抛开罗兰关于混合因子和连续预测因子的正确评论 - 解决方案应该如下简单:

library(partools)
#library(parallel) ## loads as dependency

cls <- makeCluster(4) ## Or, however many cores you want/have.

sales_day_region_ctgry_calm <- 
  calm(
    cls, 
    "log(sales_out+1) ~ factor(region_out) + date_vector_out + 
     factor(date_vector_out) + factor(category_out) + mean_temp_out, 
     data=YOUR_DATA_HERE"
    )

请注意,模型调用在引号内进行了描述。 进一步注意,如果以任何方式订购(例如按日期),您可能需要先将数据随机化。有关更多详细信息,请参阅partools vignette。


由于您正在拟合一个大型模型(而不是几个小型模型),并且您正在使用线性回归,因此获得并行性的一种快捷方式是使用多线程BLAS。 像微软R开放(以前称为革命R公开)应该做的伎俩。*

*披露:我为微软/革命工作。

链接地址: http://www.djcxy.com/p/53433.html

上一篇: parallel regression in R (maybe with snowfall)

下一篇: Can't connect to Spark cluster in EC2 using pyspark