主成成分分析(Principal Component Analysis,简称PCA),将多个变量通过线性变换以选出个数较少重要变量的一种多元统计分析方法。
问题:多变量表达信息时,增加信息处理的复杂性。
解决办法:直接想法就是减少变量的个数,但是这样做可能会导致信息缺失。因此,我们希望找到一种能减少变量个数且最大限度的保持原有信息的方法。PCA就是以最少的信息丢失为前提,将众多的原有变量综合成一组新的互相无关的几个综合变量。(为什么是线性无关呢,因为当两个变量线性相关时,表示变量表达的信息可能有重叠,就正如线性代数中一个向量由三个线性相关的向量表示,它也可以由两个线性无关的向量表示。)
提到要转换成一组新的较少个数的互不相关的综合变量,那么综合变量应该如何提取,使其既能最大程度的反映原变量所代表的信息,又能保证新变量之间保持相互无关(信息不重叠)。
假设原有变量为X1,X2,···,Xp,F1表示原变量的第一个线性组合所形成的主成分变量,即
F1 =a11X1+a12X2+···+a1pXp ,
由数学知识可知,每一个主成分所提取的信息量可用其方差来度量,其方差Var(F1)越大,表示F1包含的信息越多。我们希望第一主成分F1包含尽可能多的信息,因为这样才能用最少个数的变量保持原有的信息。因此在所有的线性组合中选取的F1应是方差最大的X1,X2,…,XP的线性组合,故称F1为第一主成分。如果第一主成分不足以代表原来p个变量的信息,再考虑选取第二个主成分F2,为有效地反映原信息,F1已有的信息就不需要再出现在F2中,即F2与F1要保持不相关,用数学语言表达就是其协方差Cov(F1, F2)=0,所以F2是与F1不相关的X1,X2,…,XP的所有线性组合中方差最大的,故称F2为第二主成分,依此类推构造出的F1、F2、……、Fm为原变量X1、X2……XP第一、第二、……、第m个主成分。
根据以上分析,Fi应满足下列要求:
(1) Fi与Fj互不相关,即Cov(Fi,Fj) = 0;
(2) Fi是与F1,F2,……,Fi-1都不相关的X1,X2,…,XP的所有线性组合中方差最大者。
如何求出各主成分Fi关于原变量Xj(j=1,2 ,…, p)的表达式,即系数aij( i=1,2,…,m; j=1,2 ,…,p)呢。
由协方差矩阵对称性质知
假设有N个样本数据,则Fi的均值为:
为X的协方差矩阵。
由特征值可知,
=>
因此我们可以认为,
为矩阵的特征值,ai为相应对应的单位化特征向量。
原变量协方差矩阵的特征根是主成分的方差,所以前m个较大特征根就代表前m个较大的主成分方差值,原变量协方差矩阵前m个较大的特征值所对应的特征向量就是相应主成分Fi表达式的系数ai。
主成分分析的具体步骤如下:
(1)计算样品数据的协方差矩阵
协方差矩阵的求法(文[2]中有详细介绍协方差矩阵的求法):
1)直接计算
2)
计算每个变量的平均值,即
构建协方差矩阵
(2)求出Σ的特征值及相应的正交化单位特征向量ai
求解特征值有两种方法:1)直接求;2)采用奇异值分解定理(SVD)求解(适合高维矩阵)。
求出特征值和特征向量后,原变量的第i个主成分Fi为:
主成分的方差(信息)贡献率用来反映信息量的大小,贡献率为:
(3)选择主成分
根据累计贡献率选取前m个最大特征值及其对应的特征向量
当累积贡献率大于85%时,就认为能足够反映原来变量的信息了。
图像处理中,常常要提取图像的特征,如颜色、纹理或sift等。当提取复杂特征时,特征向量的维数就会很大,存储和处理都不方便,所以可以对特征向量PCA降维。
PCA在人脸识别当中的应用
假设有N幅人脸图像,每一幅图像提取的特征为128维的向量,即p = 128。
1)计算平均脸。对N幅图像求均值,得到一个128维特征向量,该特征向量表征平均脸。
2)计算差值脸。让每一张脸减去平均脸,得到差值脸di。
3)计算协方差矩阵。差值脸矩阵乘以它的转置,再除以N-1,得到协方差矩阵。
4)求出协方差矩阵的特征值和特征向量。根据累计贡献率选取前m个最大特征值和其对应的特征向量,则特征脸空间为:(a1,a2,...,am),ai为第i个特征向量。
5)特征脸。将每一幅脸对应的差值脸投影到特征脸空间得到m维的特征脸。
6)识别阶段。
将待识别的人脸与平均脸的差值脸投影到特征脸空间,得到其降维的特征向量。将该特征向量与样本中特征脸向量进行匹配,可以通过计算两向量的欧式距离,设定阈值来实现。
[1] 主成分分析法原理及应用
[2] PCA降维方法
[3] PCA算法