阅读本文需要的背景知识点:标准线性回归算法、一丢丢编程知识
一、引言
前面一节我们学习了机器学习算法系列(三)- 标准线性回归算法(Standard Linear Regression Algorithm),最后求得标准线性回归的代价函数的解析解 w 为:
w = ( X T X ) − 1 X T y w=\left(X^{T} X\right)^{-1} X^{T} y w=(XTX)−1XTy
其中提到如果矩阵 X 的转置与矩阵 X 相乘后的矩阵不是满秩矩阵时,这个矩阵是不可逆的,还提到其本质是多个自变量 x 之间存在多重共线性。下面来介绍多重共线性的问题与解决这个问题的其中一个方法 - 岭回归1(Ridge Regression)
二、多重共线性
先来看看多重共线性在维基百科中的解释:
多重共线性2(Multicollinearity)是指多变量线性回归中,变量之间由于存在精确相关关系或高度相关关系而使回归估计不准确。
那么什么是精确相关关系与高度相关关系呢?假如有下面的(1)式,其中 w 1 = 2 、 w 2 = 3 w_1 = 2、w_2 = 3 w1=2、w2=3,同时如果又存在(2)式的关系,这时就说明 x 1 x_1 x1 与 x 2 x_2 x2 存在精确相关关系。当 x 1 x_1 x1 与 x 2 x_2 x2 之间存在近似精确相关关系,例如 x 1 x_1 x1 约等于 2 倍的 x 2 x_2 x2,则说明存在高度相关关系。
{ y = 2 x 1 + 3 x 2 ( 1 ) x 2 = 2 x 1 ( 2 ) \left\{\begin{array}{l} y=2 x_{1}+3 x_{2} & (1)\\ x_{2}=2 x_{1} & (2) \end{array}\right. {
y=2x1+3x2x2=2x1(1)(2)
因为由(2)式可以将(1)式改写成不同的形式,这样就会导致 w 存在无数种解,会使得最后的回归估计不准确。
⟹ { y = 2 x 1 + 3 x 2 ⇒ w 1 = 2 w 2 = 3 y = 8 x 1 ⇒ w 1 = 8 w 2 = 0 y = 4 x 2 ⇒ w 1 = 0 w 2 = 4 y = 6 x 1 + x 2 ⇒ w 1 = 6 w 2 = 1 … \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. ⟹⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧y=2x1+3x2y=8x1y=4x2y=6x1+x2…⇒w1=2⇒w1=8⇒w1=0⇒w1=6w2=3w2=0w2=4w2=1
根据 w 的解析解,可以通过下面的公式来求解其中的逆矩阵运算,被除数为矩阵的伴随矩阵3,除数为矩阵的行列式。可以看到矩阵可逆的条件是其行列式不能为零。
( X T X ) − 1 = ( X T X ) ∗ ∣ X T X ∣ \left(X^TX\right)^{-1} = \frac{\left(X^TX\right)^*}{\mid X^TX \mid } (XTX)−1=∣XTX∣(XTX)∗
如果自变量之间存在多重共线性,会使得矩阵的行列式为零,导致矩阵不可逆。如下图中的示例 X,可以看到 x 1 x_1 x1 与 x 2 x_2 x2 存在精确相关关系,相乘后的矩阵经过初等变换4后其行列式为零,说明相乘后的矩阵的行列式也必然为零(初等变换不改变行列式为零的判断),这时的矩阵不可逆。如果自变量之间是高度相关关系,会使得矩阵的行列式近似等于零,这时所得的 w 的偏差会很大,也会造成回归估计不准确。
X = [ 1 1 2 1 2 4 1 3 6 1 4 8 ] X T = [ 1 1 1 1 1 2 3 4 2 4 6 8 ] X T X = [ 4 10 20 10 30 60 20 60 120 ] ⟶ 初等变换 [ 1 0 0 0 1 2 0 0 0 ] \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} X=⎣⎢⎢⎡111112342468⎦⎥⎥⎤XT=

本文深入讲解了多重共线性现象及其在标准线性回归中的影响,介绍了岭回归的原理、代价函数、正则化方法,以及如何通过Python和Scikit-learn实现。通过实例演示,展示了如何通过调整λ参数控制自变量权重,以应对共线性问题。
最低0.47元/天 解锁文章
1万+





