大样本的数据集固然提供了丰富的信息,但也在一定程度上增加了问题的复杂性。如果我们分别对每个指标进行分析,往往得到的结论是孤立的,并不能完全利用数据蕴含的信息。但是盲目的去减少我们分析的指标,又会损失很多有用的信息。所以我们需要找到一种合适的方法,一方面可以减少分析指标,另一方面尽量减少原指标信息的损失。
变量压缩的方法非常多,但百法不离其中,其实最根本的都是「主成分分析」(Primary Component Analysis,下简称PCA
)。
「有哪些压缩的方法?」
总的来说降维有两种方法,一种是特征消除,另一种是特征提取
- 特征消除:如上一问提到的采用卡方检验这样的非算法,又或者直接拍脑袋决策需要删掉哪些变量,但这可能会使我们丢失这些特征中的很多信息。
- 特征提取:通过组合现有特征来创建新变量,可以尽量保存特征中存在的信息。
PCA
就是一种常见的特征提取方法,它会将关系紧密的变量们用尽可能少的新创建的变量代替,使这些新变量是两两不相关的。这就实现用较少的综合指标分别代表存在于各个变量中的各类信息。所以多元变量压缩思路的基础其实是相关分析。
要注意的是如果呈球形分布,这说明变量间没有相关关系,没有必要做主成分分析,也不能做变量的压缩。
那么如何知道应该压缩成几个主成分?PCA 的功能是压缩信息,压缩后的每个主成分都能够解释一部分信息的变异程度(统计学家喜欢用方差表示信息的变异程度),所以,只需要满足解释信息的程度达到一定的值即可。
- 计算每个成份因子
- 将不同成分因子所能解释的变异百分比相加 3. 得到的值被称之为累积变异百分比 4. PCA 过程中,我们将选择能使得这个值最接近于 1 的维度个数
明显可以看出随着成分数目的增加,累积变异百分比逐渐增加。不建议使得累积百分比等于1,这将会导致有些主成分带来冗余信息,通常等于 0.85 就可以了。当然我们也可以选择两个主成分,因为当我们增加第三个主成分因子时,会发现增加它对于累积变异的百分比没有太大的影响。
Python实战
在正式开始 Python 代码实战前,简要了解主成分分析的运用场景是非常有必要的
-
综合打分:这种情况在日常中经常遇到,比如高考成绩的加总、员工绩效的总和排名。这类情况要求只出一个综合打分,因此主成分分析比较适合。相对于讲单项成绩简单加总的方法,主成分分析会赋予区分度高的单项成绩以更高的权重,分值更合理。不过当主成分分析不支持只取一个主成分时,就不能使用该方法了。-
-
数据描述:描述产品情况,比如著名的波士顿矩阵,子公司业务发展状况,区域投资潜力等,需要将多变量压缩到少数几个主成分进行描述,如果压缩到两个主成分是最理想的。这类分析一般做主成分分析是不充分的,做到因子分析更好。
-
为聚类或回归等分析提供变量压缩:消除数据分析中的共线性问题,消除共线性常用的有三种方法,分别是:
- 同类变量中保留一个最有代表性的;
- 保留主成分或因子;
- 从业务理解上进行变量修改。
案例背景:某金融服务公司为了了解贷款客户的信用程度,评价客户的信用等级,采用信用评级常用的5C(品质 Character,能力 Capacity,资本 Capital,抵押 Collateral,条件 Conditi