《模式识别》大作业人脸识别方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《模式识别》大作业人脸识别方法
---- 基于PCA 和欧几里得距离判据的模板匹配分类器
一、 理论知识
1、主成分分析
主成分分析是把多个特征映射为少数几个综合特征的一种统计分析方法。在多特征的研究中,往往由于特征个数太多,且彼此之间存在着一定的相关性,因而使得所观测的数据在一定程度上有信息的重叠。当特征较多时,在高维空间中研究样本的分布规律就更麻烦。主成分分析采取一种降维的方法,找出几个综合因子来代表原来众多的特征,使这些综合因子尽可能地反映原来变量的信息,而且彼此之间互不相关,从而达到简化的目的。主成分的表示相当于把原来的特征进行坐标变换(乘以一个变换矩阵),得到相关性较小(严格来说是零)的综合因子。
1.1 问题的提出
一般来说,如果N 个样品中的每个样品有n 个特征12,,
n x x x ,经过主成分分析,将
它们综合成n 综合变量,即
11111221221122221122n n
n n n n n nn n
y c x c x c x y c x c x c x y c x c x c x =+++⎧⎪=+++⎪⎨⎪⎪=++
+⎩
ij c 由下列原则决定:
1、i y 和j y (i j ≠,i,j = 1,2,...n )相互独立;
2、y 的排序原则是方差从大到小。这样的综合指标因子分别是原变量的第1、第2、……、第n 个主分量,它们的方差依次递减。
1.2 主成分的导出
我们观察上述方程组,用我们熟知的矩阵表示,设12
n x x X x ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦
是一个n 维随机向量,
12n y y Y y ⎡⎤⎢⎥
⎢⎥=⎢⎥⎢⎥⎣⎦
是满足上式的新变量所构成的向量。于是我们可以写成Y=CX,C 是一个正交矩阵,
满足CC ’=I 。
坐标旋转是指新坐标轴相互正交,仍构成一个直角坐标系。变换后的N 个点在1y 轴上
有最大方差,而在n y 轴上有最小方差。同时,注意上面第一条原则,由此我们要求i y 轴和j y 轴的协方差为零,那么要求
T YY =Λ
1
2n λλλ⎡⎤⎢⎥⎢⎥Λ=⎢⎥⎢⎥⎣
⎦
令T R XX =,则T T RC C =Λ
经过上面式子的变换,我们得到以下n 个方程
111111212112111221122111121211()0()0
()0n n n n n n nn n r c r c r c r c r c r c r c r c r c λλλ-+++=+-++=++
+-=
1.3 主成分分析的结果
我们要求解出C ,即解出上述齐次方程的非零解,要求ij c 的系数行列式为0。最后得出
结论i λ是||0R I λ-=的根,i y 的方差为i λ。然后选取前面p 个贡献率大的分量,这样就实现了降维。也就是主成分分析的目标。
二、 实现方法
1、 获取数据。在编程时具体是把一幅二维的图像转换成一维的;
2、 减去均值。要使PCA 正常工作,必须减去数据的均值。减去的均值为每一维的平均,
所有的x 值都要减去,同样所有的y 值都要减去,这样处理后的数据都具有0均值;
3、 计算协方差矩阵;
4、 计算协方差矩阵的特征矢量和特征值。因为协方差矩阵为方阵,我们可以计算它的特征
矢量和特征值,它可以告诉我们数据的有用信息;
5、选择成分组成模式矢量
现在可以进行数据压缩降低维数了。如果你观察上一节中的特征矢量和特征值,会注意到那些特征值是十分不同的。事实上,可以证明对应最大特征值的特征矢量就是数据的主成分。
对应大特征值的特征矢量就是那条穿过数据中间的矢量,它是数据维数之间最大的关联。
一般地,从协方差矩阵找到特征矢量以后,下一步就是按照特征值由大到小进行排列,这将给出成分的重要性级别。现在,如果你喜欢,可以忽略那些重要性很小的成分,当然这
会丢失一些信息,但是如果对应的特征值很小,你不会丢失很多信息。如果你已经忽略了一些成分,那么最后的数据集将有更少的维数,精确地说,如果你的原始数据是n维的,你选择了前p个主要成分,那么你现在的数据将仅有p维。
现在要做的是你需要组成一个模式矢量,这只是几个矢量组成的矩阵的一个有意思的名字而已,它由你保持的所有特征矢量构成,每一个特征矢量是这个矩阵的一列。
6、获得新数据
这是PCA最后一步,也是最容易的一步。一旦你选择了须要保留的成分(特征矢量)并组成了模式矢量,我们简单地对其进行转置,并将其左乘原始数据的转置:其中rowFeatureVector是由特征矢量作为列组成的矩阵的转置,因此它的行就是原来的特征矢量,而且对应最大特征值的特征矢量在该矩阵的最上一行。rowdataAdjust是减去均值后的数据,即数据项目在每一列中,每一行就是一维。FinalData是最后得到的数据,数据项目在它的列中,维数沿着行。
FinalData = rowFeatureVector * rowdataAdjust
这将仅仅给出我们选择的数据。我们的原始数据有两个轴(x和y),所以我们的原始数据按这两个轴分布。我们可以按任何两个我们喜欢的轴表示我们的数据。如果这些轴是正交的,这种表达将是最有效的,这就是特征矢量总是正交的重要性。我们已经将我们的数据从原来的xy轴表达变换为现在的单个特征矢量表达。如果我们已经忽略了一些特征矢量,则新数据将会用我们保留的矢量表达。
三、matlab编程
matlab程序分为三部分。程序框图如下图所示。
四、总结
从书里看我觉得最让人明白模板匹配分类器的一段话,就是“譬如A类有10个训练样