数学工具 2:Ridge 问题#
这篇是数学工具集合里的第二个工具:Ridge 问题。
Ridge 问题就是在普通最小二乘问题后面加一个 L2 正则项 的优化问题,也叫 ridge regression,中文常译为岭回归。
在前面的记号里,普通 least squares 是:
h⋆=arghmin21∥x−Dh∥22
Ridge 问题是:
h⋆=arghmin[21∥x−Dh∥22+2λ∥h∥22]
其中:
x
是你想表示的数据;
D
是字典矩阵、特征矩阵或设计矩阵;
h
是要求的系数;
λ≥0
是正则化强度。
1. Ridge 在惩罚什么?#
Ridge 惩罚的是:
∥h∥22
展开就是:
∥h∥22=h12+h22+⋯+hk2
所以 ridge 的完整展开是:
h⋆=argh1,…,hkmin21i=1∑m(xi−j=1∑kdijhj)2+2λj=1∑khj2
第一项:
21∥x−Dh∥22
要求 Dh 尽量接近 x。
第二项:
2λ∥h∥22
要求 h 不要太大。
所以 ridge 同时做两件事:
拟合数据+压小系数
2. 为什么要加 Ridge?#
普通最小二乘的解析解是:
h⋆=(D⊤D)−1D⊤x
但这个公式有一个问题:如果
D⊤D
不可逆,或者非常接近不可逆,那么解会不稳定。
例如特征之间高度相关时,普通最小二乘可能会得到很大的系数:
h1=1000,h2=−999
虽然它们组合后可能能拟合数据,但这种解非常脆弱。数据稍微变化一点,系数就可能剧烈变化。
Ridge 会惩罚大系数,所以会倾向于得到更平滑、更稳定的解。
3. Ridge 的解析解怎么推导?#
Ridge 目标函数是:
J(h)=21∥x−Dh∥22+2λ∥h∥22
先展开第一项:
∥x−Dh∥22=(x−Dh)⊤(x−Dh)
展开乘法:
(x−Dh)⊤(x−Dh)=x⊤x−x⊤Dh−(Dh)⊤x+(Dh)⊤Dh
因为
x⊤Dh
是一个标量,所以:
x⊤Dh=(Dh)⊤x
同时:
(Dh)⊤x=h⊤D⊤x
以及:
(Dh)⊤Dh=h⊤D⊤Dh
因此:
∥x−Dh∥22=x⊤x−2h⊤D⊤x+h⊤D⊤Dh
Ridge 目标变成:
J(h)=21(x⊤x−2h⊤D⊤x+h⊤D⊤Dh)+2λh⊤h
继续整理:
J(h)=21x⊤x−h⊤D⊤x+21h⊤D⊤Dh+2λh⊤h
对 h 求梯度:
∇hJ(h)=−D⊤x+D⊤Dh+λh
合并:
∇hJ(h)=(D⊤D+λI)h−D⊤x
令梯度等于 0:
(D⊤D+λI)h−D⊤x=0
所以:
(D⊤D+λI)h=D⊤x
如果 λ>0,通常
D⊤D+λI
会变得可逆。
于是得到 ridge 解:
h⋆=(D⊤D+λI)−1D⊤x
4. Ridge 和 LASSO 的区别#
LASSO 是:
hmin21∥x−Dh∥22+λ∥h∥1
其中:
∥h∥1=∣h1∣+⋯+∣hk∣
Ridge 是:
hmin21∥x−Dh∥22+2λ∥h∥22
其中:
∥h∥22=h12+⋯+hk2
核心区别是:
LASSO:容易让一些 hj 精确变成 0
Ridge:通常只是把 hj 压小,不会精确变成 0
| 方法 | 正则项 | 效果 |
|---|
| Least Squares | 无 | 只追求拟合 |
| Ridge | λ∥h∥22 | 压小系数,提升稳定性 |
| LASSO | λ∥h∥1 | 压小系数,并产生稀疏性 |
5. 一个最简单的一维例子#
看一维 ridge:
hmin21(x−h)2+2λh2
也就是:
J(h)=21(x−h)2+2λh2
先展开平方:
(x−h)2=x2−2xh+h2
所以:
J(h)=21x2−xh+21h2+2λh2
合并 h2 项:
J(h)=21x2−xh+21+λh2
求导:
J′(h)=−x+(1+λ)h
令导数为 0:
−x+(1+λ)h=0
所以:
(1+λ)h=x
得到:
h⋆=1+λx
这说明 ridge 会把原来的 x 缩小:
x↦1+λx
如果:
λ=0
那么:
h⋆=x
如果:
λ=1
那么:
h⋆=2x
如果:
λ=9
那么:
h⋆=10x
所以 λ 越大,系数越小。
6. 一句话总结#
Ridge 问题就是在最小二乘后面加 L2 惩罚,让系数变小、解更稳定的问题。
它的标准形式是:
h⋆=arghmin[21∥x−Dh∥22+2λ∥h∥22]
解析解是:
h⋆=(D⊤D+λI)−1D⊤x