详解岭回归与L2正则化
最小二乘法存在不可逆和病态问题,导致解析解不可计算或不稳定,岭回归是一种有效的解决方法,以损失无偏性来换取稳定解, 本文介绍详细介绍了岭回归的基本原理,并从L2正则化角度来进行了解释。
在上文中(一文让你彻底搞懂最小二乘法(超详细推导)),我们经过推导得到了最小二乘法的解析解 θ = ( X T X ) − 1 X T Y \theta=\left(X^{T} X\right)^{-1} X^{T} Y θ=(XTX)−1XTY,其中 X X X 为观测到的将样本按行排列的特征矩阵,假设大小为 m × n m \times n m×n,则 m m m 代表样本的个数, n n n 代表样本的特征数。
PS:解析解其实很好记
X
θ
=
y
X
T
X
θ
=
X
T
y
θ
=
(
X
T
X
)
−
1
X
T
y
X \theta=y \\ X^{T} X \theta=X^{T} y \\ \theta=\left(X^{T} X\right)^{-1} X^{T} y
Xθ=yXTXθ=XTyθ=(XTX)−1XTy
有了解析解,在得到观测数据后,直接带入公式即可算出参数 θ \theta θ。然而在实际应用中可能会面临一个情况: X T X X^{T} X XTX不可逆,显然这个式子就没法计算了,那么这个时候应该怎么办呢?
下面先具体分析导致最小二乘法失效的情况,然后再给出常用的解决方法。
最小二乘法中的不可逆与病态问题
当 X T X X^{T} X XTX为奇异矩阵时(不可逆),此时最小二乘法的解析解无法进行计算。导致 X T X X^{T} X XTX不可逆比较可能的原因是 X X X中的列向量线性相关,即数据中存在特征冗余,某些特征可以根据其它特征的线性组合来得到。
奇异矩阵:对于一个方阵,若该方阵的行列式等于0,则称该方阵为奇异矩阵,若不等于0,则称为非奇异矩阵。由此:不逆矩阵 ⇔ \Leftrightarrow ⇔奇异矩阵
事实上,除了不可逆外,当 X T X X^{T} X XTX为 病态矩阵(ill-conditioned matrix) 时,最小二乘法也会失效,此时虽然也能按照解析解进行计算,但由于解的方差过大,不稳定,结果精度很差。
病态矩阵,一言蔽之,就是在求解方程组时对数据的微小扰动比较敏感的矩阵。比如在求解方程组 A x = b Ax=b Ax=b时,如果我们对系数矩阵 A A A或右端项 b b b进行了一个微小的扰动,算出的解和原方程组的解差别很大,这样的矩阵 A A A就称为病态矩阵。
举个例子,比如对于方程组:
[
400
−
201
−
800
401
]
[
x
1
x
2
]
=
[
200
−
200
]
\left[\begin{array}{cc}400 & -201 \\ -800 & 401\end{array}\right]\left[\begin{array}{l}x_{1} \\ x_{2}\end{array}\right]=\left[\begin{array}{c}200 \\ -200\end{array}\right]
[400−800−201401][x1x2]=[200−200]
解为
x
1
=
−
100
,
x
2
=
−
200
x_1=-100,x_2=-200
x1=−100,x2=−200,如果我们对
A
A
A施加一个微小的扰动,比如400改成401,则方程组:
[
401
−
201
−
800
401
]
[
x
1
x
2
]
=
[
200
−
200
]
\left[\begin{array}{cc}401 & -201 \\ -800 & 401\end{array}\right]\left[\begin{array}{l}x_{1} \\ x_{2}\end{array}\right]=\left[\begin{array}{c}200 \\ -200\end{array}\right]
[401−800−201401][x1x2]=[200−200]
会得到一个截然不同的解: x 1 = 40000 , x 2 = 79800 x_1=40000,x_2=79800 x1=40000,x2=79800。
由于数据 X X X我们是通过观测得来的,其本身就存在一定的误差,这是不可避免也是正常的,但这个误差却导致了方程组解的截然不同,这就说明这个方程的结果缺乏稳定性。理想情况下方程组应该对数据微小的扰动具有抗噪性,保证其解的大体一致。
一般用条件数来衡量矩阵的病态程度,条件数定义为:矩阵的范数,乘以其逆矩阵的范数,即:
cond
(
A
)
=
∥
A
∥
⋅
∥
A
−
1
∥
\operatorname{cond}(A)=\|A\| \cdot\left\|A^{-1}\right\|
cond(A)=∥A∥⋅∥∥A−1∥∥
条件数的具体值依赖于矩阵范数的选取,比如可以选1范数、2范数、无穷范数等(各种矩阵范式的定义和计算方式见 矩阵范数与向量范数的公式及其理解),虽然值有所不同,但相对大小一致。
条件数越大,矩阵越病态,越接近不可逆,从而也越难得到精确解。极端情况下,当 A A A不可逆时,条件数为无穷,这时我们即使不改变 b b b,解 x x x也可以改变(因为有无穷组解)。当然判断是否病态有时候不需要去计算条件数,可以通过经验观察得知,比如矩阵行/列近似相关,元素间相差较大数量级等情况下通常容易出现病态。
病态问题在最小二乘法法中是容易出现的,比如当我们在处理包含较多自变量的大型回归问题时,由于自变量较多, 有时难免自变量间存在近似的线性关系从而导致特征矩阵的列向量近似线性相关, 即呈现出病态,这时最小二乘估计的的精度较差, 会表现出相当的不稳定。
岭回归
从上述分析我们知道传统的最小二乘法在矩阵不可逆或病态的情况下缺乏稳定性与可靠性。岭回归是一种改良版的最小二乘法,它放弃了最小二乘法的无偏性,但更加稳定可靠,在实际应用中也更加常用。
先给出结论,岭回归解为:
θ
=
(
X
T
X
+
λ
I
)
−
1
X
T
y
\theta=\left(X^{T} X+\lambda I\right)^{-1} X^{T} y
θ=(XTX+λI)−1XTy
其中 λ λ λ是一个超参数,称为岭系数, I I I是单位矩阵(由于对角线全是1,看起来像 “山岭”,由此得名岭回归)。
可以看到,相比传统最小二乘法,它加入了一个常数λ乘以单位矩阵的扰动 λ I \lambda I λI,这使得 ( X T X + λ I ) \left(X^{T} X+\lambda I\right) (XTX+λI)一定可逆,保证能进行计算。
因为,对于任意非零向量
u
u
u,有:
u
⊤
X
T
X
u
=
(
X
u
)
T
X
u
⟶
令
v
=
X
u
v
T
v
≥
0
u^{\top} X^{T} X u=(X u)^{T} X u \stackrel{\text { 令 } v=X u}{\longrightarrow} v^{T} v \geq 0
u⊤XTXu=(Xu)TXu⟶ 令 v=XuvTv≥0
所以 ( X T X ) \left(X^{T} X \right) (XTX)是半正定矩阵,那么对于任意的实数 λ > 0 \lambda >0 λ>0, X T X + λ I X^{T} X +\lambda I XTX+λI必正定,一定可逆。
半正定矩阵:设 A A A 为 n n n阶方阵, A ∈ R n × n A \in R^{n \times n} A∈Rn×n,如果对于任意的非零向量 X ∈ R n X \in R^{n} X∈Rn ,都有 X T A X ≥ 0 X^{T} A X \geq 0 XTAX≥0 ,则称 A A A为半正定矩阵,如果严格 X T A X > 0 X^{T} A X > 0 XTAX>0 ,则称 A A A为正定矩阵。
老实讲,线代里面的概念真不少……,但很多概念又是互相等价的(只是侧重点不同),长时间不用就容易忘记了,这里我从网上收集进行了整理,如下
A ∈ R n × n \mathbf{A} \in \mathbb{R}^{n \times n} A∈Rn×n, A A A可逆的等价于:
- A A A的行列式 ∣ A ∣ | A | ∣A∣不等于0
- A A A是非奇异矩阵
- A A A为满秩矩阵,即 rank ( A ) = n \operatorname{rank}(A)=n rank(A)=n
- A的行(列)向量组线性无关
- 齐次方程组 A x = 0 \mathbf{A x}=\mathbf{0} Ax=0 只有零解,非齐次方程组 A x = b \mathbf{A x}=\mathbf{b} Ax=b 有且仅有唯一解 x = A − 1 b \mathbf{x}=\mathbf{A}^{-1} \mathbf{b} x=A−1b
- A A A 与单位矩阵 I I I等价(秩相等或可以经过初等行/列变换得到)
- A T A A^{T} {A} ATA 是对称正定矩阵
- A A A 所有的特征值非零
L2正则化
岭回归更多是从线性代数的角度来解释并解决传统最小二乘法的不可逆或病态问题。事实上,从机器学习角度来看,岭回归对应着L2正则化。
在机器学习中,正则化(regularization)是防止模型过拟合(overfitting)、降低模型泛化误差的一类方法。
过拟合,简单来说就是模型对当前数据拟合得非常好,训练集上的误差损失甚至可以等于0,但是在实际应用中的泛化误差却很大。为什么会出现这种情况?
直观上来理解,我们在训练集上训练一个模型,目标是期望模型能够归纳学习出训练集中存在的普遍规律,之后好将该其应用于未知数据中。然而训练集是由我们观测、采集得到的,可能存在噪声、误差、错误等情况,在某些情况下(比如模型过于复杂),模型很有可能把这些噪声、错误的也学进去,也就是模型把当前训练集的特有规律学了,反而没有学到普遍规律,那么假如我们重新采样一批数据来训练,模型可能学到的又是别的东西,这将导致模型预测的结果非常不稳定,也就是具有很高的方差(variance)。
解决这类问题的一种有效方法是正则化,而正则化方法又包括很多,比如Norm penalty、Dropout、BatchNorm、LayerNorm等。Norm penalty的解决方法就是在原有的损失函数基础上增加一项对模型参数的惩罚项(penalty),其基本框架可以表示为:
J
(
θ
)
=
argmin
[
L
(
θ
)
+
λ
P
(
θ
)
]
J(\theta)=\operatorname{argmin}[L(\theta)+\lambda P(\theta)]
J(θ)=argmin[L(θ)+λP(θ)]
其中惩罚项
P
(
θ
)
P(\theta)
P(θ)可以看作是我们提前对模型的参数应该具有的样子做了一个假设或者说是约束,比如L1正则化下,我们期望模型的参数应该是稀疏的,L2正则化下,我们期望模型的参数应该是很小,接近于0的。
为什么对模型参数进行惩罚可以防止模型过拟合?可以这么理解,大多情况下,过拟合主要是因为数据太少或者是模型过于复杂,解决方法要么增加数据,要么精简模型。参数惩罚相当于后者,它通过参数衰减(极端情况下衰减为0)的方式来使得数据中那些不重要的特征几乎不起作用,这样间接就实现了精简模型参数的效果。
在该框架视角下,岭回归即对应着在最小二乘法基础上增加了一个L2正则化,如下公式所示,其中第一项
L
(
θ
)
L(\theta)
L(θ)就是传统的优化项—样本的误差平方和,第二项
P
(
θ
)
P(\theta)
P(θ)为L2正则化项::
J
(
θ
)
=
∑
i
=
1
n
(
y
i
−
f
θ
(
x
i
)
)
2
+
λ
∑
j
=
1
m
(
θ
j
2
)
J(\theta)=\sum_{i=1}^{n}\left(y_{i}-f_\theta(x_i)\right)^{2}+\lambda \sum_{j=1}^{m}\left( {\theta}_j^2\right)
J(θ)=i=1∑n(yi−fθ(xi))2+λj=1∑m(θj2)
将这个式子表达成矩阵形式:
J
(
θ
)
=
(
X
θ
−
Y
)
T
(
X
θ
−
Y
)
+
λ
θ
T
θ
J(\theta)=(\mathbf{X} \theta-\mathbf{Y})^{T}(\mathbf{X} \theta-\mathbf{Y})+\lambda {\theta}^{T} \theta
J(θ)=(Xθ−Y)T(Xθ−Y)+λθTθ
目标仍然不变,求使得该式值最小的
θ
\theta
θ。对这个式子进行求导,第一项的导数在上文我们已经知道:
∂
∂
θ
L
(
θ
)
=
2
X
T
X
θ
−
2
X
T
Y
\frac{\partial}{\partial \theta} L(\theta)=2 X^{T} X \theta-2 X^{T} Y
∂θ∂L(θ)=2XTXθ−2XTY,再次根据辣个公式
∂
x
T
a
∂
x
=
∂
a
T
x
∂
x
=
a
\frac{\partial x^{T} a}{\partial x}=\frac{\partial a^{T} x}{\partial x}=a
∂x∂xTa=∂x∂aTx=a,第二项的导数可以求得:
∂
∂
θ
λ
P
(
θ
)
=
2
λ
θ
\frac{\partial}{\partial \theta} \lambda P(\theta)=2\lambda \theta
∂θ∂λP(θ)=2λθ,(忘记的同学建议复习一下~),令其等于0:
∂
∂
θ
J
(
θ
)
=
2
X
T
X
θ
−
2
X
T
Y
+
2
λ
θ
=
0
\frac{\partial}{\partial \theta} J(\theta)=2 X^{T} X \theta-2 X^{T} Y+2\lambda \theta=0
∂θ∂J(θ)=2XTXθ−2XTY+2λθ=0
解得
θ
=
(
X
T
X
+
λ
I
)
−
1
X
T
y
\theta=\left(X^{T} X+\lambda I\right)^{-1} X^{T} y
θ=(XTX+λI)−1XTy,殊途同归!
补充一下,我们都知道,在误差符合高斯正态分布下,最小二乘法是最佳的线性无偏估计,而作为一种改良的最小二乘估计法,岭回归显然是有偏估计,它放弃了最小二乘法的无偏性来换取低方差,使得解相对稳定,这个性质也和正则化的普遍特性一致,即以提升bias为代价来降低variance,这里借用网上的一张图来表示,岭回归和正则化所作的事情就是如下图中的从右上——>左下。
无偏估计:很多批次样本估计出来的参数值的平均值(更严格说应该是期望)和真实的参数值相等,如下图中Low Bias的两个图,与之相反,有偏估计如High Bias的两个图所示。
Reference
https://www.jianshu.com/p/1677d27e08a7
https://blog.csdn.net/weixin_44692890/article/details/120233459
https://zhuanlan.zhihu.com/p/85940993
https://zhuanlan.zhihu.com/p/464085937
如果对你有帮助,请点个赞让我知道:-D
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)