最近有同学跟我们交流,怎么确定变量间的线性问题。我曾经跟一些做机器学习的同学讨论,在他们那里是不太注重变量间的线性问题的。因为有些算法是非线性模型,不需要考究具体的算法。但是在逻辑回归的算法里,变量间的线性问题,仍需要解决,在入模前需要进行变量间线性的确诊。

一.相关性与多重共线性原理

在线性问题中,我们需要搞清楚变量的相关性和共线性。其中相关性是两两变量之间的问题,共线性是多变量之间的问题。

OK,因为网络上有太多关于逻辑回归中关于线性的转化公式了:

ln{P/(1-P)}=ax1+bx2+cx3...+z

可以发现在具体的转换后,每个维度都成为了一项能具体影响模型的Y值。所以在该算法中,处理每个变量间的线性相关就显得很重要了。

关于多重共线性的具体原理,本文也不详细涉及,但从VIF的公式中可知:

VIFi=1/(1-R2i)

(以上:VIF是衡量共线性的指标,当VIF很大时,表明自变量间存在多重共线性)

vif就是R的平方与1作差的倒数,基于这样的定义,我们猜测vif就是某种意义相关性的综合指标。而实际上也是这样的,比如我们研究这样的一个等式中:

Y=aX1+bX2+cX3

要研究X2、X2、X3之间的共线性,我们会先进行一个线性的辅助回归,让X1、X2、X3,轮流坐庄,求出每一个方程的R的平方。什么叫轮流坐庄,就是该方程变换成:

X1=aX2+bX3..............I

X2=aX1+bX3.............II

X3=aX1+bX2............III

各位读者可以发现上述没有Y,只有X. 根据上述的等式,依次算出每个等式的R平方,再算出来具体的vif值。

具体的相关性跟共线性的原理推到,本文怕把各位读者绕晕,先不进行讲解,我们直接来使用相关的指标。

进行模型的相关性跟共线性的检验,相关代码如下:

其中在相关性达到0.7的以上,一般表示模型变量间有相关性;

而关于共线性的就稍微复杂一些,我们会这样来分析指标:这里我们引入条件指数和膨胀方差的这两个指标。

膨胀方差(the variance inflation factor,VIF)诊断法:方差膨胀因子表达式为:VIFi=1/(1-R2i)。其中Ri为自变量xi对其余自变量作回归分析的复相关系数。当VIFi很大时,表明自变量间存在多重共线性。该诊断方法也存在临界值不易确定的问题,在应用时须慎重。

条件指数(condition indices)定义为:最大特征根与每个特征根比值的平方根。特征根(Eigenvalue)越接近零,共线性越大。条件指数等于最大的主成分与当前的主成分的比值的算术平方根,所以第一个主成分对应的条件指数总为1。同样,如果几个条件指数较大(如大于10/20/30),则提示可能存在多重共线性。

二.实际处理的案例

在具体的实操界面,我们可以根据以上方法求出具体的的共线性指标,进行分析,根据本人经验总结,为各位读者分享以下心得:

1.普遍讲当膨胀方差因子达到10以上的时候,该变量较有共线性的嫌疑;比如在下图中,红色框中列出来的一些变量都具有共线性;

2.当条件指数大于10以上的时候,去查看相关系数达到0.5以上的变量,也较有共线性嫌疑,并且将此时的值跟第一条求出值进行比对,会发现具体的变量是一致的,第2个图片的指标是对第一张图片指标的充分补充;

3.共线性的指标在以上基础上数值越大,该变量间的共线性越严重;

4.以上1跟2成立的基础都是数据量不是特别大的情况下的普遍用法,当数据量达到一定程度,如上百/千万条数据量级别时,膨胀因子达到2以上,就有共线性的,所以具体的条件指数跟膨胀因子的数值仍跟数据量有较大关系。

关于使用的说明,大家可以将以下图片跟以上文字结合理解:

三.多重共线性的处理方法:

最后再将处理共线性的方法介绍给各位,可能还不完整,后续有机会再补充

1.逐步回归法

运用逻辑回归中的逐步回归法,因为在模型拟合的过程中,逐个引入自变量,引入的条件是该自变量经F检验是显著的,每引入一个自变量后,对已选入的变量进行逐个检验,如果原来引入的变量由于后面变量的引入而变得不再显著,那么就将其剔除。并且变量在检验的时候,我们会再观察模型结果中的P值和F值。跟算法工程师了解过,机器学习中运用这类算法,很多不考虑共线性时因为运用了这个方法去筛选变量,从而省去了前面一步做共线性的步骤。

2.删除不重要的自变量

删除不必要的变量,保留部分更符合业务逻辑的变量,这里各位可以结合IV值进行变量的筛选;但对剔除的变量需要充分有把握,不然删除的变量会影响模型结果;

3.可以做主成分回归

该分析方法是对多个变量综合提取新的变量后,运用的方法,在变量的降维中也经常使用这个方法。不过这个方法在其他机器学习中使用较多。当采取主成分提取了新的变量后,往往这些变量间的组内差异小而组间差异大,从而起到了消除共线性的问题。

最后关于多重共线性,各位同学可以参阅在知识星球上的这份文档,里面对这部分的内容解释更详细些,请上去查阅,谢谢!

更多干货资料,请关注公众号:番茄风控大数据

远离复杂公式推导,直接解决共线性相关推荐

  1. 一文讲解机器学习算法中的共线性问题

    多重共线性是使用线性回归算法时经常要面对的一个问题.在其他算法中,例如决策树和贝叶斯,前者的建模过程是逐步递进,每次拆分只有一个变量参与,这种建模机制含有抗多重共线性干扰的功能:后者干脆假定变量之间是 ...

  2. 学习机器学习,究竟是理论重要,还是公式推导重要?

    随着近几年机器学习的火爆,其从业门槛也越来越高,以至于出现面试者需要现场手推对数几率回归和手写反向传播代码的情况.不论是对机器学习本身的研究,还是岗位的需求,都需要我们对算法有很深的了解,对公式本质有 ...

  3. python 回归去掉共线性_一文讲解机器学习算法中的共线性问题

    多重共线性是使用线性回归算法时经常要面对的一个问题.在其他算法中,例如决策树和贝叶斯,前者的建模过程是逐步递进,每次拆分只有一个变量参与,这种建模机制含有抗多重共线性干扰的功能:后者干脆假定变量之间是 ...

  4. 机器学习--线性回归2(共线性问题、岭回归、lasso算法)

    上一节我们讲了线性回归的一元线性回归和多元线性回归,其中多元线性回归在求解的过程中又分为满秩和非满秩的情况,进而引出了的最大释然估计进行处理,后面详细的对回归误差进行了分析,最后误差来源于平方偏置.方 ...

  5. 机器学习——数据的共线性问题(岭回归、LASSO回归、逐步回归、主成分回归)

    一.如何检验共线性 容忍度(Trlerance):容忍度是每个自变量作为因变量对其他自变量进行回归建模时得到的残差比例,大小用1减得到的决定系数来表示.容忍度的值介于0和1之间,如果值越小,说明这个自 ...

  6. python方差膨胀因子_讲讲共线性问题

    多重共线性是使用线性回归算法时经常要面对的一个问题.在其他算法中,例如决策树和贝叶斯,前者的建模过程是逐步递进,每次拆分只有一个变量参与,这种建模机制含有抗多重共线性干扰的功能:后者干脆假定变量之间是 ...

  7. 【Python计量】多重共线性的检验和解决

    文章目录 一.多重共线性的产生原因 二.多重共线性的检验 1.简单相关系数法 2.方差膨胀因子法(variance inflation factor,VIF) 三.多重共线性的解决 我们以伍德里奇&l ...

  8. 机器学习--线性回归4(线性拟合、局部线性拟合实战)

    前面三节,我们从最简单的一元线性回归到多元线性回归,讨论了,损失函数到底由那几部分组成(这点我觉很重要,因为它不仅仅存在线性回归中还存在其他机器学习中,因此有必要搞明白他,有兴趣的请看这篇文章),后面 ...

  9. 3. Linear Regression

    Linear Regression 简单线性回归 简单线性回归形式:Y=β0+β1X1Y=\beta_0+\beta_1X_1Y=β0​+β1​X1​ 估计系数 残差:ei=yi−y^ie_{i}=y ...

最新文章

  1. 移动银行木马活跃度升级 恐成黑客攻击跳板
  2. 力扣: 88. 合并两个有序数组
  3. asp.net mvc 重定向
  4. PR值:PagePank算法
  5. 【线性筛】【质因数分解】【约数个数定理】hdu6069 Counting Divisors
  6. boolean 默认_MySQL数据类型测试:BOOLEAN、TINYINT测试数据总结(第八节)
  7. Excel的html转换成unicode,EXCEL表格中把汉字转换成unicode编码
  8. Allure2--自动化测试报告生成
  9. 在中国南方电网工作是一种怎样的体验?
  10. Java-马士兵设计模式学习笔记-策略模式-模拟Comparable接口
  11. html表格行数代码,HTML表格可选行Javascript包
  12. 网络工程师考试试题及答案+SUV
  13. 搭建eova开发环境
  14. 图形界面上的任意形状图形按钮
  15. java dead store_jcip Java并发编程实战源码,这本书名为《 践》有些抹杀了它的价值,其中 Develop 238万源代码下载- www.pudn.com...
  16. dell t320 raid linux,Dell T320服务器阵列卡驱动下载
  17. c语言学习周报(2020.11.21-11.28)
  18. java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类
  19. C语言零基础学习日记
  20. rds 主从实例_探索Amazon RDS数据库实例和漏洞

热门文章

  1. java 获取所有线程,Java 实例 - 获取所有线程
  2. 运行原理_JMeter运行原理
  3. 易安卓与jaVa_E4A变量 · E4A易安卓中文开发教程-E4A社区 · 看云
  4. SQL server 增删改查语句
  5. 服务器常见远程管理网口及登录方式
  6. leetcode--57--Insert Interval
  7. java多线程具体总结
  8. 解决IIS数据库连接出错方法
  9. Real Application Cluster 10g安装与配置(下)
  10. 【Oracle 10201 lsnrctl status卡住问题解决】