共计 5892 个字符,预计需要花费 15 分钟才能阅读完成。
浏览本文须要的背景知识点:规范线性回归算法、一丢丢编程常识
一、引言
后面一节咱们学习了机器学习算法系列(三)- 规范线性回归算法(Standard Linear Regression Algorithm),最初求得规范线性回归的代价函数的解析解 w 为:
$$
w=\left(X^{T} X\right)^{-1} X^{T} y
$$
其中提到如果矩阵 X 的转置与矩阵 X 相乘后的矩阵不是满秩矩阵时,这个矩阵是不可逆的,还提到其本质是多个自变量 x 之间存在多重共线性。上面来介绍多重共线性的问题与解决这个问题的其中一个办法 – 岭回归1(Ridge Regression)
二、多重共线性
先来看看多重共线性在维基百科中的解释:
多重共线性2(Multicollinearity)是指多变量线性回归中,变量之间因为存在准确相干关系或高度相干关系而使回归估计不精确。
那么什么是准确相干关系与高度相干关系呢?如果有上面的(1)式,其中 w1 = 2、w2 = 3,同时如果又存在(2)式的关系,这时就阐明 x1 与 x2 存在准确相干关系。当 x1 与 x2 之间存在近似准确相干关系,例如 x1 约等于 2 倍的 x2,则阐明存在高度相干关系。
$$
\left\{\begin{array}{l}
y=2 x_{1}+3 x_{2} & (1)\\
x_{2}=2 x_{1} & (2)
\end{array}\right.
$$
因为由(2)式能够将(1)式改写成不同的模式,这样就会导致 w 存在无数种解,会使得最初的回归估计不精确。
$$
\Longrightarrow\left\{\begin{array}{lll}
y=2 x_{1}+3 x_{2} & \Rightarrow w_{1}=2 & w_{2}=3 \\
y=8 x_{1} & \Rightarrow w_{1}=8 & w_{2}=0 \\
y=4 x_{2} & \Rightarrow w_{1}=0 & w_{2}=4 \\
y=6 x_{1}+x_{2} & \Rightarrow w_{1}=6 & w_{2}=1 \\
\ldots & &
\end{array}\right.
$$
依据 w 的解析解,能够通过上面的公式来求解其中的逆矩阵运算,被除数为矩阵的随同矩阵3,除数为矩阵的行列式。能够看到矩阵可逆的条件是其行列式不能为零。
$$
\left(X^TX\right)^{-1} = \frac{\left(X^TX\right)^*}{\mid X^TX \mid}
$$
如果自变量之间存在多重共线性,会使得矩阵的行列式为零,导致矩阵不可逆。如下图中的示例 X,能够看到 x1 与 x2 存在准确相干关系,相乘后的矩阵通过初等变换 4 后其行列式为零,阐明相乘后的矩阵的行列式也必然为零(初等变换不扭转行列式为零的判断),这时的矩阵不可逆。如果自变量之间是高度相干关系,会使得矩阵的行列式近似等于零,这时所得的 w 的偏差会很大,也会造成回归估计不精确。
$$
\begin{array}{c}
X=\left[\begin{array}{lll}
1 & 1 & 2 \\
1 & 2 & 4 \\
1 & 3 & 6 \\
1 & 4 & 8
\end{array}\right] \quad X^{T}=\left[\begin{array}{llll}
1 & 1 & 1 & 1 \\
1 & 2 & 3 & 4 \\
2 & 4 & 6 & 8
\end{array}\right] \\
X^{T} X=\left[\begin{array}{ccc}
4 & 10 & 20 \\
10 & 30 & 60 \\
20 & 60 & 120
\end{array}\right] \stackrel{\text { 初等变换}}{\longrightarrow}\left[\begin{array}{lll}
1 & 0 & 0 \\
0 & 1 & 2 \\
0 & 0 & 0
\end{array}\right]
\end{array}
$$
多重共线性的问题既然是自变量之间存在相干关系,其中一个解决办法就是剔除掉共线的自变量,能够通过计算方差扩充因子5(Variance inflation factor,VIF)来量化自变量之间的相干关系,方差扩充因子越大阐明自变量的共线性越重大。
另一种形式是通过对代价函数正则化退出惩办项来解决,其中一种正则化形式被称为吉洪诺夫正则化(Tikhonov regularization),这种代价函数正则化后的线性回归被称为岭回归(Ridge Regression)。
三、算法步骤
岭回归的代价函数第一项与规范线性回归的统一,都是欧几里得间隔的平方和,只是在前面加上了一个 w 向量的 L2- 范数)6 的平方作为惩办项(L2- 范数的含意为向量 W 每个元素的平方和而后开平方),其中 λ 示意惩办项的系数,人为的管制惩办项的大小。因为正则项是 L2- 范数,有时这种正则化形式也被称为 L2 正则化。
$$
\operatorname{Cost}(w) = \sum_{i = 1}^N \left(y_i – w^Tx_i \right)^2 + \lambda\|w\|_{2}^{2}
$$
同规范线性回归一样,也是求使得岭回归的代价函数最小时 w 的大小:
$$
w=\underset{w}{\operatorname{argmin}}\left(\sum_{i=1}^{N}\left(y_{i}-w^{T} x_{i}\right)^{2}+\lambda\|w\|_{2}^{2}\right)
$$
代价函数通过求导间接失去 w 的解析解,其中 X 为 N x M 矩阵,y 为 N 维列向量,λ 属于实数集,I 为 M x M 的单位矩阵。
$$
w=\left(X^{T} X+\lambda I\right)^{-1} X^{T}y \quad \lambda \in \mathbb{R}
$$
$$
X=\left[\begin{array}{c}
x_{1}^{T} \\
x_{2}^{T} \\
\vdots \\
x_{N}^{T}
\end{array}\right]=\left[\begin{array}{cccc}
X_{11} & X_{12} & \cdots & X_{1 M} \\
X_{21} & X_{22} & \cdots & X_{2 M} \\
\vdots & \vdots & \ddots & \vdots \\
X_{N 1} & X_{N 2} & \cdots & X_{N M}
\end{array}\right]
\quad
y=\left(\begin{array}{c}
y_{1} \\
y_{2} \\
\vdots \\
y_{N}
\end{array}\right)
$$
四、原理证实
岭回归代价函数为凸函数
同样须要证实:
$$
f\left(\frac{x_{1}+x_{2}}{2}\right) \leq \frac{f\left(x_{1}\right)+f\left(x_{2}\right)}{2}
$$
不等式右边:
$$
\operatorname{Cost}\left(\frac{w_{1}+w_{2}}{2}\right)=\sum_{i=1}^{N}\left[\left(\frac{w_{1}+w_{2}}{2}\right)^{T} x_{i}-y_{i}\right]^{2}+\lambda\left\|\frac{w_{1}+w_{2}}{2}\right\|_{2}^{2}
$$
不等式左边:
$$
\frac{\operatorname{Cost}\left(w_{1}\right)+\operatorname{Cost}\left(w_{2}\right)}{2}=\frac{\sum_{i=1}^{N}\left(w_{1}^{T} x_{i}-y_{i}\right)^{2}+\sum_{i=1}^{N}\left(w_{2}^{T} x_{i}-y_{i}\right)^{2}+\lambda\left\|w_{1}\right\|_{2}^{2}+\lambda\left\|w_{2}\right\|_{2}^{2}}{2}
$$
(1)不等式两边的前半部分与规范线性回归统一,只须要证实剩下的差值大于等于零即可
(2)将其改写成向量点积的模式
(3)开展括号
(4)合并雷同的项,w1 的转置乘 w2 与 w2 的转置乘 w1 互为转置,又因为后果为实数,所以这个两项能够合并
(5)能够写成向量的平方的模式
$$
\begin{aligned}
\Delta &=\lambda\left\|w_{1}\right\|_{2}^{2}+\lambda\left\|w_{2}\right\|_{2}^{2}-2 \lambda\left\|\frac{w_{1}+w_{2}}{2}\right\|_{2}^{2} & (1) \\
&=\lambda\left[w_{1}^{T} w_{1}+w_{2}^{T} w_{2}-2\left(\frac{w_{1}+w_{2}}{2}\right)^{T}\left(\frac{w_{1}+w_{2}}{2}\right)\right] & (2) \\
&=\lambda\left(w_{1}^{T} w_{1}+w_{2}^{T} w_{2}-\frac{w_{1}^{T} w_{1}+w_{2}^{T} w_{2}+w_{1}^{T} w_{2}+w_{2}^{T} w_{1}}{2}\right) & (3) \\
&=\frac{\lambda}{2}\left(w_{1}^{T} w_{1}+w_{2}^{T} w_{2}-2 w_{1}^{T} w_{2}\right) & (4) \\
&=\frac{\lambda}{2}\left(w_{1}-w_{2}\right)^{T}\left(w_{1}-w_{2}\right) & (5)
\end{aligned}
$$
不等式左边减去不等式右边的差值为平形式的连加运算加上两向量差的平方,人为的管制 λ 的大小,最初的后果在实数范畴内必然大于等于零,证毕。
岭回归代价函数的解析解
(1)岭回归的代价函数
(2)后面三项为规范线性回归代价函数开展后的后果,w 的 L2- 范数的平方能够写成向量 w 的点积
(3)合并第一项与第四项
$$
\begin{aligned}
\operatorname{Cost}(w) &=\sum_{i=1}^{N}\left(y_{i}-w^{T} x_{i}\right)^{2}+\lambda\|w\|_{2}^{2} & (1)\\
&=w^{T} X^{T} X w-2 w^{T} X^{T} y+y^{T} y+\lambda w^{T} w & (2)\\
&=w^{T}\left(X^{T} X+\lambda I\right) w-2 w^{T} X^{T} y+y^{T} y & (3)
\end{aligned}
$$
(1)代价函数对 w 求偏导数,依据向量求导公式,只有第一项和第二项与 W 无关,最初一项为常数,又因为代价函数是个凸函数,当对 W 的偏导数为 0 向量时,代价函数为最小值。
(2)将第二项移项后同时除以 2,再两边同时在后面乘以一个逆矩阵,等式右边的矩阵和逆矩阵乘后为单位矩阵,所以只剩下 w 向量。
$$
\begin{aligned}
\frac{\partial \operatorname{Cost(w)}}{\partial w} &= 2(X^TX + \lambda I)w – 2X^Ty = 0 & (1) \\
w &= (X^TX + \lambda I)^{-1}X^Ty & (2)
\end{aligned}
$$
能够看到岭回归代价函数的解析解相较于规范线性回归来说多了一个能够人为管制的对角矩阵,这时能够通过调整不同的 λ 来使得括号内的矩阵可逆。
在上一节的工作年限与均匀月工资的例子中,X 为 一个 5 x 2 的矩阵,y 为一个 5 维列向量,当 λ 为 0.1 时,最初能够算得 w 为一个 2 维列向量,则这个例子的线性方程为 y = 2139 * x – 403.9。
$$
X = \begin{bmatrix}
1 & 1\\
1 & 2\\
1 & 3\\
1 & 4\\
1 & 5
\end{bmatrix}
\quad
y = \begin{pmatrix}
1598\\
3898\\
6220\\
7799\\
10510
\end{pmatrix}
$$
$$
w = \left(X^TX + \lambda I\right)^{-1}X^Ty =
\begin{pmatrix}
-403.9\\
2139.0
\end{pmatrix}
$$
能够看到加了惩办项后,相较于规范线性回归的后果,拟合变差了,然而通过人为的管制惩办项的大小,解决了自变量多重共线性的问题。
五、代码实现
应用 Python 实现线性回归算法:
import numpy as np
def ridge(X, y, lambdas=0.1):
"""
岭回归
args:
X - 训练数据集
y - 指标标签值
lambdas - 惩办项系数
return:
w - 权重系数
"""
return np.linalg.inv(X.T.dot(X) + lambdas * np.eye(X.shape[1])).dot(X.T).dot(y)
六、第三方库实现
scikit-learn7 实现:
from sklearn.linear_model import Ridge
# 初始化岭回归器
reg = Ridge(alpha=0.1, fit_intercept=False)
# 拟合线性模型
reg.fit(X, y)
# 权重系数
w = reg.coef_
七、动画演示
下图展现了惩办系数 λ 对各个自变量的权重系数的影响,横轴为惩办系数 λ,纵轴为权重系数,每一个色彩示意一个自变量的权重系数:
能够看到当 λ 越大时(λ 向左挪动),惩办项占据主导地位,会使得每个自变量的权重系数趋近于零,而当 λ 越小时(λ 向右挪动),惩办项的影响越来越小,会导致每个自变量的权重系数震荡的幅度变大。在理论利用中须要屡次调整不同的 λ 值来找到一个适合的模型使得最初的成果最好。
八、思维导图
九、参考文献
- https://en.wikipedia.org/wiki…
- https://en.wikipedia.org/wiki…
- https://en.wikipedia.org/wiki…
- https://en.wikipedia.org/wiki…
- https://en.wikipedia.org/wiki…
- https://en.wikipedia.org/wiki…(mathematics)
- https://scikit-learn.org/stab…
残缺演示请点击这里
注:本文力求精确并通俗易懂,但因为笔者也是初学者,程度无限,如文中存在谬误或脱漏之处,恳请读者通过留言的形式批评指正
本文首发于——AI 导图,欢送关注