在 maxit=1000 次迭代后未达到第 n 个 lambda 值的 glmnet 收敛;返回更大的 lambda 的解决方案

glmnet Convergence for nth lambda value not reached after maxit=1000 iterations; solutions for larger lambdas returned

我正在使用 glmnet-package 中的 LASSO 来创建预测。 此外,我正在使用 cv.glmnet 函数进行 5 折交叉验证以创建 Lasso.fit。这个 glmnet-object 然后用在预测函数中,经验法则 s = "lambda.1se".

x <- scale(x)
x_test <- scale(x_test)

lasso.fit <- cv.glmnet(x,y, nfolds = 5, alpha=1, 
                  intercept =TRUE, standardize =TRUE, type.measure="mae")
lasso_pred <- predict(lasso.fit, x_test, s ="lambda.1se")          

但是,当 运行 这个模型时,我收到以下警告:

Warning: 
from glmnet Fortran code (error code -79); 
Convergence for 79th lambda value not reached after maxit=100000 iterations; 
solutions for larger lambdas returned

这个警告是什么意思?

此外,我是否应该认真对待这个警告,即更改 cv.glmnet 函数的某些内容?

或者这是我在使用惩罚方法创建预测时不应该担心的事情吗?

默认情况下,glmnet 尝试计算 100 个 lambda 值的解。错误是说在第 79 个 lambda 值处,命中了坐标下降的最大迭代(默认为 10^5)。因此,由于解不满足收敛准则,所以只给出前 78 个 lambda 值的解。您仍然可以使用 cv.glmnet - 它只是用这 78 个 lambda 进行模型选择。如果您想计算更多的 lambda,只需传递另一个参数 maxit=...,其中 ... 是大于 10^5 的某个数字。