Jh0*_*0ni 3 r prediction predict glmnet
我正在使用 glmnet-package 中的 LASSO 来创建预测。此外,我使用 cv.glmnet-function 进行 5 倍交叉验证来创建 Lasso.fit。然后,根据经验法则 s = "lambda.1se",该 glmnet-object 将在预测函数中使用。
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")
Run Code Online (Sandbox Code Playgroud)
但是,运行此模型时我收到以下警告:
Warning:
from glmnet Fortran code (error code -79);
Convergence for 79th lambda value not reached after maxit=100000 iterations;
solutions for larger lambdas returned
Run Code Online (Sandbox Code Playgroud)
这个警告是什么意思?
此外,我应该认真对待这个警告,即更改 cv.glmnet-function 的某些内容吗?
或者在使用惩罚方法创建预测时我不应该担心这一点?
默认情况下,glmnet尝试计算 100 个 lambda 值的解。该错误表示在第 79 个 lambda 值处,达到了坐标下降的最大迭代(默认为 10^5)。因此,由于解不满足收敛标准,因此仅给出前 78 个 lambda 值的解。您仍然可以使用cv.glmnet- 它只是使用这 78 个 lambda 进行模型选择。如果您想计算更多 lambda,只需传递另一个参数maxit=...,其中...某个数字大于 10^5。