Wil*_*amp 10 performance r bigdata
我在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,])
Run Code Online (Sandbox Code Playgroud)
有什么建议可以加快这一速度吗?
你可以尝试speedglm从speedglm包中的功能.我没有在你描述的问题上使用它,但特别是如果你安装一个BLAS库(如评论中提到的@Ben Bolker)它应该很容易使用并给你一个很好的减速带.
我记得看到一个表格基准测试glm,speedglm有没有BLAS库,但我今天似乎无法找到它.我记得我确信我想要BLAS和speedglm.
小智 6
虽然有点晚,但我只能鼓励 dickoa 的建议,即使用 Matrix 包生成稀疏模型矩阵,然后将其提供给 speedglm.wfit 函数。效果很好 ;-) 这样,我能够在不到 3 分钟的时间内在 1e6 x 3500 模型矩阵上运行逻辑回归。
假设你的设计矩阵不是稀疏的,那么你也可以考虑我的 package parglm。有关计算时间的比较和更多详细信息,请参阅此小插图。我在这里展示了一个相关问题的计算时间的比较。
parglm函数中的方法之一作为 中的bam函数工作mgcv。该方法在
Wood, SN, Goude, Y. & Shaw S. (2015) 大型数据集的广义加法模型。皇家统计学会杂志,C 系列 64(1):139-155。
该方法的优点是可以使用非并发 QR 实现来实现它,并且仍然可以并行执行计算。另一个优点是潜在的较低内存占用。这是在使用mgcv的bam功能,也可以用一个设置在这里实现为speedglm的shglm功能。