我想使用 glmnet 包执行并行逻辑岭回归。我的数据是一个大的稀疏矩阵(1000 万个观测值和大约 60k 列)。
我对数据的一个子集(观察和列子集)做了一个小试验,它奏效了。以下代码相当于我正在做的事情:
library(Matrix)
library(glmnet)
library(doMC)
#for reproducibility
set.seed(18)
#initialise cores
registerDoMC(cores=2)
sparseMat<-sparseMatrix(i=rep(1:50,4),j=sample(20,200,replace=TRUE),x=rep(1,200))
y<-as.factor(sample(2,50,replace=TRUE))
cvfit<-cv.glmnet(x=sparseMat,y=y,standardize=FALSE,family="binomial",alpha=0,parallel=TRUE)
但是,当我输入整个矩阵时,进程崩溃并提供下一条错误消息:
Error in max(sapply(outlist, function(obj) min(obj$lambda))) :
invalid 'type' (list) of argument
我不确定是什么导致了错误,也不知道错误消息指出了什么。
我在具有 8 个内核的 RStudio linux 服务器中使用 r。
sessionInfo()
:
R version 3.1.2 (2014-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
attached base packages:
[1] parallel stats graphics grDevices utils datasets methods base
other attached packages:
[1] doMC_1.3.3 iterators_1.0.7 glmnet_2.0-2 foreach_1.4.2 Matrix_1.1-5
更新我:
由于我无法共享产生错误的数据(机密性问题)和我尝试的复制产生的内存溢出而不是显示的错误,我将重新提出问题:
我得到的错误消息是与内存有关还是与其他有关?
给定数据集的大小,可以选择与内存相关的错误。但是,错误消息指出了与 lambda 值中有多个最小值有关的内部问题。如果不是内存问题,我该如何处理,是否有解决方法?