我正在使用glmnet包中的LASSO来创建预测。此外,我正在使用cv.glmnet-函数进行5倍的交叉验证以创建Lasso.fit。然后在预测函数中使用这个glmnet对象,经验法则s=";λ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的某个数字。