先说点废话
研究生生活转眼就要结束了,不知不觉也在CSDN上浪迹了多年,从本科做毕业设计到研究生做课题,CSDN都给了我不少帮助,如今得空,倒不如留下点什么,权当留念。博主的研究课题涉及到的领域主要是信号处理、模式识别和机器学习,想写的东西也大概与之相关,有关于旧知识的复习,也有新技术的学习笔记。水平有限,毕竟是第一次,大家拍砖的时候,请温柔些。
PCA原理解析
通常在原始数据中各个元素之间并不能保证完全相互独立,而这些相互关联的元素则会产生大量的冗余信息,甚至造成维度灾难,而主成分分析(principle component analysis, PCA)则是解决这一问题的一种经典算法。其目的是希望用较少的元素去解释原数据最独特的特征,并保证各个变量间的独立性。PCA选出的变量往往要远小于原数据的维度,因此PAC实际上是一种经典的数据降维和特征选择算法。
1. 基本思想
假设用 x1,x2,...,xp 表示p门课程的成绩, c1,c2,...,cp 表示各门课程的权重,这几门课程的加权和可以表示为:
s=c1x1+c2x2+⋅⋅⋅+cpxp.
我们希望
s
能够更好的区分学生的成绩,即使
Var(c1x1+c2x2+⋅⋅⋅+cpxp)
的值达到最大。由于方差反映了数据的差异程度,则使
s
的方差最大化意味着我们抓住了各样本的最大差异,当然各门课程的权重值必须有一定的限制,通常规定
(ci,1,ci,2,...,ci,p)⊥(cj,1,cj,2,...,cj,p)c2i,1+c2i,2+⋅⋅⋅+c2i,p=1
这样既可得到
p个主成分,而这也就是PCA的基本思想。
2. 算法细节
假设我们有 n 组训练数据,写成矩阵形式即为
X=⎡⎣⎢958360432⎤⎦⎥
,由于量纲不同导致数学成绩与美术成绩相差较大,通过按列归一化可以解决这一问题
xij=xij−xj¯¯¯sj
其中
xj¯¯¯
、
sj
分别为第
j
列上数据的均值和标准差。
z=c1x1+c2x2+⋅⋅⋅+cpxp, ∑j=1pc2j=1.
将
z
视为一个新变量,由于为使 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 个最小的特征值
参考文献
[1]: 数理统计. 杨虎,刘琼荪,钟波. 高等教育出版社