【问题标题】:Lasso regression won't remove 2 features which are highly correlated套索回归不会删除高度相关的 2 个特征
【发布时间】:2020-05-24 05:23:43
【问题描述】:

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

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

两个问题:

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

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

【问题讨论】:

    标签: python scikit-learn logistic-regression lasso-regression regularized


    【解决方案1】:

    回答您的问题:

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

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

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

    【讨论】:

    • 感谢您的意见。你说得对,我需要进一步降低我的 C 值。它已经下降到很多小数位,但我想它需要下降更多才能增加正则化强度。我确实使用了 CV,但这两个功能仍在模型中。你也是对的,机器学习任务并不是要完全消除共线性。我最终做的是手动删除此功能之一,结果是性能没有变化。
    猜你喜欢
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 2013-08-18
    • 2017-05-10
    • 2019-01-26
    • 2022-07-06
    相关资源
    最近更新 更多