我运行了一个20倍的cv.glmnet套索模型,以获得“最优”值的羔羊。但是,当我试图复制来自glmnet()的结果时,I会得到一个错误,即:
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,所以这可能是造成问题的原因?这是一个关于λ价值的四舍五入的问题吗?为什么我不能直接从glmnet()函数中复制结果呢?如果我在类似于bestlam值的范围内使用lambda值的向量,则没有任何问题。
发布于 2015-08-24 14:59:24
您正在将单个lambda传递给您的glmnet (lambda=bestlab),这是一个大的不-不(您试图使用一个lambda值来训练一个模型)。
来自glmnet文档(?glmnet)
lambda: A user supplied lambda sequence. Typical usage is to have the
program compute its own lambda sequence based on nlambda and
lambda.min.ratio. Supplying a value of lambda overrides this. WARNING: use
with care. Do not supply a single value for lambda (for predictions after CV
use predict() instead). Supply instead a decreasing sequence of lambda
values. glmnet relies on its warms starts for speed, and its often faster to
fit a whole path than compute a single fit.发布于 2015-08-24 14:59:21
在这方面,glmnet有点棘手--您将希望使用一系列lambda(例如,设置nlambda=101)来运行您最好的模型,然后当您预测set s=bestlam和exact=FALSE时。
https://stackoverflow.com/questions/32184776
复制相似问题