多重共线性是使用线性回归算法时经常要面对的一个问题。在其他算法中,例如决策树或者朴素贝叶斯,前者的建模过程时逐渐递进,每次都只有一个变量参与,这种机制含有抗多重共线性干扰的功能;后者假设变量之间是相互独立的。但对于回归算法来说,都要同时考虑多个预测因子,因此多重共线性不可避免。
我们先来看共线性的原理,假设k个自变量的多元线性回归模型:
y
=
θ
0
+
θ
1
x
1
+
.
.
.
+
θ
k
x
k
=
θ
T
x
+
ϵ
y=\theta_{0}+\theta_{1}x_{1}+... +\theta_{k}x_{k}=\theta ^{T}x+\epsilon
y=θ0+θ1x1+...+θkxk=θTx+ϵ
ϵ
∼
N
(
0
,
σ
2
)
\epsilon \sim N(0,\sigma^{2})
ϵ∼N(0,σ2)
利用最小二乘法可得到参数的估计为:
θ
^
=
X
†
y
=
(
X
T
X
)
−
1
X
T
y
\hat{\theta}=X^{\dagger}y=(X^{T}X)^{-1}X^{T}y
θ^=X†y=(XTX)−1XTy如果X不是满秩的话,会有无穷多个解。如果变量之间存在共线性,那么X近乎是不满秩的,
X
T
X
X^{T}X
XTX近乎是奇异的。
我们从统计学的角度来看:
V
a
r
(
θ
^
−
θ
)
=
V
a
r
[
(
X
T
X
)
−
1
X
T
ϵ
]
Var(\hat{\theta}-\theta)=Var[(X^{T}X)^{-1}X^{T}\epsilon]
Var(θ^−θ)=Var[(XTX)−1XTϵ]
V
a
r
(
θ
^
)
=
σ
2
(
X
T
X
)
−
1
Var(\hat{\theta})=\sigma^{2}(X^{T}X)^{-1}
Var(θ^)=σ2(XTX)−1
V
a
r
(
θ
^
i
)
=
σ
2
(
n
−
1
)
V
a
r
(
x
j
)
⋅
1
1
−
R
i
2
Var(\hat{\theta}_{i})=\frac{\sigma^{2}}{(n-1)Var(x_{j})}\cdot\frac{1}{1-R_{i}^{2}}
Var(θ^i)=(n−1)Var(xj)σ2⋅1−Ri21如果方差膨胀因子
1
1
−
R
i
2
\frac{1}{1-R_{i}^{2}}
1−Ri21很大时,也就是
R
i
2
R_{i}^{2}
Ri2趋向于1时,方差会变得异常大。
解决方法如下:
- PCA等降维方法。因为在原始特征空间中变量之间相关性大,很容易想到通过降低维度的形式来去除这种共线性。
- 正则化。使用岭回归(L2)或者lasso回归(L1)或者elasticnet回归(L1+L2)
- 逐步回归法