我试图理解一句话“在存在相关变量的情况下,岭回归可能是首选。”假设我们有变量 a1、a2、b1、c2,并且 2 a"s 是相关的。如果我们使用 Lasso 它可以消除其中一个。Lasso 和 Ridge 都会收缩。所以听起来 Lasso 在这些条件下可能会更好。但报价说里奇更好。这是一个错误的报价还是我遗漏了什么?(也许想得太简单了)
3 回答
这个问题的答案很大程度上取决于您正在处理的数据集类型。
要简短回答您的问题:
进行一些正则化总是好的,因此尽可能避免“普通”线性回归。 Ridge可以被认为是一个很好的默认正则化,但是,如果您认为在您的功能集中只有少数功能实际上是有用的,您应该考虑LASSO 正则化或弹性网络(解释如下)。这两种方法倾向于将“无用”的特征权重减少到零。
在像你这样的情况下,如果你可能有很多相关的特征,你可能倾向于运行这些“归零”正则化方法之一。Elastic Net和LASSO都可以使用,但是,Elastic Net通常比LASSO更受青睐,因为当您的特征集大于训练集中的实例数量或多个特征非常相关时, LASSO可能会出现异常行为(就像你的情况一样)。
弹性网络正则化可以理解为混合了 L2 和 L1 规范的惩罚的混合方法。具体来说,弹性网络回归最小化了成本函数:
混合比r 超参数介于 0 和 1 之间,并控制使用多少 L2 或 L1 惩罚(0 是岭,1 是套索)。
最后,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)
如果您正在研究与Ridge 正则化相比LASSO 正则化如何工作的更多数学解释,我建议您查看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 生成的图
希望有帮助!
一般来说,没有首选的方法。LASSO 可能会将某些系数驱动为 0,而 Ridge 不会但会缩小它们的值。
此外,Ridge 的计算速度可能更快,因为最小化 L2 范数比 L1 范数 (LASSO) 更容易。
如果可能,为什么不实现这两种方法并执行交叉验证,看看哪个产生更好的结果?
最后,我还建议研究一下Elastic Net,它是 LASSO 和 Ridge 的一种混合体。
通常,人们可能会期望套索在相对较少数量的预测变量具有大量系数而其余预测变量的系数非常小或等于零的设置中表现更好。当响应是许多预测变量的函数时,岭回归会表现得更好,所有预测变量的系数都大致相等。但是,对于真实数据集,与响应相关的预测变量的数量永远不会先验。可以使用诸如交叉验证之类的技术来确定在特定数据集上哪种方法更好。
--ISL