PCA和LDA

一.PCA     

       在讲PCA之前,首先有人要问了,为什么我们要使用PCA,PCA到底是干什么的?这里先做一个小小的解释,举个例子:在人脸识别工作中一张人脸图像是60*60=3600维,要处理这样的数据,计算量肯定很大,为了能降低后续计算的复杂度,节约时间,我们在处理高维数据的时候,在“预处理”阶段通常要先对原始数据进行降维,而PCA就是做的这个事。本质上讲,PCA就是讲高维的数据通过线性变换投影到低维空间上去,这个投影可不是随便投投,我们要找出最能代表原始数据的投影方法,亦即不失真,可以这么理解,被PCA降掉的那些维度只能是那些噪声或者是冗余数据。

      下面就先讲一下PCA算法的主要过程:    

      主成分分析(Principal Component Analysis,PCA),是寻求有效的线性变换的经典方法之一,它的目的是在最小均方意义下寻找最能代表原始数据的投影方向,从而达到对特征空间进行降维的目的。

      这里,我们首先做一些简单的定义。对于一个人脸样本集,模式类别有C个:ω1,ω2,...,ωc,第i类有训练样本ni个:ξi1,ξi2,...,ξim,每个样本是m*n向量。

1.把所有的图像矩阵按列进行列向量化;

      首先,什么是向量化矩阵呢?我们定义A=(A1,A2,...,Am)€Rm*n,定义mn*1的向量

      这里,样本图像构成一个m*n的图像矩阵 I,可以将图像矩阵 I 转化为mn*1的图像向量ξ,即ξ=Vec(I)。

2.计算平均列向量,列向量中心化;

      第i类训练样本的均值为:

      设训练样本个数为N,则全体训练样本的均值为:

3.计算协方差矩阵S;

      类间散布矩阵为:

      这里,P(wi)是第i类样本的先验概率。简单解释一下,例如我们又2个类,第一个类有40个样本,第二个类有60个样本,那么

P(1)=40/(40+60)=0.4

P(2)=60/(40+60)=0.6

      我们可以知道St的实际意义是一个协方差矩阵,这个矩阵所刻画的是该类与样本总体之间的关系,其中该矩阵对角线上的函数所代表的的是该类相对样本总体的方差(即分散度),而非对角线上的元素所代表的是该类样本总体均值的协方差(即该类和总体样本的相关联度或称冗余度)。

4.计算写协方差矩阵S的特征值和特征向量,保留d个最大的特征值,以及这d个特征值所对应的特征向量,且要把这些特征向量正交标准化,从而就构成了新的子空间的基矩阵;

      定义准则函数:

J(X)=XTS1X

      最大化该准则函数的单位向量X称为最优投影向量,其物理意义是:图像向量在X方向上投影后得到的特征向量的总体散度程度最大。事实上,该最优投影向量即为类间散步矩阵S1的最大特征值所对应的单位特征向量。一般来说,在样本类别数较多的情况下,单一的投影方向是不够的,需要寻找一组满足标准正交条件且极大化准则函数的最优投影向量X1,X2,...,Xd

      最优投影向量组X1,X2,...,Xd,可取为S1的d个最大特征值所对应的标准正交的特征向量。

      令W=[X1,X2,...,Xd],W€Rm*n称为最优投影矩阵。

5.将训练样本和测试样本投影到这个子空间上,然后我们选择合适的分类器和相异度测试公式对测试样本进行分类。

      最优投影向量组X1,X2,...,Xd可用于特征提取。对已知的样本图像向量ξ,令:

Y=XkTξ(k=1,2,...,d)

      投影特征X1,X2,...,Xd称为向量ξ的主成分(Principal component),利用获得的主成分可构成ξd维的特征向量B=[Y1,Y2,...,Yd]T,即B=WTξ。

6.分类

      接下来就是分类了,对于一个测试样本,我们寻找投影后它跟哪些训练样本投影后靠得比较近,那么我们就可以把他们归于一类。

      常用的分类方法有最近邻法,最小距离法,这里就不做介绍了。

 

      好了,终于讲完了PCA算法的主要过程,但是估计还会有人问为什么只提取特征值较大的几个特征值对应的特征向量就可以近似代替原样本矩阵呢?其实我们知道了矩阵的特征值和特征向量的数学意义,这个问题就很好解释了。

      以二维矩阵A=[1 0;0 0.01]为例,容易得到A的两个特征值λ1=1,e1=[1 0]T2=0.01,e2=[0 1]T,那么x=[2 3]T经过A变换为Bx=[2 0.03]T,如果我们认为λ2太小忽略掉时,Bx≈[2 0]T

      例如,平面上一个短轴远小于长轴的椭圆,那么椭圆上的点在短轴上的分布明显弱于长轴,我们可以认为他近似于一条直线,也就是说我们用PCA降掉了短轴这一维。

     

二.LDA

      线性判别式分析(Linear Discriminant Analysis,LDA),也叫做Fisher线性判别(Fisher Linear Discrininant,FLD),是模式识别的经典算法,它是在1996年有Belhumeur引入模式识别和人工智能领域的。线性鉴别分析的基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间(即投影后)具有最大的类间距离和最小的类内距离,也就是说样本在该空间上有最佳的可分离性。

      下面,我们就来具体看一下LDA算法的主要步骤:

      与PCA不同的是,LDA是有监督学习,需要用到样本类信息,即训练样本是带有类标签的,也就是说我事先知道样本类别。

1.把所有图像矩阵按列进行列向量化;

2.计算平均列向量;

3.列向量中心化;

      这3步呢,与PCA一样,都是算法的数据预处理过程,就不做多说了。

4.计算Sb,Sw

      Sb代表类间协方差矩阵:

      Sw代表类内协方差矩阵:

      St代表总体协方差矩阵:

      可以证明St=Sb+Sw

5.利用Fisher准则计算特征值和特征向量;

      Fisher鉴别准则函数定义:

      从上式我们可以看出Fisher鉴别准则函数将样本在投影矢量上的类间散度和类内散度结合在一起,为我们确定最优投影方向提供了一个准则。我们选取是的准则函数J(X)达到最大的矢量X作为我们的投影方向,这就是最佳投影向量,这个最佳投影向量的物理意义是:投影后的样本具有最大的类间散度,同时具备最小的类内散度。

6.保留d个最大的特征值,及这d个特征值所对应的特征向量,且要把这些特征向量正交标准化,从而就构成了新的子空间的基矩阵;

      在实际应用中经典的Fisher线性鉴别分析最优投影轴族,即最优的投影矩阵W的列向量X1,X2,...,Xd一般取为广义特征方程SbX=λSwX的d个最大的特征值所对应的特征项。即X1,X2,...,Xd满足一下条件:

SbXjjSwXj,j=1,2,...,d,其中X1≥...≥Xd

      由于SbX=λSwX之多存在C-1个非零特征向量,故最优投影的个数d≤C-1,也就是说若有10类人脸样本,那么d≤9。

      注:在PCA算法中,d<N,N是训练样本个数,这里有所区别,不能混淆。

7.将训练样本和测试样本投影到这个子空间上,然后我们选择合适的分类器和相异度测试公式对样本进行分类。

       这一部分跟PCA一样,就不在累赘了。

 

      缺陷:研究表明,特征脸方法随着光线,角度和人脸尺寸等因素的引入,识别率急剧下降,PCA和LDA提取的特征向量集,强调的是不同人脸差异而不是人脸表情、照明条件等条件的变化,因此特征脸方法用于人脸识别还存在很多缺陷。

 

本文中有任何问题或漏洞,欢迎不吝指正,谢谢大家!

转载请注明出处:http://www.cnblogs.com/Rosanna/p/3270113.html

posted @ 2013-08-20 14:17  七年之后  阅读(1935)  评论(0编辑  收藏  举报