微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用预选的 Lambda 对 LASSO 运行 10 折交叉验证

如何解决如何使用预选的 Lambda 对 LASSO 运行 10 折交叉验证

我通过多次运行 LASSO 并取平均 lambda 来选择一个 lambda,我使用了 glmnet。我知道想用这个 Lambda 对这个 LASSO 运行 10 倍交叉验证。

这是我迄今为止尝试过的代码示例:

library(caret)
library(glmnet)
train.control = trainControl(method = "cv",number = 10)


lm.out = lm(outcome ~ 0 +.,data = df)
x = model.matrix(lm.out)
y = df$outcome

model = train(glmnet(x,y,lambda = mean(Lambda_LASSO)),data = df,trControl = train.control)

这里的 Lambda_LASSO 是从 cv.glmnet 的迭代运行中取出的 Lambda 向量。

解决方法

首先,我不得不说这听起来很奇怪:

我通过多次运行 LASSO 选择了一个 lambda 平均λ

取 lambda 值的平均值的目的是什么?

下次提供示例数据集,并指定它是分类还是回归。假设您的 <p> using nth-child(2)</p> <div class="test_name"> <div id ="1evhgctrq1bu51qgn9v81r38fhl_container" class="testing">testing 1</div> <div id ="1evhgctrs18701vda1462185r1l_container" class="testing">testing 2</div> </div> <hr/> <p> using last-child</p> <div class="test_name-2"> <div id ="1evhgctrq1bu51qgn9v81r38fhl_container" class="testing">testing 1</div> <div id ="1evhgctrs18701vda1462185r1l_container" class="testing">testing 2</div> </div> <hr/> <p> using last-of-type</p> <div class="test_name-3"> <div id ="1evhgctrq1bu51qgn9v81r38fhl_container" class="testing">testing 1</div> <div id ="1evhgctrs18701vda1462185r1l_container" class="testing">testing 2</div> </div> <hr/> <p> using sibling combinator</p> <div class="test_name-4"> <div id ="1evhgctrq1bu51qgn9v81r38fhl_container" class="testing">testing 1</div> <div id ="1evhgctrs18701vda1462185r1l_container" class="testing">testing 2</div> </div> <hr/> <p> using nth-child(even)</p> <div class="test_name-5"> <div id ="1evhgctrq1bu51qgn9v81r38fhl_container" class="testing">testing 1</div> <div id ="1evhgctrs18701vda1462185r1l_container" class="testing">testing 2</div> </div> <hr/> <p> using :not() selector</p> <div class="test_name-6"> <div id ="1evhgctrq1bu51qgn9v81r38fhl_container" class="testing">testing 1</div> <div id ="1evhgctrs18701vda1462185r1l_container" class="testing">testing 2</div> </div> <hr/> 是这样的,我们从 glmnet 获取 lambda:

df

您可以使用 df = data.frame(matrix(runif(50*30),ncol=30)) df$outcome = rnorm(50) x = model.matrix(outcome ~ 0 +.,data = df) y = df$outcome Lambda_LASSO = glmnet(x,y)$lambda 将其输入插入符号并将 alpha 固定为 1,因为您正在执行套索:

tuneGrid =

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。