这个问题的答案很大程度上取决于您正在处理的数据集类型。
为您的问题提供一个简短的回答:
进行一些正则化总是好的,因此尽可能避免“普通”线性回归。
Ridge 可以被认为是一个很好的默认正则化,但是,如果您认为在您的功能集中 只有少数 功能实际上有用,您应该考虑 LASSO 正则化 或者,Elastic Net(解释如下)。这两种方法倾向于将“无用”的特征权重降低到零。
在像您这样的情况下,如果您可能有很多相关的特征,您可能倾向于运行其中一种“归零”正则化方法。 Elastic Net 和 LASSO 都可以使用,但是,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 生成的图
希望对您有所帮助!