Amateur Hour

不只是线性回归(2):多重共线性与正则化

2018-09-27

Intro

线性回归(Linear Regression)是机器学习的基本方式,但为了提升其性能,人们发明了无数优化方式。这个“不只是线性回归”系列就是为了记录我在日常的学习中发现的,不只是简单的线性回归的算法、优化方式、数学原理等。

2. 多重共线性(Multicollinearity)

2.1 什么是多重共线性?

多重共线性,是指特征之间存在一组或多组线性关系。会导致训练出的模型失真。例如著名的Boston Housing数据集中,’INDUS’, ‘RAD’, ‘TAX’几个特征之间就存在严重的多重共线性(亲测)。

2.2 如何发现多重共线性?

判断特征间是否存在多重共线性貌似有N种方法,我一般就使用最直接的方式:看相关系数。计算两个特征的相关系数及P值,如果相关系数大于0.7,且P值小于0.05的话,一般就可以认为这两个特征存在共线性。

举例来说,下图是Boston Housing数据集13个特征间的相关系数矩阵,可以看出其中存在共线性的特征是哪几个。

collinearity.png

图1:相关系数矩阵

在网上看到还有根据Tolerance(容忍度)和VIF(方差膨胀因子)的判断方式,原谅一天统计学都没有学过的我不想去深究了。

2.3 如何解决多重共线性?

简单粗暴的方式,当然是判断出并剔除这些特征中次要或可替代的那些,相当于减少特征间重复表达的信息。我相信一定有N种方式来做上述判断的实现,但追(zhi)求(xiang)简(tou)洁(lan)的我一般采用主成分分析(PCA)的方式。

除了feature engineering的方式,我们还可以采用下面要介绍的正则化方式。

3. 线性回归的正则化(regularization)

正则化听上去非常高端的样子,但其实简单的说,就是在原有的损失函数(cost function)后面加一个正则化项(regularizer),这个正则化项可以避免模型参数过于发散无法收敛,也可以避免过拟合的现象。下面介绍的两种正则化方法,分别用的是两种不同的正则化项:

  • L1范数:所有参数的绝对值之和,对应Lasso回归;
  • L2范数:所有参数的平方和,对应岭回归。

以上所说的参数都是不包括 theta0 的。