在 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 的某个数字。
我正在使用 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 的某个数字。