特征共线性问题

article/2025/9/20 0:00:16

多重共线性是使用线性回归算法时经常要面对的一个问题。在其他算法中,例如决策树或者朴素贝叶斯,前者的建模过程时逐渐递进,每次都只有一个变量参与,这种机制含有抗多重共线性干扰的功能;后者假设变量之间是相互独立的。但对于回归算法来说,都要同时考虑多个预测因子,因此多重共线性不可避免。

多重共线性(Multicollinearity)是指线性回归模型中的自变量之间由于存在高度相关关系而使模型的权重参数估计失真或难以估计准确的一种特性,多重是指一个自变量可能与多个其他自变量之间存在相关关系。

1. LR中的共线性问题和解决方法

假设k个自变量的多元线性回归模型:

利用最小二乘法可得到参数的估计为:

如果X不是满秩的话,会有无穷多个解。如果变量之间存在共线性,那么X近乎是不满秩的,XTX近乎是奇异的。

从统计学的角度来看:

如果方差膨胀因子很大,也就是相关系数R趋向1的时候,方差就会变得异常大。

解决办法可以有:

  • PCA等降维方法。因为在原始特征空间中变量之间相关性大,很容易想到通过降低维度的形式来去除这种共线性。
  • 正则化。使用岭回归(L2)或者lasso回归(L1)或者elasticnet回归(L1+L2)
  • 逐步回归法

特征共线性不影响模型的预测效果只要模型能够最终收敛,但是这个答案的前提假设是输入的数据是理想化的,不存在噪声的,然而实际应用工程中这是不太可能的,总会有一部分特征带有噪声,有可能是etl工程师的疏忽,有可能是数据来源受到了污染,这个问题在一些银行领域的业务中比较典型:

例如,现在许多银行系的金融科技子公司都开始渐渐使用一些机器学习的算法来对信贷风控进行建模,经常会涉及到对第三方数据的购买,我们假设从A、B、C三个渠道获取了3个特征,使用逻辑回归,标签为信用不良用户与信用优良用户的二分类问题,假设这个3个特征之间相关性很强,我们直接使用lr建模,模型收敛,通过oot,上线,嗯,第一个季度效果不错,到了第二个季度,模型需要进行迭代,结果A公司数据库工程师删库跑路了,A公司也没做备份,啥数据都拿不出来,得,这个月的A特征全是缺失值,模型不好迭代了,做个插补吧,误差太大,不做吧,又没法迭代,尴尬。 如果一开始考虑到特征之间相关性强的问题,删除了A、B这两特征留下C,那么这种问题的出现所带来的影响相对就要小的多了。

相关性强的特征如果同时建模,潜在的实际上是增大了模型受噪声干扰的面,还是上面强相关的A、B、C三个特征的例子,假设A、B、C三者收到噪声干扰的概率都是0.05,则当仅使用其中一个特征的时候,受到噪声干扰的概率为0.05,如果选择了3个特征,则受到噪声干扰的概率为1-0.95*0.95*0.95约为0.143,结果两种方案得到的模型的效果还差不多。

2. 为什么树模型对特征之间的共线性不强调呢?

在统计分析中,作推断时,如果自变量存在共线性,将无法区分它们对因变量的影响,因此无法对结果进行清楚的解释。但是有时候做预测(prediction)时,我们并不关心如何解释自变量对因变量的影响。GBDT、神经网络 也更像一个black-box,很适合做预测分析。(共线性不影响模型的预测而是影响对模型的解释),但是在一些特定的领域,比如金融,从业人员是非常强调模型的可解释性的,因为模型可解释就可以和从业人员的先验知识形成一个比较好的互补,从而提高模型的有效性。做预测时,往往用贪婪算法进行变量选择,只有新变量对结果影响比较大时,才会被加入到模型中,因此,在step-wise variable selection的过程中,共线性的变量只有一个会被选入到模型中。在决策树模型中,每一个树的构建都是贪婪的,因此,冗余的特征并不会被加入模型中,也就是说如果变量之间相关性非常强最终很可能只会选择部分进入模型。

3. 为什么会在训练的过程当中将高度相关的特征去掉?

  • 去掉高度相关的特征会让模型的可解释性更好
  • 可以大大提高训练的速度。如果模型当中有很多特征高度相关的话,就算损失函数本身收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度。其次是特征多了,本身就会增大训练的时间。
  • 用lgb来基于自身特征重要性做特征选择的时候,共线性是一个非常致命的问题,因为共线性会导致一些相关性高但是重要性高的特征在特征选择的过程中被排除掉,一开始是因为使用了特征重要性作为特征筛选的方法发现最终的泛化效果反而差了,最后仔细排查才发现了共线性的问题,因为有三个特征的相关性太高,训练的时候,每一颗树都是从这3个特征中随机选择一个,而选完了一个之后,另外两个由于相关度太高的问题,在下一次分裂的时候往往没有办法带来大的增益了(因为已经被选中的特征抢先分裂了),所以最终的结果就是,3个强大的特征最终的分裂次数或者分裂增益值都很小,看起来好像不是很重要的样子所以,在实际的过程中,还是建议要把特征相关性考虑进去,免得出现各种各样意想不到的幺蛾子。。。
  • 最后一点的内容我在下面这幅图的段落中已经陈述过了,不要以为gbdt就可以为所欲为!

 

参考知乎:https://zhuanlan.zhihu.com/p/70124378?from_voters_page=true

 

 

 


http://chatgpt.dhexx.cn/article/UqmAfOTY.shtml

相关文章

多重共线性问题的几种解决方法

在多元线性回归模型经典假设中,其重要假定之一是回归模型的解释变量之间不存在线性关系,也就是说,解释变量X1,X2,……,Xk中的任何一个都不能是其他解释变量的线性组合。如果违背这一假定,即线性…

多重共线性问题如何解决?

​ 一、多重共线性说明 多重共线性一般是指:如果有两个或者多个自变量高度相关(相关系数大于0.8),难以区分一个自变量对因变量的影响和作用,将自变量相关性产生的后果定义为多重共线性,一般提出多重共线性…

多重共线性如何分析?

判断标准 常见的直观判断方法共有四个,如下: (1)某些自变量的相关系数值较大(比如大于0.8)等,可以利用pearson相关系数检验法一般是利用解释变量之间的线性相关程度判断,一般标准是…

多元回归自变量存在共线性

多重线性回归要求各个自变量之间相互独立,不存在多重共线性。所谓多重共线性,是指自变量之间存在某种相关或者高度相关的关系,其中某个自变量可以被其他自变量组成的线性组合来解释。 医学研究中常见的生理资料,如收缩压和舒张压…

多重共线性

1.回归模型自变量彼此相关称为多重共线性,它给模型提供重复信息 2.多重共线性会造成模型不稳定,可能会得到无法解释的现象 3.检测共线性的方法通常有相关性分析,显著性检验和方差膨胀因子分析 4.处理共线性的方法通常有提前筛选变量&#xff…

多重共线性的影响、判定及消除的方法

目录 1 什么是多重共线性? 2 多重共线性的影响 3 共线性的判别指标(方差膨胀因子) 3.1 拟合优度 3.2 方差膨胀因子VIF 4 多重共线性处理方法 4.1 手动移除出共线性的变量 4.2 逐步回归法 4.2.1 向前法 4.2.2 后退法 4.2.3 逐步选…

如何处理多重共线性问题

一、说明 当回归模型中两个或者两个以上的自变量高度相关(比如相关系数大于0.7)时,则称为多重共线性。虽然在实际分析中,自变量高度相关是很常见的,但是在回归分析中存在多重共线性可能会导致一些问题,比如…

谈多重共线性

谈多重共线性 本文主要讨论古典假定中无多重共线性被违反的情况,主要情况包括多重共线性的实质和产生的原因、后果、检验方法及无多重共线性假定违反后的处置方法。 第一节 什么是多重共线性 一、多重共线性的含义 讨论多元线性回归模型的估计时,强调…

多重共线性详解

目录 解释变量与自变量,被解释变量与因变量 1、多重共线性的现象 2、出现的原因 3、判别标准 4、检验方法 5、多重共线性有什么影响 6、多重共线性处理方法 7、其他说明 8、多重共线性识别-python代码8.1、vif检验8.2 相关系数8.3 聚类 9、宏观把握共线性问题9.1、共…

浅谈共线性的产生以及解决方法(中篇——今生)

浅谈共线性的产生以及解决方法(中篇——今生) 上篇我们讲到共线性概念以及共线性问题存在时对模型的影响。那么如何对样本数据中存在的共线性问题进行诊断呢? 3 多重共线性的诊断方法 3.1 相关系数法 对于一个样本数据集,我们要了解解释变量&#xf…

共线性那些事儿

我们经常听说,建模时应当尽量避免共线性(collinearity),共线性会导致参数估计不稳定、模型不可靠等等。那么共线性究竟有多可怕?共线性具体会带来什么问题?共线性得到的模型是否真的不行?笔者通…

多元线性模型中共线性产生的原因解析

在很多书籍中谈到了共线性问题,作为多元统计中基本假设之一,却经常被违背,影响模型稳定性和统计power。在不少的论文中谈到了,国内的很多书籍往往一笔带过。因为,属于统计计算领域内容,非专业人士&#xff…

好好谈谈共线性问题

好好谈谈共线性问题 马东什么 算法工程师 8 人 赞同了该文章 共线性,即 同线性或同线型。统计学中,共线性即 多重共线性。 多重共线性(Multicollinearity)是指线性回归模型中的解释变量之间由于存在精确 相关关系或高度相关关系而…

树莓派中SIM7600G-H 4G DONGLE模块使用记录(一)PPP拨号上网/4G上网

项目场景: 如何使用SIM7600系列的4G通信模块进行PPP网上拨号以实现4G通信,在讲解前,未搭建好树莓派远程连接桌面的读者可以先转向树莓派4B环境搭建电脑远程连接打开文件管理闪退(上)。 模块简介: SIM7600X 4G DONGLE是一款工业级…

Linux系统下使用4G模块EC20实现拨号上网

驱动的实现过程 实现4G功能分为两步,第一步内核能成功识别出该设备,第二步实现拨号上网.最后提一下自带的定位功能 一.添加内核USB驱动 这里直接使用内核已经存在的USB驱动,只需要让内核能识别出该USB设备,并自动加载驱动生成对应的/devUSB*设备节点 获取EC20的PID和VID 把模块…

4G模块适配与调试

笔记目录 RK平台4G模块适配1、识别VID、PID2、添加VID\PID到android的option驱动中3、插上sim卡,4G模块一定要接上天线4、根据安卓系统和安卓版本发给模块厂要求其提供ril库5、预置ril库6、在framework中添加根据pid和vid关联ril库的代码7、可以通过一下命令查看ril…

Linux 4G模块pppd拨号上网脚本解析

在编写脚本之前,要先安装好ppp相关驱动,pppd 已知pppd位于 /usr/sbin , chat 位于 /usr/sbin , options 位于 /etc/ppp 。 要编写脚本,就要切换目录到 /etc/ppp/peers,若没有peers目录则自行创建。因为是在/etc目录之下&#xf…

4G模块的使用

一、4G相关知识 4G是第四代通讯技术。能够传输高质量视频图像。4G的下载速度达100Mbps,比目前的拨号上网快2000倍,上传的速度也能达到20Mbps,并能够满足几乎所有用户对于无线服务的要求。此外,4G可以在DSL和有线电视调…

4G模块使用总结

4G模块使用总结 一、APN名称 2G: 移动的CMWAP 联通的UNIWAP 移动的CMNET 联通的UNINET 3G/4G: 移动CMNET 联通3GNET 电信CTNET 二、模块信息参数获取 AT/r //检测串口通信状态 ATE设置回显功能 ATE0:回显关闭 ATE1:回显开启 ATCGMI 返回模块厂家信息 ATCGMM 返回模块型…

4G传输模块的功能应用

4G传输模块主要用在物联网中的数据传输方面,这种模块支持主动采集、多种协议、GPRS定位以及各种网络协议,并且接口丰富,还可以实时查看程序参数配置,接下来,安传物联的编辑就来为大家介绍一下这种常用的模块吧 一、主动…