使用套索进行回归变量选择的缺点是什么?

机器算法验证 回归 特征选择 套索
2022-02-09 23:32:35

据我所知,使用套索进行变量选择可以处理相关输入的问题。此外,由于它等效于最小角度回归,因此计算速度并不慢。然而,许多人(例如我认识的从事生物统计学的人)似乎仍然倾向于逐步或阶段性变量选择。使用套索是否有任何实际的缺点,使其不受欢迎?

4个回答

没有理由进行逐步选择。这是错误的。

LASSO/LAR 是最好的自动方法。但它们是自动方法。他们让分析师不要思考。

在许多分析中,一些变量应该在模型中,而不管任何显着性度量。有时它们是必要的控制变量。其他时候,找到一个小的影响可能非常重要。

如果你只关心预测误差而不关心可解释性、随意推理、模型简单性、系数测试等,为什么还要使用线性回归模型?

您可以使用诸如提升决策树或支持向量回归之类的方法来获得更好的预测质量,同时仍然避免在上述两种情况下过度拟合。那就是 Lasso 可能不是获得最佳预测质量的最佳选择。

如果我的理解是正确的,那么 Lasso 适用于您仍然对模型本身感兴趣的情况,而不仅仅是预测。也就是说 - 查看选定的变量及其系数,以某种方式进行解释等。为此 - 在某些情况下,套索可能不是最佳选择,正如此处其他问题所讨论的那样。

LASSO 鼓励将系数缩小到 0,即从模型中删除这些变量。相比之下,其他正则化技术(如 ridge)倾向于保留所有变量。

因此,我建议您考虑一下这种下降对您的数据是否有意义。例如,考虑在基因微阵列数据或振动光谱数据上建立临床诊断测试。

  • 你会期望一些基因携带相关信息,但许多其他基因只是噪音。你的申请。删除这些变量是一个非常明智的想法。

  • 相比之下,振动光谱数据集(虽然与微阵列数据相比通常具有相似的维度)倾向于将相关信息“涂抹”在光谱的大部分(相关性)上。在这种情况下,要求正则化删除变量并不是一个特别明智的方法。更重要的是,像 PLS 等其他正则化技术更适合这种类型的数据。

The Elements of Statistical Learning对 LASSO 进行了很好的讨论,并将其与其他正则化技术进行了对比。

这已经是一个很老的问题了,但我觉得同时这里的大多数答案都已经过时了(并且被检查为正确答案的答案是完全错误的恕我直言)。

首先,就获得良好的预测性能而言,LASSO 总是优于逐步的,这并不是普遍正确的。Hastie 等人 (2017)的论文“最佳子集选择、前向逐步选择和套索的扩展比较”提供了对前向逐步、LASSO 和一些 LASSO 变体(如松弛 LASSO 以及最佳子集)的广泛比较,它们表明 stepwise 有时比 LASSO 更好。LASSO 的一种变体——松弛 LASSO——是在最广泛的情况下产生最高模型预测精度的一种。关于哪个是最好的结论很大程度上取决于你认为最好的,例如这是否是最高的预测准确度或选择最少的误报变量。

虽然有很多稀疏学习方法,但其中大多数都比 LASSO 更好。例如,在包中实现了Meinhausen 的松弛 LASSO自适应 LASSOSCAD 和 MCP 惩罚回归ncvreg,它们都比标准 LASSO 具有更少的偏差,因此是可取的。此外,如果您对具有最佳预测性能的绝对稀疏解决方案感兴趣,则 L0 惩罚回归(也称为最佳子集,即基于对非零系数的 nr 的惩罚,而不是 LASSO 中系数的绝对值之和)比 LASSO 更好,参见例如使用迭代自适应脊过程逼近 L0 惩罚 GLM 的l0ara,并且与 LASSO 不同,它也适用于高度共线性的变量,并且L0Learn包可以使用坐标下降拟合 L0 惩罚回归模型,可能与 L2 惩罚相结合以规范共线性。

所以回到你原来的问题:为什么不使用 LASSO 进行变量选择?

  1. 因为系数会有很大的偏差,这在松弛 LASSO、MCP 和 SCAD 惩罚回归中得到了改善,并在 L0 惩罚回归中完全解决(它具有完整的预言属性,即它可以同时挑选出因果变量并重新调整无偏系数,也适用于$p > n$案例)

  2. 因为它往往比 L0 惩罚回归产生更多的误报(在我的测试中l0ara表现最好,即迭代自适应岭,其次是L0Learn

  3. 因为它不能很好地处理共线变量(它基本上只是随机选择一个共线变量) - 迭代自适应岭 /l0ara和 L0L2 惩罚在L0Learn处理这个问题上要好得多。

当然,一般来说,您仍然必须使用交叉验证来调整您的正则化参数以获得最佳预测性能,但这不是问题。如果您愿意,您甚至可以通过非参数自举对您的参数进行高维推断并计算系数的 95% 置信区间(如果您也在每个自举数据集上进行交叉验证,甚至考虑到最佳正则化选择的不确定性,尽管那会变得很慢)。

顺便说一句,计算 LASSO 的拟合速度并不比逐步方法慢,当然,如果使用高度优化的代码,使用暖启动来优化 LASSO 正则化(您可以使用包中fs的 forward stepwise 和lassoLASSO命令比较自己bestsubset)。逐步方法仍然流行的事实可能与许多人的错误信念有关,即可以只保留最终模型并报告它的相关 p 值 - 实际上这不是正确的做法,因为这不是考虑到您的模型选择引入的不确定性,导致 p 值过于乐观。

希望这可以帮助?