我想用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
更新I:
由于我无法共享产生错误的数据(机密性问题)和我尝试的复制产生的内存溢出而不是显示的错误,我将重新提出问题:
错误消息是否与内存有关或与其他内容有关?
考虑到数据集的大小,可以选择与内存相关的错误。但是,错误消息指向与lambda值中具有多个最小值相关的内部问题。如果不是内存问题我该如何处理,是否有解决方法?