线性回归:多重共线性的相关数学推导

多元线性回归使用最小二乘法求解,对多元线性回归的损失函数求导,并得出求解系数的式子和过程:
在这里插入图片描述
最后一步中需要左乘XTX的逆矩阵,而逆矩阵存在的充分必要条件是特征矩阵不存在多重共线性。什么是多重共线性,如何一步步从逆矩阵必须
存在推导到多重共线性不能存在?

逆矩阵存在的充要条件

逆矩阵存在与否的意义和影响。一个矩阵什么情况下才可以有逆矩阵呢?来看逆矩阵的计算公式:
A − 1 = 1 ∣ A ∣ A^{-1}=\Large\frac1{|A|} A1=A1 A ∗ A^* A
分子上A*是伴随矩阵,任何矩阵都可以有伴随矩阵,因此这一部分不影响逆矩阵的存在性。而分母上的行列式|A|就不同了,位于分母的变量不能为0,一旦为0则无法计算出逆矩阵。因此逆矩阵存在的充分必要条件是:矩阵的行列式不能为0,对于线性回归而言,即是说|XTX|不能为0。这是使用最小二乘法来求解线性回归的核心条件之一。

行列式不为0的充要条件

那行列式要不为0,需要满足什么条件呢?假设特征矩阵X结构为(m,n),则XTX就是结构为(n,m)的矩阵乘以结构为(m,n)的矩阵,从而得到结果为
(n,n)的方阵。
X T X = ( n , m ) ∗ ( m , n ) = ( n , n ) X^TX=(n,m)*(m,n)=(n,n) XTX=(n,m)(m,n)=(n,n)
因此,以下所有例子都将以方阵进行举例,方便理解。首先区别一下矩阵和行列式:
矩 阵 A = [ x 11 x 12 x 13 x 21 x 22 x 23 x 31 x 32 x 33 ] 矩阵A=\left[ \begin{array}{c}x_{11} & x_{12} & x_{13} \\x_{21} & x_{22} & x_{23} \\x_{31} & x_{32} & x_{33} \\\end{array} \right] A=x11x21x31x12x22x32x13x23x33
矩 阵 A 的 行 列 式 = ∣ x 11 x 12 x 13 x 21 x 22 x 23 x 31 x 32 x 33 ∣ = ∣ A ∣ 矩阵A的行列式=\left| \begin{array}{c}x_{11} & x_{12} & x_{13} \\x_{21} & x_{22} & x_{23} \\x_{31} & x_{32} & x_{33} \\\end{array} \right|=|A| A=x11x21x31x12x22x32x13x23x33=A

矩阵和行列式的区别

矩阵:是一组数按一定方式排列成的数表,一般记作A
行列式:是这一组数按某种运算法则最后计算出来的一个数,通常记作|A|或者detA
任何矩阵都可以有行列式。以一个3*3的行列式为例:
∣ A ∣ = ∣ x 11 x 12 x 13 x 21 x 22 x 23 x 31 x 32 x 33 ∣ = x 11 x 22 x 33 + x 12 x 23 x 31 + x 13 x 21 x 32 − x 11 x 23 x 32 − x 12 x 21 x 33 − x 13 x 22 x 31 |A|=\left| \begin{array}{c}x_{11} & x_{12} & x_{13} \\x_{21} & x_{22} & x_{23} \\x_{31} & x_{32} & x_{33} \\\end{array} \right|\\=x_{11}x_{22}x_{33}+x_{12}x_{23}x_{31}+x_{13}x_{21}x_{32}-x_{11}x_{23}x_{32}-x_{12}x_{21}x_{33}-x_{13}x_{22}x_{31} A=x11x21x31x12x22x32x13x23x33=x11x22x33+x12x23x31+x13x21x32x11x23x32x12x21x33x13x22x31
这个式子乍一看非常混乱,其实并非如此,把行行列列式按照下面的方式排列,很容易看出这个式子实际上是怎么回事:
线性回归:多重共线性的相关数学推导_第1张图片
三个特征的特征矩阵的行列式就有六个交互项,现实中的特征矩阵不可能是如此低维度的数据,因此,使用这样的方式计算行列式就变得异常困难。在线性代数中,可以通过行列式的计算将一个行列式整合成一个梯形的行列式:
∣ A ∣ = ∣ x 11 x 12 x 13 x 21 x 22 x 23 x 31 x 32 x 33 ∣ → ∣ a 11 a 12 a 13 0 a 22 a 23 0 0 a 33 ∣ |A|=\left| \begin{array}{c}x_{11} & x_{12} & x_{13} \\x_{21} & x_{22} & x_{23} \\x_{31} & x_{32} & x_{33} \\\end{array} \right|\to\left| \begin{array}{c}a_{11} & a_{12} & a_{13} \\0 & a_{22} & a_{23} \\0 & 0 & a_{33} \\\end{array} \right| A=x11x21x31x12x22x32x13x23x33a1100a12a220a13a23a33
梯形的行列式表现为,所有的数字都被整合到对角线的上方或下方(通常是上方),虽然具体的数字发生了了变化(比如由x11变成了a11),但是行列式的大小在初等行变换/列变换的过程中是不变的。对于梯形行列式,计算要容易很多:
∣ A ∣ = ∣ a 11 a 12 a 13 0 a 22 a 23 0 0 a 33 ∣ = a 11 a 22 a 33 + a 12 a 23 ∗ 0 + a 13 ∗ 0 ∗ 0 − a 11 a 23 ∗ 0 − a 12 ∗ 0 ∗ a 33 − a 13 a 22 ∗ 0 = a 11 a 22 a 33 |A|=\left| \begin{array}{c}a_{11} & a_{12} & a_{13} \\0 & a_{22} & a_{23} \\0 & 0 & a_{33} \\\end{array} \right|\\=a_{11}a_{22}a_{33}+a_{12}a_{23}*0+a_{13}*0*0-a_{11}a_{23}*0-a_{12}*0*a_{33}-a_{13}a_{22}*0\\=a_{11}a_{22}a_{33} A=a1100a12a220a13a23a33=a11a22a33+a12a230+a1300a11a230a120a33a13a220=a11a22a33
不难发现,由于梯形行列式下半部分为0,整个矩阵的行列式其实就是梯形行列式对角线上的元素相乘。只要对角线上的任意元素为0,整个行列式都会为0;只要对角线上没有一个元素为0,行列式就不会为0了。由此,引入一个重要概念:满秩矩阵。

满秩矩阵

A是一个n行n列的矩阵,若A转换为梯形矩阵后,没有任何全为0的行或者全为0的列,则称A为满秩矩阵。简单来说,只要对角线上没有一个元素为0,则这个矩阵中绝对不可能存在全为0的行或列。
举例来说,下面的矩阵就不是满秩矩阵,因为它的对角线上有一个0,因此它存在全为0的行。
不 满 秩 矩 阵 : [ a 11 a 12 a 13 0 a 22 a 23 0 0 a 33 ] 不满秩矩阵:\left[\begin{array}{c}a_{11} & a_{12} & a_{13} \\0 & a_{22} & a_{23} \\0 & 0 & a_{33} \\\end{array} \right] a1100a12a220a13a23a33
即:矩阵满秩(即转换为梯形矩阵后对角线上没有0)是矩阵的行列式不为0的充分必要条件。

矩阵满秩的充分必要条件

一个矩阵要满秩,则转换为梯形矩阵后的对角线上没有0,什么样的矩阵在转换为梯形矩阵后对角线上才没有0呢?来看下面的三个矩阵:
在这里插入图片描述
可以对矩阵做初等行变换和列变换,包括交换行/列顺序,将一列/一行乘以一个常数后加减到另一列/一行上,来将矩阵化为梯形矩阵:
在这里插入图片描述
可以看到,矩阵A明显不是满秩的,它有全零行所以行列式会为0。而矩阵B和C没有全零行所以满秩。而矩阵A和矩阵B的区别在于,A中存在着完全具有线性关系的两行(1,1,2)和(2,2,4),而B和C中则没有这样的两行。而矩阵B虽然对角线上每个元素都不为0,但具有非常接近于0的元素0.02,而矩阵C的对角线上没有任何元素特别接近于0。
矩阵A中第一行和第三行的关系,被称为“精确相关关系”,即完全相关,一行可使另一行为0。在这种精确相关关系下,矩阵A的行列式为0,则矩阵A的逆不可能存在。最小二乘法中,如果矩阵XTX中存在这种精确相关关系,则逆不存在,最小二乘法完全无法使用,线性回归会无法求出结果。
在这里插入图片描述
矩阵B中第一行和第三行的关系不太一样,他们之间非常接近于”精确相关关系“,但又不是完全相关,一行不能使另一行为0,这种关系被称为”高度相关关系“。在这种高度相关关系下,矩阵的行列式不为0,但却是一个非常接近0的数,矩阵A的逆存在,不过接近于无限大。此时,最小二乘法可以使用,不过得到的逆会很大,直接影响对参数向量的求解:
线性回归:多重共线性的相关数学推导_第2张图片
这样求解出来的参数向量 ω \omega ω会很大,因此会影响建模的结果,造成模型有偏差或者不可用。精确相关关系和高度相关关系并称为"多重共线性"。在多重共线性下,模型无法建立,或者模型不可用。
相对的,矩阵C的行之间结果相互独立,梯形矩阵看起来非常正常,它的对角线上没有任何元素特别接近于0,因此其行列式也就不会接近0或者为0,因此矩阵C得出的参数向量就不会有太大偏差,对于拟合而言是比较理想的。
在这里插入图片描述
由上得出,一个矩阵如果要满秩,则要求矩阵中每个向量之间不能存在多重共线性,这也构成了线性回归算法对于特征矩阵的要求。
在这里插入图片描述

多重共线性与相关性

多重共线性如果存在,则线性回归就无法使用最小⼆乘法来进行求解,或者求解就会出现偏差。而不能存在多重共线性,不代表不能存在相关性——机器学习不要求特征之间必须立、必须不相关,只要不是高度相关或者精确相关就好。

多重共线性 Multicollinearity 与 相关性 Correlation

多重共线性是一种统计现象,是指线性模型中的特征(解释变量)之间由于存在精确相关关系或高度相关关系,多重共线性的存在会使模型无法建立,或者估计失真。多重共线性使用指标方差膨胀因子(variance inflation factor,VIF)来进行衡量(from statsmodels.stats.outliers_influence
import variance_inflation_factor),通常提到“共线性”,都特指多重共线性。
相关性是衡量两个或多个变量一起波动的程度的指标,可以是正的、负的或者0。变量之间具有相关性,通常是指线性相关性,线性相关一般由
皮尔逊相关系数
进行衡量,非线性相关可以使用斯皮尔曼相关系数或者互信息法进行衡量。
现实中,特征之间完全独立的情况其实非常少,因为大部分数据统计手段或者收集者并不考虑统计学或者机器器学习建模时的需求,现实数据多多少少都会存在一些相关性,极端情况下,甚至还可能出现收集的特征数量比样本数量多的情况。通常来说,这些相关性在机器器学习中通常无伤大雅(在统计学中他们可能是比较严重的问题),即便有一些偏差,只要最小二乘法能够求解,都有可能会无视掉它。毕竟,想要消除特征的相关性,无论使用怎样的手段,都无法避免进行特征选择,这意味着可用的信息变得更少,对于机器器学习来说,很有可能尽量排除相关性后,模型的整体效果会受到巨大的打击。这时,选择不处理理相关性,只要结果好,一切万事大吉。
然而,多重共线性就不是这样一回事了,它的存在会造成模型极大地偏移,无法模拟数据的全貌,因此是必须解决的问题。为了保留线性模型计算快速,理解容易的优点,我们并不希望更换成非线性模型,这促使统计学家和机器器学习研究者们钻研出了多种能够处理多重共线性的方法,其中有三种方法比较常见:
1)使用统计学的先验思路
在开始建模之前,先对数据进行各种相关性检验,如果存在多重共线性则可考虑对数据的特征进行删减筛查,或者使用降维算法对其进行处理,最终获得一个完全不存在相关性的数据集。
2)使用向前逐步回归
逐步回归能够筛选对标签解释力度最强的特征,同时对于存在相关性的特征们加上一个惩罚项,削弱其对标签的贡献,以绕过最小二乘法对共线性较为敏感的缺陷。
3)改进线性回归
在原有的线性回归算法基础上进行修改,使其能够容忍特征列存在多重共线性的情况,并且能够顺利建模,且尽可能的保证RSS取得最小值。
这三种手段中,第一种相对耗时耗力,需要较多的人工操作,并且会需要混合各种统计学中的知识和检验来进行使用。在机器器学习中,能够使用一种模型解决的问题,我们尽量量不用多个模型来解决,如果能够追求结果,我们会尽量避免进行一系列检验。况且,统计学中的检验往往以“让特征独立”为目标,与机器器学习中的”稍微有点相关性也无妨“不太一致。
第二种手段在现实中应用较多,不过由于理论复杂,也不是非常高效,因此不是机器学习的首选。
机器学习多使用第三种方法——改进线性回归来处理多重共线性。为此,⼀系列算法,岭回归,Lasso,弹性网就被研究出来了。后续博文将探讨这些改善多重共线性问题的算法,敬请期待。

你可能感兴趣的:(算法,机器学习,统计,算法,机器学习,统计,多重共线性,相关性)