LASSO 剩余特征用于不同的惩罚

数据挖掘 scikit-学习 时间序列 回归 套索
2021-10-12 18:41:57

我正在使用 sklearn LASSOCV 函数,并且我正在更改惩罚参数以调整被杀死的特征数量。例如对于α=0.01 我还有 55 个功能 α=0.5 我还有 6 个剩余功能。

我希望我在第二种情况下获得的 6 个功能是我在第一种情况下获得的 55 个功能的子集。然而,这不是正在发生的事情。6 个特征中有 4 个不在第一种情况的 55 个中。

有人可以向我解释为什么会发生这种情况的直觉吗?

谢谢,P

2个回答

Lambda 是一个调整参数(“多少正则化”,我认为在 sklearn 中称为 alpha),您可以选择 lambda 以便优化拟合(例如通过 MSE)。您可以通过运行交叉验证来做到这一点。

这个页面(对于 R 中的 GLMnet 包)解释了如何以非常有指导性的方式应用 Lasso(这里的 alpha 是弹性网络混合参数,Lambda 是调整参数)。

您还可以查看“ Introduction to Statistical Learning ”,Ch。6.2,其中以非常好的方式讨论了套索。

本书还有Python Labs,它应该为您提供如何在 Python 中使用 Lasso 的蓝图(参见第 6.6.2 节)。

没有什么可以保证这六个特征将是 55 个的子集。直观地说,如果您将问题参数化为特征数量而不是 lambda,则更容易看出两个变量如何比一个不同的变量更好地解释输出。

这些正则化方法可能产生的另一个问题来自相关变量。如果您采用两个对输出具有相似影响的高度相关的解释变量,您可能永远无法确定正则化过程将保留哪一个。在相关变量的背景下,更容易看出,通过几乎任意保留一个变量而不是另一个变量,最终会导致所选变量出现一些不稳定性。

请注意,某些实现(R 中的 glmnet)以不同的方式进行。它通过不同的值迭代地进行λ 并将变量删除为 λ 增加...以便更高 alpha 的特征是较低 alpha 的特征的子集。

在另一个主题上,这可能暗示您需要在特征工程方面做一些工作,因为某些变量似乎会捕获冗余信息。一个好的特征工程工作也将有助于模型的可解释性。