13

我在 Amazon EC2 上使用 RStudio 0.97.320 (R 2.15.3)。我的数据框有 200k 行和 12 列。

我试图用大约 1500 个参数拟合逻辑回归。

R 使用 7% 的 CPU 并拥有 60+GB 的内存,并且仍然需要很长时间。

这是代码:

glm.1.2 <- glm(formula = Y ~ factor(X1) * log(X2) * (X3 + X4 * (X5 + I(X5^2)) * (X8 + I(X8^2)) + ((X6 + I(X6^2)) * factor(X7))), 
  family = binomial(logit), data = df[1:150000,])

有什么建议可以大大加快速度吗?

4

3 回答 3

11

有几个包可以加快glm安装速度。fastglm的基准测试表明它甚至比speedglm.

您还可以在您的计算机上安装性能更高的 BLAS 库(正如 Ben Bolker 在评论中建议的那样),这将有助于任何方法。

于 2013-04-29T18:52:33.783 回答
7

虽然有点晚了,但我只能鼓励 dickoa 建议使用 Matrix 包生成稀疏模型矩阵,然后将其提供给 speedglm.wfit 函数。效果很好 ;-) 这样,我能够在不到 3 分钟的时间内对 1e6 x 3500 模型矩阵运行逻辑回归。

于 2014-04-10T08:11:16.747 回答
5

假设你的设计矩阵不是稀疏的,那么你也可以考虑我的 package parglm。有关计算时间和更多详细信息的比较,请参阅此小插图我在这里比较了一个相关问题的计算时间。

函数中的一种方法parglm作为. 该方法在详细描述bammgcv

Wood, SN, Goude, Y. & Shaw S. (2015) 大型数据集的广义相加模型。皇家统计学会杂志,C 系列 64(1):139-155。

该方法的优点是可以使用非并发 QR 实现来实现它,并且仍然可以并行进行计算。另一个优点是潜在的较低内存占用。这在mgcv'bam函数中使用,也可以在此处使用speedglm'shglm函数中的设置来实现。

于 2018-11-17T20:07:19.477 回答