R中非常缓慢的GLM logistic回归
我试图将逻辑回归拟合到一个小数据集(17k行,16列)。但它在60多分钟后继续运行,我刚刚结束了它。我的CPU和RAM都没有达到最大值——我们只是观察到,一旦开始安装过程,利用率就会提高。为了排除异常编码错误的可能性,我使用5行16列的数据集测试了相同的代码。它成功了——我能够得到一份R中非常缓慢的GLM logistic回归,r,logistic-regression,glm,R,Logistic Regression,Glm,我试图将逻辑回归拟合到一个小数据集(17k行,16列)。但它在60多分钟后继续运行,我刚刚结束了它。我的CPU和RAM都没有达到最大值——我们只是观察到,一旦开始安装过程,利用率就会提高。为了排除异常编码错误的可能性,我使用5行16列的数据集测试了相同的代码。它成功了——我能够得到一份摘要和确认。因此,肯定还有另一个问题 数据集混合了因子、int和数值变量。我想分享它的模式,但它包含敏感的专有信息 我想知道是否有一些解决方案可以建议,或者在下面分享的五年前的帖子中提出的解决方案是否仍然相关(我现
摘要
和确认
。因此,肯定还有另一个问题
数据集混合了因子
、int
和数值
变量。我想分享它的模式,但它包含敏感的专有信息
我想知道是否有一些解决方案可以建议,或者在下面分享的五年前的帖子中提出的解决方案是否仍然相关(我现在正在尝试那些旧的解决方案)
数据集尺寸和代码:
> dim(design_mat_final)
[1] 16812 16
log_model <- glm(label ~.,
family = binomial(link = 'logit'),
data = design_mat_final)
与此5年的职位相关:
与这个6岁的交叉验证职位相关:
更新:
我尝试了
speedglm
,但没有明显效果。您的数据是数字数据还是分类数据?我最初的想法是删除分类数据,看看它是否加快了速度。如果存在大量的虚拟编码,分类数据可能会减慢速度。在我之前的工作中,我在一个相对较小的数据集(10000个样本左右)上使用了逻辑回归,有15个预测因子。我们所有的特征都是分类的,但经过虚拟编码后,我们得到了150多个特征。由于这个原因(普通最小二乘法的大矩阵),运行速度比预期慢得多。为了测试上述(@HXSP1947),您可以尝试运行m@HXSP1947这实际上最终成为了主要问题之一。在我的数据集中有大量的不平衡因子变量,当这些不平衡的分类变量转化为虚拟变量时,很有可能得到一列与另一列的线性组合。由于默认插补方法涉及线性回归,这导致X矩阵无法反转。@user2205916显示X的维度
> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] bindrcpp_0.2 dplyr_0.7.4 bit64_0.9-7 bit_1.1-12 data.table_1.10.4-3
loaded via a namespace (and not attached):
[1] Rcpp_0.12.15 utf8_1.1.3 crayon_1.3.4 assertthat_0.2.0 R6_2.2.2 magrittr_1.5
[7] pillar_1.1.0 cli_1.0.0 rlang_0.1.6 tools_3.4.3 glue_1.2.0 yaml_2.1.16
[13] compiler_3.4.3 pkgconfig_2.0.1 knitr_1.20 bindr_0.1 tibble_1.4.2