先说点废话
研究生生活转眼就要结束了,不知不觉也在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,pxp⋅⋅⋅⋅⋅⋅Zp=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=⎡⎣⎢⎢⎢⎢x11x21⋅⋅⋅xn1x12x22⋅⋅⋅xn2⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅x1px2p⋅⋅⋅xnp⎤⎦⎥⎥⎥⎥
其中每一行为一个样本,每一列表示样本的某一个属性,由于不同属性之间可能采用不同的量纲,因此我们首先需要对数据集进行按列归一化。如数学考试采用百分制,而美术考试采用5分制,则那么我们可能得到如下所示的训练集
X=⎡⎣⎢958360432⎤⎦⎥
,由于量纲不同导致数学成绩与美术成绩相差较大,通过按列归一化可以解决这一问题
xij=xij−xj¯¯¯sj
其中
xj¯¯¯
、
sj
分别为第
j
列上数据的均值和标准差。
对于样本各元素的任意一个线性组合
z=c1x1+c2x2+⋅⋅⋅+cpxp, ∑j=1pc2j=1.
将
z
视为一个新变量,由于
X
已经归一化,那么
z
的方差可表示为
M∗2=1n∑i=1n(zi−z¯)2=1n∑i=1nz2i=1n(Xl)T(Xl)
其中
l=(c1,c2,...,cp).
为使
M∗2
最大,我们先求矩阵
XTX
的归一化特征值
λ1≥λ2≥⋅⋅⋅≥λp
它们所对应的标准正交化特征向量为
η1,η2,⋅⋅⋅ηp
,那么
M∗2
的最大值应该在
l=η1
时取到,且最大值为
λ1
,此时可得第一主成分
z1=Xη1
同理可得第k主成分为
zk=Xηk, k=1,2,...,p
至此我们已经完成了主成分的提取,但并不是所有的主成分都能反映不同样本之间的差异,因此我们还需要进行特征筛选。一个实用的方法为删除
XTX
的
r
个最小的特征值
λ
,使这些删去的特征值之和只能达到
XTX
所有特征值之和
∑λi
的15%或30%以下。然后仅使用剩下的特征值和特征向量计算样本的
p−r
个主成分。
参考文献
[1]: 数理统计. 杨虎,刘琼荪,钟波. 高等教育出版社