glmnet 的插入符号训练功能是否对 alpha 和 lambda 进行交叉验证?

机器算法验证 r 机器学习 交叉验证 插入符号 网络
2022-01-25 16:14:52

R 包是否对模型和模型进行caret交叉验证运行这段代码,alphalambdaglmnet

eGrid <- expand.grid(.alpha = (1:10) * 0.1, 
                     .lambda = (1:10) * 0.1)

Control <- trainControl(method = "repeatedcv",repeats = 3,verboseIter =TRUE)

netFit <- train(x =train_features, y = y_train,
          method = "glmnet",
          tuneGrid = eGrid,
          trControl = Control)

训练日志如下所示。

Fold10.Rep3: alpha=1.0, lambda=NA 

是什么lambda=NA意思?

2个回答

老问题,但我最近不得不处理这个问题并发现这个问题作为参考。

这是另一种方法:

glmnet 小插图 ( https://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html ) 专门解决了这个问题,建议使用 foldids 参数指定交叉验证折叠并的网格上这使用相同的 cv 折叠来验证网格中每个λαλα

这可能优于同时验证的原因是 cv.glmnet 验证使用“热启动”来选择而不是随机选择即加快验证并提高有网格中的最佳(因为精细网格的计算成本更高)。αλλλλ>0λ

train确实调整了两者。

基本上,你只需要alpha在训练时就可以得到不同lambda使用值的预测predict.glmnet也许价值lambda = "all"或其他东西会提供更多信息。

最大限度