问题描述
我通过多次运行 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 =