我跑了20倍cv.glmnet
套索模型以获得 lambda 的“最佳”值。但是,当我尝试重现结果时glmnet()
,我收到一个错误,内容如下:
Warning messages:
1: from glmnet Fortran code (error code -1); Convergence for 1th lambda
value not reached after maxit=100000 iterations; solutions for larger
lambdas returned
2: In getcoef(fit, nvars, nx, vnames) :
an empty model has been returned; probably a convergence issue
我的代码是这样写的:
set.seed(5)
cv.out <- cv.glmnet(x[train,],y[train],family="binomial",nfolds=20,alpha=1,parallel=TRUE)
coef(cv.out)
bestlam <- cv.out$lambda.min
lasso.mod.best <- glmnet(x[train,],y[train],alpha=1,family="binomial",lambda=bestlam)
现在,价值bestlam
上面是2.976023e-05
所以也许这就是造成问题的原因?这是 lambda 值的舍入问题吗?有什么原因导致我无法直接从glmnet()
功能?如果我使用与该值相似范围内的 lambda 值向量bestlam
,我没有任何问题。