共计 885 个字符,预计需要花费 3 分钟才能阅读完成。
这两天组里有同事在做特征分析这块的工作的时候其实会涉及到特征共线性问题,所以趁这个机会也去理解一下这个概念,说实话以前也没太在意这个问题。
先看下共线性的基本概念
多重共线性(Multicollinearity)是指线性回归模型中的自变量之间由于存在高度相关关系而使模型的权重参数估计失真或难以估计准确的一种特性,多重是指一个自变量可能与多个其他自变量之间存在相关关系。
例如一件商品的销售数量可能与当地的人均收入和当地人口数这两个其他因素存在相关关系。
在统计学中大谈特谈回归中需要注意的前提,独立同分布,多个自变量独立不相关,还有残差分析,多重共线性检验之类,但是在机器学习中我们谈的其实就没那么多了。
机器学习里面的假设其实就没有那么多了,通常是通过模型的复杂度来说明这些问题。
共现性数据支撑论证
现在使用一些实际的例子来证明,并没有直接的理论推导
假设现在我们有一个训练数据(1,x1,x2)和y,我们使用sgd训练的结果得到的权重是[7.89,-4.43,0.75]
现在我们扩展特征(1,x1,x2,x1,x2),相当于对特征x1和x2出现了共线性特征,现在我们实际训练到的结果就变成
如下这个样子[7.47,-5.36,-6.08,1.24,6.75]
下面抛出两个现象:
- 直观的取观察这个问题应该是共线性的特征会变为0,但是其实结果并没有。
- 另外一种想象相关的特征权重大小一致。
从这可以理解随机梯度下降到某个地方就停止了训练,并且在一个解空间里面都是满足解的需求。
处理共线性特征方式
处理共线性特征有很多种方式,但是从之前的分析来看,都是我们“想象中”的“共线性”会影响模型的效果。
这里大致罗列一下吧,比如常见的正则化,以及特征之间的相关性分析等等
常见的LR模型我们都会加入正则化技术,L1得到稀疏解等
非线性模型对于共线性特征分析
这里提一下决策树之类的非线性模型,共线性特征是否会产生影响呢?
答案是不会有任何的影响。
决策树在节点分裂的时候选择增益最大的特征作为分裂的特征,拿上面举的例子来说,
出现相同的特征,但是我们只会选择其中的一个作为分裂的特征,所以即使你有多个也不影响哈。