如何正确衡量线性回归模型中变量的重要性

  • 背景
  • 多重共线性
  • 什么是多重共线性
  • 为什么多重共线性会导致参数估计失败
  • 如何判别多重共线性
  • 解决方案


背景

在机器学习任务中,线性回归是常用的一类模型。它其实是一个广义的概念,通常是指用一组自变量来预测因变量,公式如下所示:
多元回归模型自相关检验修正 多元回归自变量相关性_机器学习
线性回归模型往往用于预测任务,例如根据房屋的位置,历史价格,房屋的面积,人口因素等预测未来的房价。除此之外,线性回归模型还可以回答另一方面的问题,那就是,在所有的自变量中,哪些变量最重要,哪些变量无关紧要。例如:在交通领域,我们想找出与交通拥堵有关的最重要的因素,比如天气、道路质量、历史车流量等因素中哪一个最重要,哪一个最不重要。
如下所示,我们可以采用最小二乘法,计算出多元回归模型自相关检验修正 多元回归自变量相关性_多重共线性_02
多元回归模型自相关检验修正 多元回归自变量相关性_可解释性_03
然后对多元回归模型自相关检验修正 多元回归自变量相关性_多重共线性_02进行排序,并依据排序分析其重要程度。
但是,这种貌似可行的方法往往是不合理的,且在实践中往往也是不可行的。例如:当我们预测收入时,它可能会出现学历因素与收入成反比这样违反常理的判断,还会出现一些原本很重要的因素变得很不重要等一系列问题,为什么会出现这些问题呢?我们将如何解决这些问题呢?我们先要了解一个概念,多重共线性。

多重共线性

通俗的讲多重共线性是在线性回归模型中,自变量之间存在高度的相关关系,从而使模型估计失真。我们分一下几个方面来介绍多重共线性:

什么是多重共线性

  • 如果存在一组不全为零的数多元回归模型自相关检验修正 多元回归自变量相关性_可解释性_05,使得多元回归模型自相关检验修正 多元回归自变量相关性_多重共线性_06 则称变量之间存在完全共线性,如果还存在随机误差多元回归模型自相关检验修正 多元回归自变量相关性_多重共线性_07,满足

多元回归模型自相关检验修正 多元回归自变量相关性_线性回归_08

,使得
多元回归模型自相关检验修正 多元回归自变量相关性_机器学习_09
则称变量间存在非完全共线性。
一般来讲,完全共线性在实际中基本不会出现。我们面临的往往是一个非完全共线性问题。

为什么多重共线性会导致参数估计失败

当估计回归模型的参数,可得到参数的方差为多元回归模型自相关检验修正 多元回归自变量相关性_可解释性_10,为了方便讨论,我们假定
多元回归模型自相关检验修正 多元回归自变量相关性_线性回归_11
那么,多元回归模型自相关检验修正 多元回归自变量相关性_可解释性_12多元回归模型自相关检验修正 多元回归自变量相关性_机器学习_13之间的相关系数为多元回归模型自相关检验修正 多元回归自变量相关性_多重共线性_14
推理可得多元回归模型自相关检验修正 多元回归自变量相关性_可解释性_15
由明显可以看出,当多元回归模型自相关检验修正 多元回归自变量相关性_机器学习_16越大。
当参数的方差很大时,尽管参数还是无偏估计,但是它可能会导致回归的参数结果混乱,特别是估计系数的符号可能与预期的恰恰相反。此外,当我们的样本发生变化时,较大的方差也就意味了参数也会随着样本的变化而剧烈变化,从而使自变量的可解释性变差。所以,多重共线性使我们的参数变得不具备可解释性。

如何判别多重共线性

由上式可以看出,多重共线性是由因子多元回归模型自相关检验修正 多元回归自变量相关性_多重共线性_17决定的,所以,我们可以通过测量这一值得大小来评估多重共线性的严重程度。推广到更一般的情况:
多元回归模型自相关检验修正 多元回归自变量相关性_多重共线性_18
一般来说,当

多元回归模型自相关检验修正 多元回归自变量相关性_多重共线性_19

时,说明变量间存在共线性,当

多元回归模型自相关检验修正 多元回归自变量相关性_机器学习_20

,说明变量间存在严重的共线性问题。

解决方案

对于回归算法来讲,不论是多元线性回归,逻辑回归,都要同时考虑多个自变量,因此,多重共线性是使用回归算法时经常需要面对的问题,但是,如果问题是一个预测问题,即我们更加关注模型预测的准确率时,一定程度的多重共线性是可以容忍的。
但是,当我们去关注模型的可解释性时,也就是要分析每一个自变量对因变量的影响时,多重共线性阻碍了这种判断,也就宣告了模型是不可解释的。
所以,当我们借助回归模型来分析因子的重要性时,首先要削弱自变量间的多重共线性。通常我们可以采用主成分分析法,逐步回归法等来削弱变量之间的多重共线性。
下面,结合实际案例来介绍采用逐步回归法降低模型的多重共线性,我们采用的数据集是R语言基础包中的states.x77,它介绍的是一个州的犯罪率和其它因素之间的关系,包括人口、文盲率、平均收入和结霜天数,对其进行建模:

fit <- lm(Murder ~ .,data = as.data.frame(state.x77))

查看它的VIF值:

vif(fit)
 Population     Income Illiteracy `Life Exp`  `HS Grad`      Frost       Area 
  1.342691   1.989395   4.135956   1.901430   3.437276   2.373463   1.690625

发现多元回归模型自相关检验修正 多元回归自变量相关性_可解释性_21这一字段的

多元回归模型自相关检验修正 多元回归自变量相关性_机器学习_22


采用逐步回归法进行分析:

stepAIC(fit,direction = "both")
Start:  AIC=63.01
Murder ~ Population + Income + Illiteracy + `Life Exp` + `HS Grad` + 
    Frost + Area

             Df Sum of Sq    RSS    AIC
- Income      1     0.236 128.27 61.105
- `HS Grad`   1     0.973 129.01 61.392
<none>                    128.03 63.013
- Area        1     7.514 135.55 63.865
- Illiteracy  1     8.299 136.33 64.154
- Frost       1     9.260 137.29 64.505
- Population  1    25.719 153.75 70.166
- `Life Exp`  1   127.175 255.21 95.503

Step:  AIC=61.11
Murder ~ Population + Illiteracy + `Life Exp` + `HS Grad` + Frost + 
    Area

             Df Sum of Sq    RSS    AIC
- `HS Grad`   1     0.763 129.03 59.402
<none>                    128.27 61.105
- Area        1     7.310 135.58 61.877
- Illiteracy  1     8.715 136.98 62.392
- Frost       1     9.345 137.61 62.621
+ Income      1     0.236 128.03 63.013
- Population  1    27.142 155.41 68.702
- `Life Exp`  1   127.500 255.77 93.613

Step:  AIC=59.4
Murder ~ Population + Illiteracy + `Life Exp` + Frost + Area

             Df Sum of Sq    RSS    AIC
<none>                    129.03 59.402
- Illiteracy  1     8.723 137.75 60.672
+ `HS Grad`   1     0.763 128.27 61.105
+ Income      1     0.026 129.01 61.392
- Frost       1    11.030 140.06 61.503
- Area        1    15.937 144.97 63.225
- Population  1    26.415 155.45 66.714
- `Life Exp`  1   140.391 269.42 94.213

Call:
lm(formula = Murder ~ Population + Illiteracy + `Life Exp` + 
    Frost + Area, data = as.data.frame(state.x77))

Coefficients:
(Intercept)   Population   Illiteracy   `Life Exp`        Frost         Area  
  1.202e+02    1.780e-04    1.173e+00   -1.608e+00   -1.373e-02    6.804e-06

得到最后的回归方程为:多元回归模型自相关检验修正 多元回归自变量相关性_可解释性_23
对新的回归表达式进行建模并检验其VIF值

fit_end <- lm(Murder ~ Population + Illiteracy + `Life Exp` + Frost + Area,data = as.data.frame(state.x77))
Population Illiteracy `Life Exp`      Frost       Area 
  1.171232   2.871577   1.625921   2.262943   1.036358

此时,通过逐步回归法删除了一些冗余的变量,从而削弱了该模型的多重共线性,使我们的模型更加具备可解释性。