PCA主成分分析的原理解析

先说点废话

       研究生生活转眼就要结束了,不知不觉也在CSDN上浪迹了多年,从本科做毕业设计到研究生做课题,CSDN都给了我不少帮助,如今得空,倒不如留下点什么,权当留念。博主的研究课题涉及到的领域主要是信号处理、模式识别和机器学习,想写的东西也大概与之相关,有关于旧知识的复习,也有新技术的学习笔记。水平有限,毕竟是第一次,大家拍砖的时候,请温柔些。

PCA原理解析

       通常在原始数据中各个元素之间并不能保证完全相互独立,而这些相互关联的元素则会产生大量的冗余信息,甚至造成维度灾难,而主成分分析(principle component analysis, PCA)则是解决这一问题的一种经典算法。其目的是希望用较少的元素去解释原数据最独特的特征,并保证各个变量间的独立性。PCA选出的变量往往要远小于原数据的维度,因此PAC实际上是一种经典的数据降维和特征选择算法。

1. 基本思想

       假设用 x1,x2,...,xp 表示p门课程的成绩, c1,c2,...,cp 表示各门课程的权重,这几门课程的加权和可以表示为:

s=c1x1+c2x2++cpxp.
我们希望 s 能够更好的区分学生的成绩,即使 n 个学生各门成绩的加权和 s1,s2,,sn 尽可能的分散,即使
Var(c1x1+c2x2++cpxp)
的值达到最大。由于方差反映了数据的差异程度,则使 s 的方差最大化意味着我们抓住了各样本的最大差异,当然各门课程的权重值必须有一定的限制,通常规定
c21+c22++c2p=1.
       由于一个主成分不足以表示原数据中 p 个元素所包含的全部信息,因此需要找出第二个乃至更多的主成分,但是各个主成分之间应互相独立,一个主成分不应包含其他主成分中的信息,几何上表现为任意两个主成分正交,即,设 Zi 表示第 i 个主成分,则有
Z1=c1,1x1+c1,2x2++c1,pxpZ2=c2,1x1+c2,2x2++c2,pxpZp=cp,1x1+cp,2x2++cp,pxp
其中对任意的 i,j Var(Zi) 能够达到最大,且有
(ci,1,ci,2,...,ci,p)(cj,1,cj,2,...,cj,p)c2i,1+c2i,2++c2i,p=1
这样既可得到 p个主成分,而这也就是PCA的基本思想。

2. 算法细节

       假设我们有 n 组训练数据,写成矩阵形式即为

X=x11x21xn1x12x22xn2x1px2pxnp
其中每一行为一个样本,每一列表示样本的某一个属性,由于不同属性之间可能采用不同的量纲,因此我们首先需要对数据集进行按列归一化。如数学考试采用百分制,而美术考试采用5分制,则那么我们可能得到如下所示的训练集
X=958360432
,由于量纲不同导致数学成绩与美术成绩相差较大,通过按列归一化可以解决这一问题
xij=xijxj¯¯¯sj
其中 xj¯¯¯ sj 分别为第 j 列上数据的均值和标准差。
       对于样本各元素的任意一个线性组合
z=c1x1+c2x2++cpxp,  j=1pc2j=1.
z 视为一个新变量,由于 X 已经归一化,那么 z 的方差可表示为
M2=1ni=1n(ziz¯)2=1ni=1nz2i=1n(Xl)T(Xl)
其中 l=(c1,c2,...,cp).
       为使 M2 最大,我们先求矩阵 XTX 的归一化特征值 λ1λ2λp 它们所对应的标准正交化特征向量为 η1,η2,ηp ,那么 M2 的最大值应该在 l=η1 时取到,且最大值为 λ1 ,此时可得第一主成分
z1=Xη1
同理可得第k主成分为
zk=Xηk,   k=1,2,...,p

       至此我们已经完成了主成分的提取,但并不是所有的主成分都能反映不同样本之间的差异,因此我们还需要进行特征筛选。一个实用的方法为删除 XTX r 个最小的特征值 λ ,使这些删去的特征值之和只能达到 XTX 所有特征值之和 λi 的15%或30%以下。然后仅使用剩下的特征值和特征向量计算样本的 pr 个主成分。


参考文献

[1]: 数理统计. 杨虎,刘琼荪,钟波. 高等教育出版社

猜你喜欢

转载自blog.csdn.net/u013916933/article/details/49365673