如何使用多核处理更快地运行glm功能

时间:2014-05-11 15:38:43

标签: r parallel-processing logistic-regression

我对r有点新,我想使用一个允许多核处理的软件包,以便更快地运行glm函数。我想知道是否有一种语法我可以用于此事。 这是我写的一个示例glm模型,我可以添加一个将使用多核的参数吗?

g<-glm(IsChurn~.,data=dat,family='binomial')

感谢。

3 个答案:

答案 0 :(得分:7)

其他有用的包是: http://cran.r-project.org/web/packages/gputools/gputools.pdf 使用 gpuGlm http://cran.r-project.org/web/packages/mgcv/mgcv.pdf 请参阅mgcv.parallel部分 gam(..., control=list(nthreads=nc)) 要么 bam(..., cluster=makeCluster(nc)) 其中 nc 是真实核心的数量

答案 1 :(得分:6)

我使用了speedglm并且结果非常好:使用glm我花了14.5秒来获得结果,而使用speedglm它花了我1.5秒。 90%的改进......代码非常简单:m <- speedglm(y ~ s1 + s2,data=df)。只是不要忘记安装并调用包。另一个问题:你不能用“。”来使用所有变量。 speedglm不会将点识别为“所有变量”。

答案 2 :(得分:2)

我的软件包parglm是一个新选项。您可以找到计算时间here的比较。下面给出了两种实现方法中小插图中18核计算机上的计算时间与已用核数的关系图

enter image description here

虚线是从glm开始的计算时间,虚线是从speedglm开始的计算时间。空心圆的方法计算Fisher信息,然后求解speedglm中的正规方程。完整的圆圈将QR分解为glm。前者更快,但不稳定。

我在有关问题的答案here中为QR方法添加了更多注释。