目录
6.3 为什么要计算协方差矩阵的特征值和特征向量?为什么要排序?
1 引言
PCA代码实现的步骤网上已经有很完善的介绍,也有很多资料介绍过PCA的理论推导过程。本文的侧重点是从理论上解释PCA每一个步骤理由,便于更加深刻地理解PCA,而不是单纯地机械式的码代码。
2 PCA的意义
PCA的作用是数据降维。
为什么要进行数据降维呢?
在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上增加了数据采集的工作量,更重要的是在多数情况下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性,同时对分析带来不便。如果分别对每个指标进行分析,分析往往是孤立的,而不是综合的。盲目减少指标会损失很多信息,容易产生错误的结论。
因此需要找到一个合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的。由于各变量间存在一定的相关关系,因此有可能用较少的综合指标分别综合存在于各变量中的各类信息。主成分分析与因子分析就属于这类降维的方法。
3 PCA的实现步骤
4 弄懂PCA要回答的问题
① 为什么去均值(中心化)?
② 为什么要计算协方差矩阵?
③ 为什么要计算协方差矩阵的特征值和特征向量?为什么要按照特征值的大小排序?
④ 主成分个数N怎么确定?
5 PCA原理
要回答上述罗列的问题,就要从PCA的原理说起。
5.1 如何降维?
最大方差理论:在信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。因此我们认为,最好的k维特征是将n维样本点转换为k维后,每一维上的样本方差都很大。
降维本质上就是一个去噪的过程。
如下图,有6个数据点(已中心化,中心化实际上就是将原点移动到样本的中心点):
将上述6个点分别投影到某一维上(用过原点的直线表示):
那么问题来了,我们选择了两条不同的过原点的直线进行投影,哪种更好呢?根据最大方差理论,左边的更好,因为样本点投影后的区分度最大,也就是方差最大。
从上面的分析可以看出 ,降维就是将原来n维样本点映射到新的k维坐标系(k<n),并要求新的样本点尽可能多地携带原始数据点的信息。要携带的信息最多,则要求新的样本点区分度最大,也就是方差最大。
实现降维的关键点有两个:
① 量化样本点之间的区分度(目标函数);
② 求取这个k维坐标系。
5.2 如何量化投影以后样本点之间的区分度?
根据最大方差理论,采用所有样本点投影大小的方差来衡量投影以后样本点之间的区分度。如图所示,蓝色点表示样例,绿色表示在u上的投影,u是直线的斜率也是直线的方向向量,而且是单位向量。绿色点是在u上的投影点,离原点的距离是,即为单个样本点的投影大小。
同理,其他样本点的投影大小也可以采用同样的方式计算得到。那么投影以后,所有样本点投影大小的方差(区分度)为:
式中,表示某个特征所有样本点投影的均值。由于原始点在最开始都进行了去均值操作,所以原始样本数据每一维特征的均值都为0,因此投影到u上的特征的均值仍然是0(即
)。那么上式可以化简为:
5.3 求取k维坐标系
求取k维坐标就是求取各个坐标轴的单位向量,可以转化成一个求解目标函数最大值的问题:
求解u,使得目标函数
要解答这个问题,分两步:
① 证明这个目标函数存在最大值;
② 求解当目标函数取最大值时,对应的u。
5.3.1 目标函数是否存在最大值?
目标函数可进行如下变换: