连续变量怎样压缩?
连续变量压缩的基本思路为:建模之前使用主成分、因子分析或变量聚类的方法进行变量压缩,后续建模时使用向前法、向后法、逐步法或全子集法进一步进行变量细筛。虽然方法的名称叫做变量聚类,但却并不是聚类分析,而是一种主成分分析的方法。
连续变量压缩的原则为:自变量间相关程度越低越好,这样会更加符合模型的假定,故需利用变量聚类的方法去降低变量间的相关性。
变量聚类是数据建模过程中标准的变量选择流程,只要做变量选择,都需要做变量聚类。不仅仅是回归模型需要变量聚类,聚类分析中同样也需要进行变量聚类。要清楚的是,变量聚类并不是回归模型的附属,它做的只是变量的选择。
为什么非要进行变量聚类?
建模变量数量不同,变量筛选的耗时也会不同。
一般,当变量个数超过70个左右时,全子集变量筛选法消耗的时间便开始呈现指数增长,而逐步法进行变量筛选的耗时增速比较缓慢,此时使用逐步回归进行变量筛选较好。因此,变量少于70个左右的时候,我习惯使用全子集法进行变量筛选,而变量多于70个左右的时候,我习惯使用逐步回归法进行变量的筛选。
然而逐步回归法也有困扰。实际构建模型时,变量数量可能上千个,当变量数据足够庞大时,逐步法进行变量筛选耗时也会增加,怎么办?还执着逐步法吗?
能做的只能是先想方法去降低变量数量,我的方法就是变量聚类,也就是数据的压缩。
变量聚类的思路
依据变量间相关性的强弱程度,将相关性强的变量归为一类,然后在每类中选择一个较典型的变量去代表这一类变量,这样,变量的数量便可以大大降低。同时,由于分类是依据变量间的关系,所以最终选出的变量间的、类间的相关性都弱化了许多。
当然,需要清醒的认识到,变量聚类处理是不可能完全消除变量间的相关性的,例如从10个变量中选择了6个变量出来,这6个变量间依然会有相关性,只是与原来10个变量时的相关性相比降低了许多。
变量聚类背后的算法是主成分
变量聚类背后的算法是主成分分析,说到主成分,必然要说下我对主成分与因子分析的看法。
因子分析和主成分分析之间其实没有什么必然的联系。一般能够称为是模型的东西,必须带有随机项,主成分分析不带有随机项,仅仅是数据压缩的手段,而因子分析则带有随机项,故为模型。
如果非要说两者的联系,那便是因子分析中取主成分的方法之一是主成分分析,当然还有很多取主成分的其他方法,例如极大似然法等等。
主成分分析的目的是构造输入变量的少数组合,尽量能解释数据的变异性,这些线性组合即为主成分,形成的降维数据更加利于后续的数据分析。
我对主成分的理解
进行主成分分析时,先取协方差矩阵或相关系数矩阵,然后再取特征值或特征向量,特征向量即为主成分,每一个特征值即为信息量。然后再将特征值由大到小进行排序,这样即可得到各主成分。由于信息量疑似递减,所以取前几个特征向量就可以将代替全部的信息。
主成分选取时,如果变量间相关性特别强,则一组变量就可以将变量的全部信息囊括,此时只需要一个主成分就可以了。通常我选择信息量的标准是80%,这个阈值属于个人经验,信息量70%左右也可以,但最好能达到85%以上,同时还需要注意的是,主成分个数不能太多。
变量聚类有没有必要继续向下分取决于这个主成分的第二特征根的大小,如果特征根已经特别小,则没有必要向下分了。
SAS中用varclus过程步去实现这个过程。
变量聚类后如何选择变量
变量聚类后,需要从每一类中选取出能够代表该类的那一个变量,我的做法是:
本文分享自 Data Analyst 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!