【问题标题】:How can I use multi cores processing to run glm function faster如何使用多核处理更快地运行 glm 功能
【发布时间】:2014-05-11 15:38:42
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 不容易。您也许可以安装矢量化/多核 BLAS(线性代数)库。也许看看Revolution R ...
  • 例如blog.revolutionanalytics.com/2010/06/…(但请参阅那里的 cmets,了解这是否真的有帮助 glm
  • glm 不使用 BLAS。我不知道开源 R 中有任何多核 glm 实现。Revolution(您必须付费)具有更快的 glm 实现。
  • @JamesKing 有一些 1 级 BLAS 调用,例如,here。虽然,它只是 1 级。

标签: r parallel-processing logistic-regression


【解决方案1】:

其他有用的软件包有: http://cran.r-project.org/web/packages/gputools/gputools.pdf 使用 gpuGlmhttp://cran.r-project.org/web/packages/mgcv/mgcv.pdf 见 mgcv.parallel 部分关于 gam(..., control=list(nthreads=nc)) 或者 bam(..., cluster=makeCluster(nc)) 其中 nc 是你的真实核心数

【讨论】:

  • 注意:gputools 已“于 2017 年 12 月 19 日存档,因为尽管有提醒但检查问题仍未得到纠正”(根据 CRAN 页面)。
【解决方案2】:

我使用了 speedglm,结果非常好:使用 glm 需要 14.5 秒才能获得结果,而使用 speedglm 需要 1.5 秒。提高了 90%..代码非常简单:m &lt;- speedglm(y ~ s1 + s2,data=df)。只是不要忘记安装和调用包。另一个问题:您不能将所有变量都与“。”一起使用。 speedglm 不会将该点识别为“所有变量”。

【讨论】:

    【解决方案3】:

    一个新选项,是我的包裹parglm。您可以找到计算时间的比较here。下面给出了两个已实现方法的 18 核机器上的计算时间与已使用内核数量的关系图

    虚线是glm 的计算时间,虚线是speedglm 的计算时间。带有空心圆的方法计算 Fisher 信息,然后求解标准方程,如speedglm。完整的圆圈将 QR 分解为glm。前者速度更快,但稳定性较差。

    我在相关问题的答案here 中添加了更多关于 QR 方法的 cmets。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-08
      • 2020-07-22
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      相关资源
      最近更新 更多