一.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

PCA和LDA的更多相关文章

  1. PCA与LDA的区别与联系

    由于涉及内容较多,这里转载别人的博客: http://blog.csdn.net/sunmenggmail/article/details/8071502 其实主要在于:PCA与LDA的变换矩阵不同, ...

  2. 四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps

    四大机器学习降维算法:PCA.LDA.LLE.Laplacian Eigenmaps 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习一个映 ...

  3. 【转】四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps

    最近在找降维的解决方案中,发现了下面的思路,后面可以按照这思路进行尝试下: 链接:http://www.36dsj.com/archives/26723 引言 机器学习领域中所谓的降维就是指采用某种映 ...

  4. PCA和LDA降维的比较

    PCA 主成分分析方法,LDA 线性判别分析方法,可以认为是有监督的数据降维.下面的代码分别实现了两种降维方式: print(__doc__) import matplotlib.pyplot as ...

  5. matlab 工具之各种降维方法工具包,下载及使用教程,有PCA, LDA, 等等。。。

    最近跑深度学习,提出的feature是4096维的,放到我们的程序里,跑得很慢,很慢.... 于是,一怒之下,就给他降维处理了,但是matlab 自带的什么pca( ), princomp( )函数, ...

  6. PCA与LDA介绍

    PCA(主成分分析) PCA是一种无监督降维方式,它将数据投影到一组互相正交的loading vectors(principal axes)之上,并保证投影后的点在新的坐标轴上的方差最大 记数据集\( ...

  7. 特征选取方法PCA与LDA

    一.主成分分析(PCA)介绍 什么是主成分分析?   主成分分析是一种用于连续属性降维的方法,把多指标转化为少数几个综合指标. 它构造了原始属性的一个正交变换,将一组可能相关的变量转化为一组不相关的变 ...

  8. PCA与LDA

  9. 线性判别分析(LDA), 主成分分析(PCA)及其推导【转】

    前言: 如果学习分类算法,最好从线性的入手,线性分类器最简单的就是LDA,它可以看做是简化版的SVM,如果想理解SVM这种分类器,那理解LDA就是很有必要的了. 谈到LDA,就不得不谈谈PCA,PCA ...

随机推荐

  1. MongoDB复制机制实例

    MongoDB的主从复制是一个主可以多从已从又可以为主进行主从复制.在这里就是实现一主一从一个仲裁服务器使用一个数据库服务器通过提供不同的端口. 一.启动一个MongoDB服务名字是applicati ...

  2. OpenStack:安装Keystone

    >安装Keystone1. 安装# apt-get install keystone2. 创建dbcreate database keystone;grant all privileges on ...

  3. UITabelView 高级(自定义Cell)

    自定义一个Cell 当我们要显示复杂数据的时候,例如要做一个扣扣聊天界面,或是新闻列表,系统的行已经不能满足我们的要求,这个时候我们可以通过自定义这个行,让他显示更多复杂结构的样式. 自定义cell就 ...

  4. 重装win7系统的方法

    1.当电脑可以运行的情况下重装系统: 用傻瓜似的重装系统就可以了,这个简单,不在累赘. 2.当电脑打不看的情况下: 2.1 用光盘安装系统,这个有好多教程,不在累赘. 2.2 用U盘安装方法: 2.2 ...

  5. centos安装redis3为系统服务

    源地址:http://my.oschina.net/haoqoo/blog/464247 <span></span>#无wget,请通过命令yum install wget安装 ...

  6. SQL SERVER完整、差异和事务日志备份及还原(脚本和GUI实现) [原创]

    一.完整备份.差异备份和事务日志备份的脚本 --完整备份数据库 BACKUP DATABASE Test_Bak TO DISK = 'E:\20150609_75\bak\Test_bak_full ...

  7. ImportError: No module named _winreg

    在Flask项目部署到linux上时出现了一个问题,但是在windows上是好的,没有问题.以下是bug Traceback (most recent call last): File "f ...

  8. C#开源系统大汇总(转)

    一.AOP框架        Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种 ...

  9. 设置 Eclipse 智能代码提示,大幅度减少 alt+/ 使用频率,打每个字都出现代码提示的办法

    以前网上有个英文版本的,现在自己汉化一下...O(∩_∩)O 哈哈 ~   http://www.cnblogs.com/lidabo/archive/2013/03/05/2944245.html ...

  10. Netsharp快速入门(之18) 平台常用功能(工作区相关)

    作者:秋时  转载须说明出处 第6章     平台功能 6.1     部件二次开发设置 6.1.1  工具栏管理 1.从单据二次开发-工具栏管理进入 2.主要设置显示,对应的方法名或设置权限相关操作 ...