套索回归不会删除 2 个高度相关的特征

Lasso regression won't remove 2 features which are highly correlated

我有两个特征,比如 F1 和 F2,它们的相关性约为 0.9。

当我构建模型时,我首先考虑了所有要进入回归模型的特征。一旦我有了我的模型,我就会对我的模型进行 运行 套索回归,希望这能解决特征之间的任何共线性问题。但是,套索回归在我的模型中保留了 F1 和 F2。

两个问题:

i) 如果F1 和F2 高度相关,但Lasso 回归仍然保持两者,这意味着什么?这是否意味着正则化在某些情况下不起作用?

ii) 如何调整我的模型或 Lasso 回归模型以踢出模型中的 F1 或 F2? (我正在使用 sklearn.linear_model.LogisticRegression,并设置了 penalty = 'l1' 或 'elasticnet',尝试了非常大或非常小的 C 值,尝试了 'liblinear' 或 'saga' 求解器,并且 l1_ratio = 1,但我仍然无法从我的模型中踢出 F1 或 F2)

您问题的答案:

i) Lasso 逐渐减小系数。你可能会在 Lasso/Ridge 背后的人 Robert Tibshirani 所著的一些书中找到一张漂亮的图片,你会看到一些系数如何随着正则化系数的增加而逐渐下降到零(你可以自己进行这样的实验)。模型仍然保留两者的事实可能意味着两件事:模型认为两者都很重要,或者没有足够的正则化来杀死其中之一。

ii) 你是对的,你正在使用 LassoL1 正则化。它是 C 参数。它在 sklearn 中的编码方式:C 越小,正则化参数(逆)越高。尽管在机器学习中,您的任务不是完全排除共线性("to kill F1 or F2" 在您的客厅),而是找到一个模型(如果您愿意,也可以是一组参数)可以最好地概括。这是通过 CV 进行模型调整来完成的。警告:更高的正则化意味着更多的欠拟合。

我要补充的是,共线性对于线性回归来说有点危险,因为它可能会导致模型不稳定(不同子样本的系数不同)。因此,对于线性回归,您不妨也检查一下。