来源:原始 Jupyter Notebook。内容已转换为网页阅读格式;下载原文件。
在前面的学习中,我们从同一份样本数据中得到了三个模型,而且三个模型的拟合效果都很好,不过很显然,二次模型和三次模型都过于复杂了,属于过拟合。为了判断哪个模型的性能最优,泛化能力最强,我们将数据集划分为训练集和测试集,然后选择在测试集上表现最好的模型。使用这种方法可以有效的评估模型结果,避免过拟合。
这一节我们将学习一种避免过拟合的新方法:正则化(regularization)方法。
在线性回归模型 y^=w0+w1x1+w2x2+...+wnxn=wTx 中,每一个变量 xi 就是模型的一个特征,参数 wi 代表相应的特征在模型中所占的权重。在前面的例子里,本来只有一个特征,我们人为造出了两个特征来(x2 和 x3),得到了三个模型,这两个特征对模型来说其实根本没用,过拟合就是因为模型过于复杂,把这些没用的特征也学习到了。所以如果能降低这些没用特征的权重,譬如直接降到 0,那就不会出现过拟合了,为了达到这一点,我们可以稍微改进下我们的损失函数:
loss=i=1∑m(yi−wTxi)2+λ∥w∥2这个函数相比于我们之前的平方损失函数多了一个 λ∥w∥2,这被称之为 正则化项 或 惩罚项,其中正则化参数 λ>0,它是一个超参数,∥w∥2 表示 L2 范数,如下:
∥w∥2=i=1∑mwi2=w12+w22+⋯+wm2很显然,为了使上面的损失函数最小,模型中不相干的参数越小越好,从而降低过拟合的风险,使用这个损失函数的回归方法称为 岭回归(ridge regression)。
上面的 L2 范数可以改成 Lp 范数,当 p=1 时,有损失函数:
loss=i=1∑m(yi−wTxi)2+λ∥w∥其中 L1 范数如下:
∥w∥=i=1∑m∣wi∣=∣w1∣+∣w2∣+⋯+∣wm∣这种回归方法称为 LASSO 回归(Least Absolute Shrinkage and Selection Operator)。
可以看到这里的损失函数仍然是最小二乘,但是在后面增加了 L1 或 L2 范数约束,所以岭回归又被称为 基于 L2 约束的最小二乘法,LASSO 回归又被称为 基于 L1 约束的最小二乘法。
L2 约束的最小二乘#
可以看到,为了避免过拟合,我们在模型的参数上施加了一定的约束条件。在普通最小二乘回归中,参数空间没有限制,参数可以取任何值,但是在岭回归和 Lasso 回归中,参数被限制在一定的范围内,这被称为 部分空间约束的最小二乘学习法。为了保证参数不会偏移到值域范围之外,可以附加一个 Pθ=θ 的约束条件。
minθJ(θ),Pθ=θP 是满足 P2=P 和 PT=P 的 b×b 维矩阵,表示的是矩阵 P 的值域的正交投影矩阵。P 通常是手工设置的,通过主成分分析法,也可以基于数据进行设置。
疑惑:Pθ=θ,P 不就是单位矩阵吗?
不过正交投影矩阵 P 的设置有很大的自由度,所以改用操作相对容易的 L2 约束条件,譬如:
minθJ(θ),∥θ∥2⩽R这时的参数空间如下图所示:

从图中可以看出来,这种约束方法是以参数空间的原点为圆心,在一定半径范围的圆内(一般为超球)进行求解的。R 表示的是圆的半径。
利用拉格朗日对偶问题,该问题可以转换为求解下式的最优解:
maxλminθ[J(θ)+2λ(∥θ∥2−R)],λ⩾0拉格朗日对偶问题的拉格朗日乘子 λ 的解由圆的半径 R 决定,如果不根据 R 来决定 λ,而是直接指定的话,L2 约束的最小二乘解 θ^ 可以通过下式求得:
θ^=argminθ[J(θ)+2λ∥θ∥2]这就是岭回归。
一般 L2 约束的最小二乘#
上面的 L2 约束可以写成更一般的情况:
minθJ(θ),θTGθ⩽R这里的 G 是一个 b×b 的正则化矩阵。当 G 是对称正定矩阵的时候,θTGθ⩽R 可以把参数限制在一个椭圆区域内。
L1 约束的最小二乘#
和 L2 约束类似,L1 约束可以写成下面的形式:
minθJ(θ),∥θ∥⩽R这时的参数空间如下图所示:

可见参数被限制在一个菱形范围内,利用拉格朗日对偶问题,L1 约束的最小二乘解可以通过下式求得:
θ^=argminθ(J(θ)+λ∥θ∥)这就是 Lasso 回归。如果我们在参数空间中画出损失函数 J(θ) 的等高线,可以把 L1 约束和 L2 约束作一个对比。由于 J(θ) 是平方损失函数,它是一个二次凸函数,所以它的等高线在参数空间呈椭圆状,椭圆的中心即是最小二乘解,如下图:

而等高线和约束边界的交点即为带约束条件的最小二乘解。可以直观的看出,由于 L1 约束边界在各个参数的轴有一个尖角,等高线和它的交点更容易出现在参数的轴上,也就意味着其他的参数等于 0,像这样的解被称为 稀疏解(Sparse solution)。
岭回归的几何解释#
如果上面的等高线看上去不是很直观,我们可以在三维场景下再看看岭回归到底是怎么限制参数空间的。在一元线性回归的求解过程中,我们知道,损失函数实际上就是三维空间的一个曲面,损失函数的最小值就是该曲面的最低点。

岭回归意味着参数的取值被限制在一个圆内,也就是下面三维空间中的圆柱体,这个圆柱体和曲面的交点就是岭回归的解。

所以,从参数平面理解,即为抛物面等高线在水平面的投影和圆的交点,如下图所示:

Lp 约束的最小二乘#
上面介绍了 L1 约束和 L2 约束,我们可以将其进一步推广到 Lp 约束:
∥θ∥p=⟮j=1∑b∣θj∣p⟯p1⩽RLp 范数中有两个比较特殊的场景,一种是当 p=0 时的 L0 范数:
∥θ∥0=j=1∑bI(θj=0)其中 I(θj=0) 为指示函数,θj=0 时为 1,否则为 0,所以 L0 范数表示的是非零元素的个数。
另一种场景是当 p=∞ 时的 L∞ 范数:
∥θ∥∞=max{∣θ1∣,…,∣θb∣}它表示的是元素绝对值中的最大值,因此 L∞ 范数也称为 最大值范数。
我们画出不同的 p 值参数空间的约束边界,如下图:

当 p⩽1 时,约束边界在坐标轴上呈有峰值的尖形;当 p⩾1 时,呈凸形,在坐标轴上呈尖行是存在稀疏解的秘诀。但是,如果约束边界不是凸形的话,可能存在多个解,最优化往往很困难。因此 p=1 是稀疏解存在的唯一凸形。
L1+L2 约束的最小二乘#
L1 约束在实际使用时存在些许限制:
- 参数 b 比训练样本 n 多时,线性模型可选择的最大特征数被局限为 n;
- 如果有多个基函数相似的集合时,L1 约束会选择一个而忽略其它的,另外,L1 约束只能在多个相关性较强中的特征中选择一个;
- 参数 b 比训练样本 n 少时, L1 的通用性比 L2 稍差;
通过结合 L1 和 L2 两个约束可以解决上述问题,这就是 L1+L2 约束的最小二乘,也被称为 弹性网。
(1−τ)∥θ∥1+τ∥θ∥2⩽R其中 0⩽τ⩽1,当 τ=0 时就是 L1 约束,当 τ=1 时就是 L2 约束,当 τ=0.5 时,约束边界如下图所示:

可以看出 τ=0.5 时的 L1+L2 约束和 L1.4 约束几乎一样,但是如果我们把角的部分放大,可以看出 L1.4 约束和 L2 约束一样平滑,而 L1+L2 约束却是和 L1 约束一样呈尖行。所以 L1+L2 约束也和 L1 约束一样容易求得稀疏解。
实验证明 L1+L2 约束比 L1 约束具有更高的精度,但是为了调整 L1 和 L2 的平衡,引入了一个新的超参数 τ,求解要更复杂一点。