【人脸识别】基于matlab PCA+LDA人脸识别【含Matlab源码 680期】

一、简介

1 PCA
1.1 数据降维
降维的方法包括:主成分分析(PCA)、因子分析(FA)、和独立成分分析(ICA)
主成分分析:寻找向量,使各个样本到该向量的投影之和最小。
因子分析:
独立成分分析:

1.2 PCA:目的是降维,降维的实际原理是最大化目标函数(数据投影后的方差最大)
强推原理博文:https://blog.csdn.net/fendegao/article/details/80208723
(1)假设有m个n维样本: {Z1,Z2,…,Zm}
(2)样本中心 u 为: 所有样本观测值之和/(mxn)
(3)去中心化后,得到矩阵 {X1,X2,…,Xm}={Z1-U,Z2-U,…,Zm-U}
(4)记含有n个元素的向量W,则样本X1在w方向上的投影为二者内积 X1 . W
(5)PCA的目标函数为最大化投影
在这里插入图片描述
目标方程可以化为矩阵形式求解,求解方法:
(1)构建拉格朗日算子,求导为0,解得投影最大的向量为特征值最大对应的特征向量。
根据特征值的累计贡献率可以指定选取多少个W向量作为K-L变换矩阵。若选择了4个主成分,则对于每一个n维度样本,经过矩阵变换后,都变为了(1xn)x(nx4)=1x4维向量,即达到了降维的目的。
(2)SVD奇异值分解:降维只需求出右奇异矩阵,即AA(T)的特征向量,不需要求A的协方差矩阵。对内存友好。

1.3 基于PCA的人脸识别
(1)基于人脸样本库,例如现实中人脸拍照(银行、车站)等数据采集方法,建立人脸库。
(2)求取训练人脸库的协方差阵的特征值和特征向量。
(3)对于需要判别的人脸,判断其在特征向量上的投影与哪个训练样本的投影最接近。

!!!注::需要注意,协方差矩阵是维度之间的协方差,故是nxn维,但是在实际应用时,例如图像降维(假设一幅图像有200*10个像素,有100幅图像),一个像素就是一个维度,则原本协方差阵XX’为 (2000x100)x (100x2000)维,计算机存储计算消耗过大,此时可以考虑使用替代矩阵P=X’X(100x2000)x(2000x100)替代:
在这里插入图片描述
P的特征值即原始协方差阵的特征值,P的特征向量左乘数据矩阵即为原始协方差阵的特征向量。

2 LDA
LDA:线性判别分析,也称为Fisher线性判别,是常用的降维技术。
基本思想:将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即模式在该空间中有最佳的可分离性。
LDA降维后的维度是直接和类别的个数相关的,与数据本身的维度没关系,比如原始数据是n维的,一共有C个类别,那么LDA降维之后,维数取值范围为(1,C-1),举个例子,假设图像分类,两个类别正例反例,每个图像用10000维特征表示,那么LDA之后,就只有1维特征,并且这维特征的分类能力最好。
对于很多两类分类的情况,LDA之后就剩下1维,找到分类效果最好的一个阈值貌似就可以了。
假设,x是一个N维的列向量,要使x通过LDA降到C维,只需要找到一个投影矩阵w,也即,一个N*C的矩阵,让w的转置矩阵和x相乘,便成为C维的了。(投影在数学上的表示就是用一个矩阵去相乘)
此时,问题的关键就在于:寻找一个投影矩阵!并且,该投影矩阵要保证模式样本在新的子空间有最大的类间距离和最小的类内距离。

2.2 LDA数学表示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、源代码

在这里插入代码片

三、运行结果

猜你喜欢

转载自blog.csdn.net/TIQCmatlab/article/details/115419399