【问题标题】:Lasso or Ridge for correlated variables相关变量的 Lasso 或 Ridge
【发布时间】:2017-03-20 12:56:26
【问题描述】:

我试图理解一句话“在存在相关变量的情况下,岭回归可能是首选。” 假设我们有变量 a1,a2,b1,c2,并且 2 a"s 是相关的。 如果我们使用 Lasso,它可以消除其中一个。Lasso 和 Ridge 都会进行收缩。 所以听起来 Lasso 在这些条件下可能会更好。但报价说里奇更好。这是一个错误的报价还是我遗漏了什么?(也许想得太简单了)

【问题讨论】:

  • 你能附上报价的链接吗?上下文是什么?

标签: machine-learning regression lasso-regression


【解决方案1】:

这个问题的答案很大程度上取决于您正在处理的数据集类型

为您的问题提供一个简短的回答:

进行一些正则化总是好的,因此尽可能避免“普通”线性回归。 Ridge 可以被认为是一个很好的默认正则化,但是,如果您认为在您的功能集中 只有少数 功能实际上有用,您应该考虑 LASSO 正则化 或者,Elastic Net(解释如下)。这两种方法倾向于将“无用”的特征权重降低到

在像您这样的情况下,如果您可能有很多相关的特征,您可能倾向于运行其中一种“归零”正则化方法。 Elastic NetLASSO 都可以使用,但是,Elastic Net 通常比 LASSO 更受欢迎,因为 当您的特征集大于训练集中的实例数或当多个特征高度相关(如在你的情况下)。

弹性网络正则化可以理解为混合了 L2 和 L1 规范的惩罚的混合方法。具体来说,弹性网络回归使成本函数最小化:

混合比率r 超参数介于 0 和 1 之间,控制使用多少 L2 或 L1 惩罚(0 是 ridge,1 是 lasso)。

最后,Python Scikit-Learn 的 库使 ElasticNet 易于实施。例如:

from sklearn.linear_model import ElasticNet
elastic_net= ElasticNet(alpha= 0.1, l1_ratio= 0.5) # l1_ratio is the mix r
elastic_net.fit(X,y)

如果您正在研究 LASSO 正则化Ridge 正则化 相比如何工作的更多数学解释,我建议您查看 Aurelien Geron 的 书籍:Hands on Machine Learning 或斯坦福大学关于正则化的资源(与 MATLAB 软件包明显相似):https://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html

这是比较两个惩罚和成本函数的python生成图:

在 LASSO 上,我们可以观察到批量梯度下降路径在朝向末端的排水沟中有一点反弹。这主要是由于斜率在 O_2 = 0 时突然变化。应逐渐降低学习率以收敛到全局最小值(根据 Hands-on-ML guide 生成的图

希望对您有所帮助!

【讨论】:

    【解决方案2】:

    通常没有首选方法。 LASSO 可能会将某些系数驱动为 0,而 Ridge 不会但会缩小它们的值。

    此外,Ridge 的计算速度可能更快,因为最小化 L2 范数比 L1 范数 (LASSO) 更容易。

    如果可能的话,为什么不同时实现这两种方法并执行交叉验证,看看哪个产生更好的结果?

    最后,我还建议研究Elastic Net,它是 LASSO 和 Ridge 的一种混合体。

    【讨论】:

      【解决方案3】:

      一般来说,人们可能会期望套索 在预测变量相对较少的环境中表现更好 有大量系数,其余预测变量有系数 非常小或等于零。岭回归将表现更好 当响应是许多预测变量的函数时,所有变量的系数为 大小大致相等。但是,与 对于真实数据集,响应永远不会先验。一种技术,例如 可以使用交叉验证来确定哪种方法更好 在特定的数据集上。

      --ISL

      【讨论】:

        猜你喜欢
        • 2020-08-09
        • 2016-06-13
        • 1970-01-01
        • 2021-05-30
        • 2021-01-16
        • 1970-01-01
        • 2020-07-17
        • 2016-10-02
        • 2020-09-19
        相关资源
        最近更新 更多