如何解释 lasso 模型中排除或包含的变量?

机器算法验证 统计学意义 引导程序 模拟 套索 回归策略
2022-03-08 22:53:40

我从其他帖子中了解到,不能将“重要性”或“重要性”归因于进入套索模型的预测变量,因为计算这些变量的 p 值或标准差仍在进行中。

根据这种推理,断言不能说从套索模型中排除的变量是“不相关的”或“无关紧要的”是否正确?

如果是这样,对于套索模型中排除或包含的变量,我实际上可以声称什么?在我的具体情况下,我通过重复 10 次交叉验证 100 次来选择调整参数 lambda,以减少随机性并平均误差曲线。

UPDATE1:我遵循以下建议并使用引导示例重新运行套索。我尝试了 100 个样本(这个数量是我的计算机能力在一夜之间可以管理的)并且出现了一些模式。我的 41 个变量中有 2 个进入模型的次数超过 95%,3 个变量超过 90%,5 个变量超过 85%。这 5 个变量是我使用原始样本运行模型时进入模型的 9 个变量,并且是当时系数值最高的变量。如果我使用 1000 个引导样本运行套索并且保持这些模式,那么呈现我的结果的最佳方式是什么?

  • 1000 个引导样本听起来足够吗?(我的样本量是 116)

  • 我是否应该列出所有变量以及它们进入模型的频率,然后争辩说那些更频繁地进入模型的变量更可能是显着的?

  • 就我的主张而言,这就是我所能做的吗?因为这是一项正在进行的工作(见上文),所以我不能使用截止值,对吧?

UPDATE2:根据以下建议,我计算了以下内容:平均而言,原始模型中 78% 的变量进入了为 100 个引导样本生成的模型。另一方面,反过来只有 41%。这在很大程度上与为 bootstrap 样本生成的模型往往包含比原始模型 (9) 更多的变量(平均 17 个)这一事实有关。

UPDATE3:如果你能帮助我解释我从引导和蒙特卡洛模拟中得到的结果,请看看这个其他帖子。

1个回答

你的结论是正确的。考虑两个方面:

  1. 检测效果的统计能力。除非功率非常高,否则甚至可能错过很大的实际效果。
  2. 可靠性:找到正确(真实)特征的概率很高。

至少有4个主要考虑因素:

  1. 您可以使用相同的数据集重现该方法吗?
  2. 其他人使用相同的数据集是否可以重现该方法?
  3. 使用其他数据集是否可以重现结果?
  4. 结果可靠吗?

当一个人想要做的不仅仅是预测,而是想要真正得出关于哪些特征对预测结果很重要的结论时,3. 和 4. 是至关重要的。

您已经解决了 3。(为此,100 个引导程序就足够了),但除了单个特征包含分数之外,我们还需要知道引导程序特征集与原始选定特征集之间的平均绝对“距离”。例如,从引导样本中发现的整个样本中检测到的平均特征数是多少?在原始分析中发现的从 bootstrap 样本中选择的平均特征数是多少?引导程序找到与原始特征集完全匹配的次数比例是多少?bootstrap 在一个特征与原始特征完全一致的范围内的比例是多少?两个特点?

说在得出总体结论时应使用任何截止值是不恰当的。

关于第 4 部分,这些都没有解决过程的可靠性,即特征集与“真实”特征集的接近程度。为了解决这个问题,您可以进行蒙特卡罗重新模拟研究,将原始样本套索结果作为“真相”,并使用一些假设的错误结构模拟新的响应向量数百次。对于每次重新模拟,您在原始的整个预测矩阵和新的响应向量上运行套索,并确定所选套索特征集与您模拟的真实情况的接近程度。重新模拟整个候选预测变量集的条件,并使用来自初始拟合模型的系数估计(在套索情况下,选择的预测变量集)作为方便的“真相”进行模拟。

为了在给定原始的新实现,可以使用残差方差并假设均值为零的正态性,或者更具经验性,保存原始拟合中的所有残差并获取自举样本从它们中为每个模拟添加残差到已知的线性预测器然后从头开始运行原始建模过程(包括选择最佳惩罚)并开发新模型。对于大约 100 次迭代中的每一次,将新模型与您正在模拟的真实模型进行比较。YXXβ

同样,这是对过程可靠性的一个很好的检查——能够找到“真实”特征并获得对的良好估计。β

是二元时,重新模拟不是处理残差,而是从原始拟合(例如,使用套索)计算线性预测变量,进行逻辑变换,并为每个蒙特卡罗模拟生成一个新的向量重新适应。例如,在 R 中可以说YXβY

lp <- predict(...) # assuming suitable predict method available, or fitted()
probs <- plogis(lp)
y <- ifelse(runif(n) <= probs, 1, 0)