首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lambda.min不收敛于cv.glmnet的glmnet

lambda.min不收敛于cv.glmnet的glmnet
EN

Stack Overflow用户
提问于 2015-08-24 14:26:05
回答 2查看 8.1K关注 0票数 3

我运行了一个20倍的cv.glmnet套索模型,以获得“最优”值的羔羊。但是,当我试图复制来自glmnet()的结果时,I会得到一个错误,即:

代码语言:javascript
复制
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

我的代码如下:

代码语言:javascript
复制
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值的向量,则没有任何问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-24 14:59:24

您正在将单个lambda传递给您的glmnet (lambda=bestlab),这是一个大的不-不(您试图使用一个lambda值来训练一个模型)。

来自glmnet文档(?glmnet)

代码语言:javascript
复制
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.
票数 5
EN

Stack Overflow用户

发布于 2015-08-24 14:59:21

在这方面,glmnet有点棘手--您将希望使用一系列lambda(例如,设置nlambda=101)来运行您最好的模型,然后当您预测set s=bestlamexact=FALSE时。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32184776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档