正则线性模型之岭回归(Ridge Regression)、套索回归(Lasso Regression)、和弹性网络(Elastic Net)

正则线性模型

减少过度拟合的一个好办法就是对模型正则化(即约束它):它拥有的自由度越低,就越不容易过度拟合数据。比如,将多项式模型正则化的简单方法就是降低多项式的阶数。

对线性模型来说,正则化通常通过约束模型的权重来实现。接下来我们将会使用岭回归(Ridge Regression)、套索回归(LassoRegression)及弹性网络(Elastic Net)这三种不同的实现方法对权重进行约束。

岭回归

岭回归(也叫作吉洪诺夫正则化)是线性回归的正则化版:在成
本函数中添加一个等于在这里插入图片描述的正则项。这使得学习中的算法不仅需要拟合数据,同时还要让模型权重保持最小。注意,正则项只能在训练的时候添加到成本函数中,一旦训练完成,你需要使用未经正则化的性能指标来评估模型性能。

超参数α控制的是对模型进行正则化的程度。如果α=0,则岭回归就是线性模型。如果α非常大,那么所有的权重都将非常接近于零,结果是一条穿过数据平均值的水平线。

岭回归成本函数:
正则线性模型之岭回归(Ridge Regression)、套索回归(Lasso Regression)、和弹性网络(Elastic Net)_第1张图片

注意,这里偏置项θ0没有正则化(求和从i=1开始,不是i=0)。如果我们将w定义为特征权重的向量(θ1到θn),那么正则项即等于1/2(||w||2)2其中||w||2为权重向量的l2范数。

另外,在执行岭回归之前,必须对数据进行缩放(例如使用
StandardScaler),因为它对输入特征的大小非常敏感。大多数正则化模型都是如此。

下图显示了使用不同α值对某个线性数据进行训练的几种岭回归模型。左边直接使用岭回归,导致预测是线性的。而右边,首先使用PolynomialFeatures(degree=10)对数据进行扩展,然后用StandardScaler进行缩放,最后再将岭回归模型用于结果特征:这就是岭正则化后的多项式回归。注意看α是如何使预测更平坦的(也就是不那么极端,更为合理);这降低了模型的方差,但是提升了偏差。

正则线性模型之岭回归(Ridge Regression)、套索回归(Lasso Regression)、和弹性网络(Elastic Net)_第2张图片

与线性回归一样,我们也可以在计算闭式方程或者执行梯度下降时,执行岭回归。利弊都一样。以下显示的是闭式解(其中A是一个n×n的单位矩阵,除了左上单元格为0,其他与偏置项对应)。

正则线性模型之岭回归(Ridge Regression)、套索回归(Lasso Regression)、和弹性网络(Elastic Net)_第3张图片

套索回归
线性回归的另一种正则化,叫作最小绝对收缩和选择算子回归
(Least Absolute Shrinkage and Selection Operator Regression,简称Lasso回归,或套索回归)。与岭回归一样,它也是向成本函数增加一个正则项,但是它增加的是权重向量的l1范数,而不是l2范数的平方的一半。

套索回归的成本函数:

正则线性模型之岭回归(Ridge Regression)、套索回归(Lasso Regression)、和弹性网络(Elastic Net)_第4张图片

下图显示了使用不同α值对某个线性数据进行训练的几种Lasso回归模型。这个内容与之前的岭回归模型相同,但是岭回归模型换成了Lasso回归模型,同时α值较小。

Lasso回归的一个重要特点是它倾向于完全消除掉最不重要特征的权重(也就是将它们设置为零)。例如,下图右图中的虚线α=1e-07)看起来像是二次的,快要接近于线性:因为所有高阶多项式的特征权重都等于零。换句话说,Lasso回归会自动执行特征选择并输出一个稀疏模型(即只有很少的特征有非零权重)。

正则线性模型之岭回归(Ridge Regression)、套索回归(Lasso Regression)、和弹性网络(Elastic Net)_第5张图片

弹性网络
弹性网络是岭回归与Lasso回归之间的中间地带。其正则项就是岭回归和Lasso回归的正则项的混合,混合比例通过r来控制。当r=时,弹性网络即等同于岭回归,而当r=1时,即相当于Lasso回归。

弹性网络成本函数:
正则线性模型之岭回归(Ridge Regression)、套索回归(Lasso Regression)、和弹性网络(Elastic Net)_第6张图片

那么,到底如何选用线性回归、岭回归、Lasso回归和弹性网络呢?通常来说,有正则化——哪怕是很小,总是比没有更可取一些。所以大多数情况下,你应该避免使用纯线性回归。岭回归是个不错的默认选择,但是如果你觉得实际用到的特征只有少数几个,那就应该更倾向于Lasso回归或是弹性网络,因为它们会将无用特征的权重降为零。一般而言,弹性网络优于Lasso回归,因为当特征数量超过训练实例数量,又或者是几个特征强相关时,Lasso回归的表现可能非常不稳定。

参考:
<<机器学习实战:基于Scikit-Learn和TensorFlow>>(Hands-On Machine Learning with Scikit-Learn )

你可能感兴趣的:(deep,learning,deep,learning)