PCA算法详解
- 格式:doc
- 大小:227.00 KB
- 文档页数:7
PCA降维算法详解以及代码⽰例转载地址:1. 前⾔PCA : principal component analysis ( 主成分分析)最近发现我的⼀篇关于PCA算法总结以及个⼈理解的博客的访问量⽐较⾼,刚好⽬前⼜重新学习了⼀下PCA (主成分分析)降维算法,所以打算把⽬前掌握的做个全⾯的整理总结,能够对有需要的⼈有帮助。
⾃⼰再看⾃⼰写的那个关于PCA的博客,发现还是⽐较混乱的,希望这⾥能过做好整理。
本⽂的所有总结参考了Andrew Ng的PCA教程,有兴趣的可以⾃⼰学习。
上⼀篇关于PCA 的博客:,在这篇博客中,有关于我最初在读研的时候关于PCA的认识,但是不是很系统,然后⾥⾯却给出了很多我总结的⽹络上的资料,以及根据我个⼈使⽤的经验总结的感悟,所以还是收到了很多的好评, o(∩∩)o...哈哈,谢谢各位的⽀持。
@copyright by watkins.song ^_^2. PCA的应⽤范围PCA的应⽤范围有:1. 数据压缩1.1 数据压缩或者数据降维⾸先能够减少内存或者硬盘的使⽤,如果内存不⾜或者计算的时候出现内存溢出等问题,就需要使⽤PCA获取低维度的样本特征。
1.2 其次,数据降维能够加快机器学习的速度。
2. 数据可视化在很多情况下,可能我们需要查看样本特征,但是⾼维度的特征根本⽆法观察,这个时候我们可以将样本的特征降维到2D或者3D,也就是将样本的特征维数降到2个特征或者3个特征,这样我们就可以采⽤可视化观察数据。
3. PCA原理简介3.1 基础⼊门这⾥我只给出在需要使⽤PCA的时候需要了解的最基本的PCA的原理,了解这些原理后对于正常的使⽤没有问题,如果想要深⼊了解PCA,需要学习⼀些矩阵分析的知识,更加详细的PCA算法请见wikipedia。
⾸先,我们定义样本和特征,假定有 m 个样本,每个样本有 n 个特征,可以如下表⽰:由简到难,先看⼀下从2D 降维到1D的⽐较直观的表⽰:在上图中,假设只有两个特征x1, x2, 然后需要降维到1D,这个时候我们可以观察途中X所表⽰的样本点基本上分布在⼀条直线上,那么就可以将所有的⽤(x1, x2)平⾯表⽰的坐标映射到图像画出的直线z上,上图中的⿊⾊铅笔线表⽰样本点映射的过程。
PCA(主成分分析)降维算法详解和代码PCA的原理:1.中心化数据:对原始数据进行中心化处理,即将每个特征减去其均值,使得数据以原点为中心。
2.计算协方差矩阵:计算中心化后的数据的协方差矩阵。
协方差矩阵描述了不同特征之间的关系和相关性。
3.计算特征值和特征向量:对协方差矩阵进行特征值分解,得到特征值和对应的特征向量。
特征值代表每个特征的重要性,特征向量表示特征的方向。
4.选择主成分:根据特征值的大小,选择最大的k个特征值对应的特征向量作为主成分。
5.降维:将原始数据投影到所选主成分上,得到降维后的数据。
投影后的数据保留了最重要的特征,且维度减少。
PCA的代码实现:下面是一个基于Numpy库实现PCA算法的示例代码:```pythonimport numpy as npdef pca(X, k):#中心化数据X = X - np.mean(X, axis=0)#计算协方差矩阵cov = np.cov(X.T)#特征值分解eigvals, eigvecs = np.linalg.eig(cov)#选择主成分idx = np.argsort(eigvals)[::-1][:k]eigvecs = eigvecs[:, idx]#降维X_pca = np.dot(X, eigvecs)return X_pca#测试X = np.random.rand(100, 5) # 生成100个样本,每个样本有5个特征k=2#目标降维维度X_pca = pca(X, k)print(X_pca.shape) # 输出降维后的数据维度```在上述代码中,使用`numpy`库进行了主成分分析的各个步骤。
首先,通过计算均值,对原始数据进行中心化。
然后,使用`cov`函数计算协方差矩阵,并通过`numpy.linalg.eig`函数进行特征值分解。
接下来,通过`argsort`函数对特征值进行排序,选择前k个特征值对应的特征向量作为主成分。
pca算法和步骤PCA算法简介PCA(Principal Component Analysis)是一种常用的数据降维方法,它可以将高维数据降到低维,并且保留原始数据的主要特征。
PCA算法最早由Karl Pearson在1901年提出,是一种基于线性变换的方法。
PCA算法的应用非常广泛,例如图像处理、语音识别、生物信息学等领域。
在机器学习领域中,PCA算法也被广泛应用于特征提取、数据压缩等方面。
PCA算法步骤1. 数据预处理在进行PCA算法之前,需要对数据进行预处理。
通常情况下,需要对数据进行标准化处理。
标准化处理可以使得不同特征之间具有相同的尺度,从而避免某些特征对结果产生过大的影响。
2. 计算协方差矩阵协方差矩阵是一个方阵,它描述了不同特征之间的相关性。
计算协方差矩阵是PCA算法中最重要的一步。
协方差矩阵可以通过以下公式计算:$$\Sigma = \frac{1}{m} \sum_{i=1}^{m}(x^{(i)}-\mu)(x^{(i)}-\mu)^T $$其中,$m$表示样本数,$x^{(i)}$表示第$i$个样本,$\mu$表示所有样本的均值。
3. 计算特征值和特征向量协方差矩阵有$m$个特征值和$m$个特征向量。
特征值描述了数据在某个方向上的方差,而特征向量描述了这个方向。
可以通过以下公式计算协方差矩阵的特征值和特征向量:$$\Sigma v = \lambda v$$其中,$\lambda$表示特征值,$v$表示对应的特征向量。
4. 选择主成分选择主成分是PCA算法中最重要的一步。
主成分是指协方差矩阵中具有最大特征值的对应的特征向量。
可以通过以下公式计算第$k$个主成分:$$z^{(i)} = x^{(i)}v_{k}$$其中,$z^{(i)}$表示第$i$个样本在第$k$个主成分上的投影,$v_{k}$表示第$k$个主成分。
5. 降维PCA算法最终目的是将高维数据降到低维,并且保留原始数据的主要特征。
主成分分析(PCA)详解(附带详细公式推导)1.假设有一个m维的数据集X,其中每个数据点有n个样本。
需要将其降维到k维,且k<m。
2. 首先需进行数据的中心化,即对每个维度的数据减去该维度的均值,即X' = X - mean(X)。
3.然后计算协方差矩阵C=(1/n)*X'*X'^T,其中X'^T表示X'的转置。
4.对协方差矩阵C进行特征值分解,得到特征值和对应的特征向量。
5.接下来,将特征值按从大到小的顺序排列,选取前k个最大的特征值及其对应的特征向量。
6. 最后,将选取的k个特征向量组成一个投影矩阵W =[e1,e2,...,ek],其中ei表示第i个特征向量。
7.对中心化的数据集进行降维,Y=W*X',其中Y即为降维后的数据。
上述推导过程中,协方差矩阵C的特征值代表了数据的方差,特征向量则代表了数据的主成分。
选取最大的k个特征值和对应的特征向量,即实现了数据的降维。
PCA的应用包括但不限于以下几个方面:1.数据可视化:PCA能够将高维度的数据映射到二维或三维空间,从而方便数据的可视化展示。
2.数据预处理:PCA能够降低数据的维度,从而减少噪声和冗余信息,提升后续模型的精度和效率。
3.特征提取:PCA能够提取数据中最重要的特征,从而辅助后续建模和特征工程。
4.噪声过滤:PCA能够降低数据的维度,从而过滤掉一些无关的噪声信息。
需要注意的是,PCA只能应用于线性数据,并且假设数据的方差和协方差是固定的。
同时,PCA对于数据中非线性关系的捕捉能力较弱,因此在处理非线性数据时,需考虑使用其他非线性降维方法,如核主成分分析(Kernel PCA)等。
综上所述,PCA是一种常用的多变量数据降维技术,在数据分析和机器学习领域有着广泛的应用。
通过线性变换,PCA将高维度的数据投影到低维空间中,从而减少数据的维度,并保留了数据中的主要信息。
pca算法的基本原理
PCA全称为Principal Component Analysis,翻译成中文就是主成分分析。
它是一种数据降维的方法,可以将高维度的数据转换为低维度的数据,同时保留大部分原始数据的特征。
PCA算法的基本原理如下:
1. 特征提取:对于给定的数据集,首先需要找到其中最重要的特征,即数据集中的主成分。
主成分是指与原始数据最为相关的特征向量,或者说是最能代表原始数据特征的线性组合。
这些特征向量就是数据中的主轴方向,通过它们能够最大程度地解释整个数据集的方差。
通常情况下,只需要选择前几个主成分,就能够保留大部分数据特征。
2. 降维处理:在得到数据集的主成分之后,可以使用这些主成分将原始数据降维到一个低维度的空间。
在这个低维度空间中,数据点之间的距离和分布与原始数据点之间的距离和分布相似。
降维后的数据集可以更容易处理,从而加快了数据分析的速度。
3. 矩阵运算:PCA算法的核心是矩阵运算。
一般来说,PCA算法的实现需要计算数据集的协方差矩阵,通过对协方差矩阵进行SVD分解,即奇异值分解,得到主成分和对应的特征向量。
这些特征向量决定了数据的最主要的方向,可以用来降低数据的维度。
4. 可视化:通过PCA算法得到的降维数据可以进行可视化,便于数据分析和展
示。
在可视化过程中,考虑到主成分中的权重差异,需要进行合适的权重调整才能得到更好的可视化效果。
总之,PCA算法是一种重要的数据降维算法,在数据分析中有着广泛的应用。
pca算法原理PCA是一种基于数据的逐步分析方法,也称为主成分分析,它是一种用于统计分析的常用技术。
PCA的核心思想是,通过数据的多次对比和对比,寻找出最能代表数据的潜在特征,将这些潜在特征抽取出来,从而实现对数据的有效描述和抽象,并将原来高维度的数据降低到较低的维度。
二、PCA算法原理PCA算法采用投影法,即将原始数据从高维空间映射到低维空间,它由三个部分组成:对数据进行协方差矩阵处理、计算特征值和特征向量以及将原始空间映射到低维空间。
首先,在PCA算法中,需要对原始数据进行协方差矩阵处理,即首先计算协方差矩阵,然后求出矩阵的特征值和特征向量。
首先,通过矩阵的特征值,找出最大的特征值,进而求出最与最大特征值对应的特征向量,即第一个主成分;然后再从其余特征值中找出次大的特征值,再去求出与次大特征值对应的特征向量,即第二个主成分,以此类推;将所有求出的特征向量组合起来,就构成一个新的特征空间,可以把原始空间的数据投影到新特征空间中,达到对数据的有效抽象的目的。
最后,PCA算法还需要采用变换表示,将原始空间的数据投影到新空间,以便更好地处理数据,以及将高维空间的数据维度降低,有利于计算机处理数据和减少计算量,而不影响原始数据的表达能力。
三、PCA算法的应用PCA算法在实际应用中已经得到了广泛的应用,主要应用有以下几个领域:1、图像压缩:PCA算法可以在图像压缩中采用有效地方法,通过对其中的特征进行抽取和提取,使得图像可以在保持原有表示能力的情况下,减少图像的体积,从而达到节约存储空间的目的。
2、数据降维:PCA算法也可以应用于数据降维,即将原始高维数据降低到较低的维度,并且保持原始数据的有效表示能力,使得计算机处理数据更为方便,计算量也大大减少。
3、回归分析:PCA算法也可以用于回归分析,PCA可以根据预测模型和数据来预测结果,以便对数据进行有效的分析,从而了解特定变量之间的关系,实现分析、进行预测等。
主成分分析的算法主成分分析(Principal Component Analysis,简称PCA)是一种常用的数据分析算法,用于处理多变量数据集。
它会将原来有多个关联变量的数据降维成几个不相关、但具有相关性的变量。
PCA经常用于概括一个数据集的拟合方式,也常被应用于降低计算,实现变量绘图和模式发现。
一、PCA的基本原理主成分分析(PCA)是一种数据变换和降维技术,它的目的是将原始数据变换成一组新的数据集,这组新的数据集的维度较低,同时站点比原始数据更好地捕捉更多数据的规律。
这组新的数据集就是PCA变换之后的结果,也就是主成分。
PCA最核心的是将原始数据从高维空间(多变量)映射到低维空间(一维到三维)。
具体来说,即将多个数据变量的线性组合,映射到更少的变量上,而且变换后的变量间成立线性关系,整个变换过程可以被称为降维。
实质上,变换后的变量组合可以有效的揭示原始数据的结构,也就是将原始数据进行变换,简化数据对其属性的表达,从而更好的分析和发现必要的信息。
二、PCA的步骤1. 数据标准化处理:首先,进行数据标准化处理,即将原始数据的每个变量标准化,使其均值为0和标准差为1。
这步操作其实是为了方便后续步骤的计算。
2. 计算协方差矩阵:计算数据协方差矩阵,即原始数据点之间的协方差。
3. 计算特征值和特征向量:计算协方差矩阵的特征值和特征向量。
特征值就是一个实数,用以衡量特征向量的大小,而特征向量是一个方向,负责表示原始数据的某种特征。
4. 根据特征值进行排序:根据计算出来特征值对特征向量进行排序,选择具有较大特征值的特征向量构成主成分。
5. 根据设定的阈值选取主成分:根据主成分的特征值,阈值设定,选取具有较大性能的主成分来组合构成新的变量坐标。
三、PCA的聚类应用聚类分析的目的是将一组数据划分为相似的组,依据数据特征和关系把观对用类概念来描述或表达。
主成分分析可以有效地减少聚类分析过程中使用数据维度,并且在推动聚类结果的准确性及减少数据维度这两方面起到双重作用,并且也可以在后续聚类分析工作过程中起到较小精度,更少时间复杂度的作用。
pca降维算法的原理PCA降维算法的原理PCA降维算法是一种经典的数据降维方法,它可以将高维数据映射到低维空间中,从而减少数据的复杂度和计算量。
本文将详细介绍PCA 降维算法的原理及其应用。
一、PCA降维算法概述PCA(Principal Component Analysis)是一种基于线性代数的数据降维方法,它通过寻找数据中最重要的特征来实现降维。
具体来说,PCA将原始数据映射到一个新的坐标系中,在新坐标系中,每个特征都被表示为一组线性组合。
这些线性组合称为主成分(Principal Components),它们按照重要性递减的顺序排列,并且对应于最大方差的方向。
二、PCA降维算法详解1. 数据预处理在进行PCA降维之前,需要对原始数据进行预处理。
首先,需要将所有特征缩放到相同的范围内,以避免某些特征对结果产生过大或过小的影响。
其次,需要对每个特征进行零均值化处理,即将每个特征减去其平均值。
2. 计算协方差矩阵在进行PCA降维之前,需要计算原始数据的协方差矩阵。
协方差矩阵描述了数据中各个特征之间的相关性。
具体来说,协方差矩阵的每个元素表示两个特征之间的协方差。
3. 寻找主成分计算出协方差矩阵之后,需要寻找主成分。
主成分是指将原始数据映射到新坐标系中时所用的线性组合。
第一主成分是与最大方差相对应的线性组合,它可以通过求解协方差矩阵的特征向量来得到。
第二主成分是与次大方差相对应的线性组合,它可以通过将原始数据投影到第一主成分上,并从中减去该投影,然后再次求解特征向量得到。
4. 选择主成分在寻找完所有的主成分后,需要选择前k个最重要的主成分。
这可以通过计算每个主成分对总方差贡献的比例来实现。
通常选择前k个主成分使其总贡献率达到90%以上。
5. 映射到新坐标系最后,需要将原始数据映射到新坐标系中。
这可以通过将原始数据投影到前k个主成分上来实现。
投影的结果是一个新的低维数据集,其中每个样本都由k个主成分组成。
PCA降维算法详解和代码1.PCA算法原理PCA的核心思想是通过线性变换将原始数据投影到一个新的低维空间,使得数据在新的空间中具有最大的方差。
换句话说,PCA试图找到一个投影矩阵,将数据映射到一个高度压缩的子空间中,同时最大化数据的方差。
具体来说,假设我们有一个m×n的数据矩阵X,其中每一行表示一个样本,每一列表示一个特征。
PCA的步骤如下:1)对数据进行中心化处理:首先计算每个特征的均值,然后将每个特征减去其均值,使得数据的均值为0。
2)计算数据的协方差矩阵:将中心化后的数据乘以其转置矩阵得到协方差矩阵C。
3)求协方差矩阵的特征值和特征向量:对协方差矩阵进行特征值分解,得到特征值和特征向量。
4)选择主成分:按照特征值的大小降序排列特征向量,选择前k个特征向量作为主成分,其中k是我们希望降维到的维度。
5)投影数据:将原始数据乘以选定的主成分,得到降维后的数据。
2.PCA代码实现下面是Python中使用sklearn库实现PCA降维的示例代码:```pythonimport numpy as np#生成随机数据np.random.seed(0)X = np.random.rand(100, 3) # 100个样本,每个样本包含3个特征#使用PCA进行降维X_new = pca.fit_transform(X)#输出降维后的数据和主成分print("降维后的数据:")print(X_new)print("主成分:")```在上述代码中,我们首先生成了一个包含100个样本和3个特征的随机数据矩阵X。
然后使用PCA进行降维,将数据降到2维。
最后输出降维后的数据和主成分。
可以看到,PCA将原始3维数据成功降维到2维,同时找到了两个主成分。
3.PCA在实际应用中的意义PCA在实际应用中有着广泛的意义。
首先,PCA可以帮助我们降低数据的维度,减少数据的存储空间和计算复杂度,同时提高数据处理的效率。
主成分分析法主成分分析(Principal Component Analysis,简称PCA)方法是目前应用很广泛的一种代数特征提取方法,可以说是常用的一种基于变量协方差矩阵对样本中的信息进行处理、压缩和抽提的有效方法,主要通过K-L(Karhunen-Loeve)变换展开式从人脸数据库中提取人脸的主要特征[i],构成特征脸空间,在识别时将待测试的人脸图像投影到特征脸空间,得到一组投影系数,与数据库中各个人脸图像进行比对识别。
这种方法保留了原向量在与其协方差矩阵最大特征值相对应的特征向量方向上的投影,即主分量(Principal Components),因此被称为主成分分析。
由于PCA方法在进行降维处理和人脸特征提取方面的有效性,在人脸识别领域得到了广泛的应用。
它的核心思想是:利用较少数据的特征对样本进行描述以达到降低特征空间维数的目的,根据样本点在多维空间的位置分布,以样本点在空间中变化最大方向,即方差最大方向,作为差别矢量来实现数据的特征提取。
利用K-L变换抽取人脸的主要成分,利用特征脸法进行人脸识别的过程由训练阶段和识别阶段两个阶段组成。
3.1.1 K-L变换概述K-L变换是Karhunen-Loeve变换的简称,是一种特殊的正交变换。
它是建立在统计特性基础上的一种变换,它的突出优点是它能去相关性,而且是均方误差(Mean Square Error,MSE)意义下的最佳变换。
K-L变换的基本思想是在一个新的特征空间中将样本数据沿其特征矢量用对齐的方式进行旋转变换。
这个变换有效地克服了样本数据向量间的相关性,从而去除那些只带有较少信息的数据以达到降低特征空间维数的目的。
经过以上K-L 变换得到的特征是原图像向量的正交分解,其图像信息的总能量不变,不损失任何信息。
在这个互相正交、可测量的特征空间中进行图像的特征提取可以有效地利用图像之间的差异,提取有效信息。
K-L特征空间中,较大特征值所对应的特征向量体现原图像的总体趋势以及低频分量,较小特征值所对应特征向量体现原图像的细节变化以及高频分量所以人们用PCA法提取图像总体特征,其目的是用较少数量的特征对样本进行描述,同时又能保留所需要的识别信息。
在人脸图像上的表现就是人脸的外形轮廓和灰度变化,以此作为人脸特征。
对于随机向量X ∈R n ,它的均值向量m x 及协方差矩阵c x 定义为:}{X E m x= {()()}T E X X C m m x x x =-- (3-1) X 是n 维的向量,()()T x x X X m m -- 是n ×n 阶矩阵。
c x 的元素c ii 是总体向量中X 向量的第i 个分量的方差,c x 的元素ij C 是向量元素x i 和x j 的协方差。
并且矩阵c x 是实对称的。
如果元素x i 和x j 无关,则它们的协方差为零,则有c ij =c ji =0。
对于从随机总体中取样的k 个向量,均值向量可以通过样本估计:∑==K k k X X mK 11 (3-2) 协方差矩阵可通过样本进行估计,如式(3-3)所示: c x =m m X X x k k Tx k k T k -∑-11 (3.1-3) K-L 变换定义了一正交变换A ∈R n n ⨯,将X ∈R n 的向量映射到用Y ∈R n 代表的向量,并且使Y 向量中各分量间不相关:)(m x X A Y -= (3-4)则随机向量Y 协方差矩阵C Y 应为对角矩阵:C Y =⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡λλλn 0021 (3-5)其中{(Y )(Y )}Y y y C E m m =--,{y}y m E =为向量Y 的均值向量。
因有T Y x C AC A =,这相当于对C X 对角化,K-L 变换将A 的每一行取为C X 的特征向量,并且将这些特征向量按对应的特征值大小进行降序排序,使最大特征值对应的特征向量在A 的第一行,而最小特征值对应的特征向量在A 的最后一行。
并且因y C 为实对称的,因此总能找到n 个标准正交特征向量组成A 。
经过A 变换后,因Y 各分量不相关,相当于对X 去相关操作。
并且根据矩阵理论,C Y 对角线处λj ,也正是C X 的特征值,同样也是C Y 的特征值,也就是说C X 与C Y有相同特征值,并且它们的特征向量也相同。
K-L 变换不仅能去相关,而且能简单的由Y 恢复X 。
因为A 的各行是正交向量,则有A 1-=A T ,任何向量X 能够通过相应的Y 利用下式恢复:T x X YA m =+ (3-6)若选择C X 的最大K 个特征值对应的K 个特征向量,组成k ⨯n 的转换矩阵A K ,则变换后Y 降为K 维的,则由Y 对X 的恢复公式如下:^T K x X A Y m =+ (3-7) X 与Xˆ间的均方误差可以由下式表示: e ms =∑=n j j 1λ-∑=k j j 1λ=∑+=n k j j 1λ (3-8)如果k=n(即所有特征向量用于变换),则误差为零。
因为λj 递减,并且式(3-8)也表明可以通过选择k 个具有最大特征值的特征向量来降低误差。
因此,从可以将向量X 和它的近似值X ˆ之间的均方误差降至最小这方面来说,K-L 变换是最佳变换。
并且由于使用最大特征值对应的特征向量,所以又称为主成分分析(PCA)。
3.1.2 主成分分析(PCA)特征提取方法在二十世纪九十年代初,Kirby 和Sirovich 开始讨论利用PCA 技术进行人脸图像的最优表示问题。
并且由M .Turk 和A .Pentland 将此技术用于人脸识别中,并称为特征脸方法。
M .Turk 和A .Pentland 将m ×n 的人脸图像,重新排列为m n *维的列向量。
则所有的训练图像经此变换后得到一组列向量:{x i },x i ∈R n m *,i=1,..,N ,其中N 代表训练样本集中图像的个数。
将图像看成一随机列向量,并通过训练样本对其均值向量和协方差矩阵进行估计。
均值向量μ通过下式估计: ∑==Ni i x N 11μ (3-9) 协方差矩阵S T 通过下式估计:)x ,...,())((11n N i T T i i T x X XX S x x ==--=∑=μμ (3-10)则将投影变换矩阵A 取为S T 的前k 个最大特征值对应的特征向量。
利用以下变换式对原图像进行去相关并降维:A X y K)(μ-= (3-11)因是通过N 个训练样本计算出的,虽然S T 是)(n m *×)(n m *维的矩阵,但是其秩最大为N-1,即只有N-1个非零特征值。
按照K-L 变换中,在均方误差意义下,去掉零特征值对应的特征向量不会影响对向量x 的重构。
所以A 最大只需取S T 前N 一1个非零特征值对应的特征向量,即k 最大只需为N-1,就能通过y在均方意义下对x 完全重构。
M .Turk 和A .Pentland 将通过对S T 的特征向量进行还原为图像矩阵后,发现竟然是一张标准化的人脸。
因此指出进行PCA 的本质就是将每幅人脸通过标准人脸的线性叠加来近似。
并将这些线性表示系数作为人脸的特征,利用这些特征对其进行分类。
M .Turk 和A .Pentland 将这些对应于每个特征向量的标准人脸称为特征脸(Eigenface),并将这种利用PCA 技术进行人脸分类的方法称为特征脸法。
PCA 算法具体步骤如下:1.将m ×n 的训练图像重新排列为m *n 维的列向量,如图像矩阵为⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡987654321 ,则排列后的列向量为⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡963852741。
计算均值向量,并利用均值向量将所有样本中心化。
2.利用中心化后的样本向量,根据式(3-10)计算其协方差矩阵;对其特征值分解,并将特征向量按其对应的特征值大小进行降序排列。
3.选取第2步所得的k ≤N-1个最大特征值对应的特征向量组成投影矩阵A ,将每幅已中心化的训练图像(x 1,...,x n )向矩阵A 投影,得到每幅训练图像的降维表示(y 1,…,y n)。
4.对测试图像中心化,并投影到矩阵A ,得到测试图像的降维表示。
5.选择合适的分类器,对测试图像进行分类。
在人脸识别中,将图像重排为列向量,维数较高。
例如若处理的图像数据为112×92,变为列向量则为119×92=10304维,则S T 为10304×10304矩阵。
往往难于直接计算协方差矩阵S T 的特征值及特征向量。
下面介绍间接求解方法:因XX S T T = (X=([x x n ,...,1]),其中x i ∈R n m *,X ∈R N n m ⨯*)(,N 为训练样本数量,m*n 为图像转换为列向量的维数,往往m*n>>N 。
而XX T R N N ⨯∈比S T =XX T ∈Rn m n m )()(*⨯*小的多,对其进行特征值分解较简单。
对XX T 进行特征值分解:v i i i T v XX δ= (3-12)若上式两边同时左乘X ,则:(X X )(X )T i i i X ν=δν (3-13)X (X )(X )T i i i X ν=δν 而对XX TT =δ特征分解: u u XX i i i Tλ= (3-14) 则可以得知v u i i X =,δλi i =。
因此可以利用求XX T 的特征值及特征向量来推算XX S T T =的特征值和特征向量。
.。