PCA 算法的原理及其示例
郑琛
(北京师范大学,北京 100875)
摘要:主成分分析是一种掌握事物主要矛盾的统计分析方法,它可以从多元事物
中解析出主要影响因素,揭示事物的本质,简化复杂的问题,对于某些复杂数据
就可应用主成分分析法对其进行简化。计算主成分的目的是将高维数据投影到较
低维空间。文中介绍了 PCA 算法的基本概念和基本原理,利用算法在降维和特
征提取方面的有效性,结合人脸识别的实例进行详细的阐述。
关键字:主成分分析;数据降维;特征提取
一、PCA 算法的基本概念
PCA 是 Principal component analysis 的缩写,中文翻译为主成分分
析。主成分又称主分量、主元素。它是研究如何通过原来变量的少数
几个线性组合来解释随机向量的方差-协方差结构,是数据压缩和特征
提取中一种多维向量的统计分析方法[1]。这种方法可以有效的找出数
据中最“主要”的元素和结构,去除噪音[2]和冗余,将原有的复杂数据
降维,揭示隐藏在复杂数据背后的简单结构。它的优点是简单,而且无
参数限制,可以方便的应用与各个场合。因此应用极其广泛,从神经科
学到计算机图形学都有它的用武之地。被誉为应用线形代数最有价值
的结果之一。
二、PCA 算法的原理与基本思想
PCA 算法的原理是设法将原来变量重新组合成一组新的互相无
关的几个综合变量,同时根据实际需要从中可以取出几个较少的总和
变量尽可能多地反映原来变量的信息的统计的方法,也是数学上处理
降维的一种方法。
PCA 算法的基本思想是设法将原来众多具有一定相关性(比如 P
个指标),重新组合成一组新的互相无关的综合指标来代替原来的指
标。通常数学上的处理就是将原来 P 个指标作线性组合,作为新的综
合指标。典型的做法就是用 F1(选取的第一个线性组合,即第一个
综合指标)的方差来表达,即 Var(F1)越大,表示 F1 包含的信息
越多。因此在所有的线性组合中选取的 F1 应该是方差最大的,故称
F1 为第一主成分。如果第一主成分不足以代表原来 P 个指标的信息,
再考虑选取 F2 即选第二个线性组合,为了有效地反映原来信息,F1
已有的信息就不需要再出现再 F2 中,用数学语言表达就是要求 Cov
(F1,F2)=0,则称 F2 为第二主成分,以此类推可以构造出第三、
第四,...........,第 P 个主成分。应当注意,主成分分析本身往往并不
是目的,而是达到目的的一种手段,因此,它多用在大型研究项目的
某个中间环节。如把它用在多重回归,便产生了主成分回归,这种回
归具有优良性质,另外,它在压缩、特征提取及分类应用中非常有用。
三、PCA 求解的一般步骤
PCA 求解:特征方程的根
在线形代数中,PCA 问题可以描述成以下形式:
寻找一组正交基组成的矩阵 P,有 Y=PX,使得 CY 1
n-1
则 P 的行向量(也就是一组正交基),就是数据 X 的主元向量。
YYT 是对角阵。
对 CY 进行推导:
CY= 1
n-1
= 1
n-1
= 1
n-1
= 1
n-1
YYT
(PX)(PX)T
PXXTPT
P(XXT)PT
CY= 1
n-1
PAPT
定义 A XXT,则 A 是一个对称阵。对 A 进行对角化求取特征向量得:
A=EDET
则 D 是一个对角阵,而 E 则是对称阵 A 的特征向量排成的矩阵。
这里要提出的一点是,AA 是一个 m×m 的矩阵,而它将有 r(r m)个
特征向量。其中 r 是矩阵 AA 的秩。如果 r
3)对 XXT 进行特征分解,求取特征向量以及所对应的特征根。
四、举例说明——基于 PCA 算法的人脸识别
PCA 方法由于其在降维和特征提取方面的有效性,在人脸识别领域
得到了广泛的应用。
PCA 方法的基本原理是:利用 K-L 变换[3]抽取人脸的主要成分,构成
特征脸空间,识别时将测试图像投影到此空间,得到一组投影系数,
通过与各个人脸图像比较进行识别。利用特征脸法进行人脸识别的过
程由训练阶段和识别阶段两个阶段组成。其具体步骤如下:
训练阶段
第一步:假设训练集有 200 个样本,由灰度图组成,每个样本大小为
M*N,写出训练样本矩阵:
x
,
xx
1
2
,...,
x
200
T
其中向量 xi 为由第 i 个图像的每一列向量堆叠成一列的 MN 维列向量,
即把矩阵向量化,如下图所示:
如:第 i 个图像矩阵为
1
4
7
2
5
8
3
6
9
321
654
987
则 xi 为
第二步:计算平均脸[4]
计算训练图片的平均脸:
第三步:计算差值脸
1 i
200
200
i
1
ix
计算每一张人脸与平均脸的差值:
d
i
x
i
i
第四步:构建协方差矩阵
C
1 200
200
1
i
A
dd
1
dd
i
T
i
,...,d
2
T
AA
1
200
200
第五步:求协方差矩阵的特征值和特征向量,构造特征脸空间
协方差矩阵的维数为 MN*MN,考虑其维数较大,计算量比较大,所
以采用奇异值分解(SingularValue Decomposition ,SVD)定理[5],通过求
解 AT A 的特征值和特征向量来获得 AAT 的特征值和特征向量。
求出 AT A 的特征值
根据特征值的贡献率选取前 p 个最大特征向量及其对应的特征向量
贡献率是指选取的特征值的和与占所有特征值的和比,即:
及其正交归一化特征向量
i
i
i
pi
1
i
200
i
1
i
i
a
即使训练样本在前 p 个特征向量集上的投影有
%99a
一般取
99%的能量
求出原协方差矩阵的特征向量
则“特征脸”空间为:
1
,
uuw
2
,,...
u
i
,...,2,1
p
)
1
i
i
(
iAv
pu
第六步 将每一幅人脸与平均脸的差值脸矢量投影到“特征脸”空间,
即
,...,2,1
200
T
idw i
i
第一步:将待识别的人脸图像 与平均脸的差值脸投影到特征空间,
识别阶段
得到其特征向量表示:
第二步:定义阈值
i
第三步:采用欧式距离来计算
1
2
Tw
max
,
j
i
,...,2,1
2
i
200
2
i
i
,
j
i
,
j
2,1
200
,...,
i
与每个人脸的距离
为了区分人脸和非人脸,还需要计算原始图像 与由特征脸空间重
建的图像 之间的距离
f
2
f
2
其中:
w
f
,则输入图像不是人脸图像;
根据以下规则对人脸进行分类:
1)若
2)若
3)若
五、结束语
i
i
i
i
,且
,且
,
,
则输入图像包含未知人脸;
则输入图像为库中第 k 个人的人脸。
PCA 技术的一大好处是对数据进行降维的处理。我们可以对新
求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部
分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压
缩的效果。同时最大程度的保持了原有数据的信息。
在前文的例子中,经过 PCA 处理后的数据只剩下了一维,也就是
弹簧运动的那一维,从而去除了冗余的变量,揭示了实验数据背后的物
理原理。
PCA 技术的一个很大的优点是,它是完全无参数限制的。在 PCA
的计算过程中完全不需要人为的设定参数或是根据任何经验模型对
计算进行干预,最后的结果只与数据相关,与用户是独立的。但是,这一
点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,
掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干
预,可能会得不到预期的效果,效率也不高。
参考文献:
[1] Jose C.A Fast On-line Algorithm for PCA and Its Convergence
Characteristics[J].IEEE,Transactions on Neural Network, 2000,
4(2):299-307
[2] 唐懿芳,钟达夫,主成分分析方法对数据进行预处理[J].广西师范大
学学报.
[3] 彭 辉,等.基于 K-L 变换的人脸自动识别方法[J].清华大学学报
(自然科学版),1997,(3).
[4] 何国辉,甘俊英(2006), “PCA 类内平均脸法在人脸识别中的应用研
究”.«计算机应用研究»,2006 年第三期.
[5] 徐 仲,等.矩阵论简明教程(第四版)[M].北京:科学出版社,2005.