专栏首页Data Analyst我眼中的变量聚类

我眼中的变量聚类

连续变量怎样压缩?

‍‍‍‍‍ 连续变量压缩的基本思路为:建模之前使用主成分、因子分析或变量聚类的方法进行变量压缩,后续建模时使用向前法、向后法、逐步法或全子集法进一步进行变量细筛。虽然方法的名称叫做变量聚类,但却并不是聚类分析,而是一种主成分分析的方法。

连续变量压缩的原则为:自变量间相关程度越低越好,这样会更加符合模型的假定,故需利用变量聚类的方法去降低变量间的相关性。

变量聚类是数据建模过程中标准的变量选择流程,只要做变量选择,都需要做变量聚类。不仅仅是回归模型需要变量聚类,聚类分析中同样也需要进行变量聚类。要清楚的是,变量聚类并不是回归模型的附属,它做的只是变量的选择

为什么非要进行变量聚类?

建模变量数量不同,变量筛选的耗时也会不同。

一般,当变量个数超过70个左右时,全子集变量筛选法消耗的时间便开始呈现指数增长,而逐步法进行变量筛选的耗时增速比较缓慢,此时使用逐步回归进行变量筛选较好。因此,变量少于70个左右的时候,我习惯使用全子集法进行变量筛选,而变量多于70个左右的时候,我习惯使用逐步回归法进行变量的筛选

然而逐步回归法也有困扰。实际构建模型时,变量数量可能上千个,当变量数据足够庞大时,逐步法进行变量筛选耗时也会增加,怎么办?还执着逐步法吗?

能做的只能是先想方法去降低变量数量,我的方法就是变量聚类,也就是数据的压缩

变量聚类的思路

依据变量间相关性的强弱程度,将相关性强的变量归为一类,然后在每类中选择一个较典型的变量去代表这一类变量,这样,变量的数量便可以大大降低。同时,由于分类是依据变量间的关系,所以最终选出的变量间的、类间的相关性都弱化了许多。

当然,需要清醒的认识到,变量聚类处理是不可能完全消除变量间的相关性的,例如从10个变量中选择了6个变量出来,这6个变量间依然会有相关性,只是与原来10个变量时的相关性相比降低了许多。

变量聚类背后的算法是主成分

变量聚类背后的算法是主成分分析,说到主成分,必然要说下我对主成分与因子分析的看法。

因子分析和主成分分析之间其实没有什么必然的联系。一般能够称为是模型的东西,必须带有随机项主成分分析不带有随机项,仅仅是数据压缩的手段,而因子分析则带有随机项,故为模型。

如果非要说两者的联系,那便是因子分析中取主成分的方法之一是主成分分析,当然还有很多取主成分的其他方法,例如极大似然法等等。

主成分分析的目的是构造输入变量的少数组合,尽量能解释数据的变异性,这些线性组合即为主成分,形成的降维数据更加利于后续的数据分析

我对主成分的理解

进行主成分分析时,先取协方差矩阵或相关系数矩阵,然后再取特征值或特征向量,特征向量即为主成分,每一个特征值即为信息量。然后再将特征值由大到小进行排序,这样即可得到各主成分。由于信息量疑似递减,所以取前几个特征向量就可以将代替全部的信息

主成分选取时,如果变量间相关性特别强,则一组变量就可以将变量的全部信息囊括,此时只需要一个主成分就可以了。通常我选择信息量的标准是80%,这个阈值属于个人经验,信息量70%左右也可以,但最好能达到85%以上,同时还需要注意的是,主成分个数不能太多。

变量聚类有没有必要继续向下分取决于这个主成分的第二特征根的大小,如果特征根已经特别小,则没有必要向下分了。

SAS中用varclus过程步去实现这个过程。

变量聚类后如何选择变量

变量聚类后,需要从每一类中选取出能够代表该类的那一个变量,我的做法是:

  • 优先考虑让业务经验丰富的人去挑选;
  • 如果不懂业务,从技术角度,需依据聚类代表性指标1-R^2进行筛选,聚类代表性指标=(1-Rown^2)/(1-Rnext^2),其中Rown^2表示这个变量与自己的类分量的相关性,值越越好;Rnext^2表示这个变量与相邻类分量的相关性,值越越好。故选择聚类代表性指标1-R^2较小的变量去代表一类。

本文分享自微信公众号 - Data Analyst(DataAnalyst0802),作者:许卉

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 我眼中的分类变量水平压缩(一)

    如果变量水平本身较多,那么哑变量的水平个数也会相应变多,这种情况下去构建模型肯定不行,需要将分类变量的水平进行压缩处理。

    许卉
  • 信用卡违约预测模型的开发思路

    目前以金融业为代表的各行各业使用的评分模型的原型都是基于美国FICO公司开发的评分模型,每个企业会将FICO的模型做些变形,从而形成自己需要的模型。

    许卉
  • 虚拟变量在模型中的作用

    实际场景中,有很多现象不能单纯的进行定量描述,只能用例如“出现”“不出现”这样的形式进行描述,这种情况下就需要引入虚拟变量。例如即将到来的女生节,每年...

    许卉
  • 漫谈C变量——夏虫不可语冰

      在嵌入式系统中,确定的(Deterministic)通常是“简单可靠”的代名词,因此在追求可靠性的嵌入式项目中尽可能使用静态变量是有道理的。静态变量是永恒的...

    GorgonMeducer 傻孩子
  • 论文研读-基于决策变量聚类的大规模多目标优化进化算法

    DrawSky
  • 机器学习实战 | 数据探索

    数据的输入质量决定了输出的最后结果,数据的探索、预处理、特征选择、降维等特征工程占了项目的70%的时间。那么如果我们确定了商业目的,该如何一步一步渐进式进行特征...

    用户1332428
  • Android开发笔记(八十七)几个修饰关键字

    native是方法修饰符,表示该方法是由其他一种语言(如C/C++)实现的原生方法。其实native只在JNI接口中使用,java代码中只有原生方法的定义,...

    用户4464237
  • 用Python进行速度预测

    这次分享一段数据特征挖掘准备工作的套路~ 数据格式是这样的: ? task 预测值:速度 特征值: Region 区域 Length 长度Volume 流...

    企鹅号小编
  • 【批处理学习笔记】第二十三课:用户变量和变量引用

    用户变量     编写批处理程序时,用户根据需要自己定义的变量称之为用户变量。用户变量类似于C语言里面的变量,仅仅在定义该变量的程序中有效。     用户变量由...

    Angel_Kitty
  • Java基础第一阶段知识点,招实习的面试官都在问这些

    三哥

扫码关注云+社区

领取腾讯云代金券