奇异值分解与主成分分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数值实验03:奇异值分解与主成分分析

选作问题(研究性的)

6、假设数据源是一系列的图像,每幅图像都是一个矩阵。分别用经典的主成分分析方法和奇异值分解方法计算特征脸。注意数据的中心化与归一化处理的影响。(1)奇异值分解:是一个能够适用于任意矩阵的一种分解方法:

A m*n = U

m*m

m*n

V

n*n

T

U为M*M 方阵( U里面的正交向量称为左奇异向量),∑是一个M*N的矩阵(除了对角线的元素都是 0,对角线上的元素称为奇异值), V T是一个N*N 的方(V 里面正交的向量称为右奇异向量)。

我们将一个矩阵 A的转置乘以 A,并对 A T A 求特征值

(A T A)v

i =λ

i

v

i

则v就为右奇异向量,且奇异值σ

i =√λi,左奇异值u

i

=Av i

σi

σ就为奇异值,u就为奇异向量。奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,部分奇异值分解:

A m⨯n ≈ U

m ⨯r

r⨯r

V T

r⨯n

(r是一个远小于 m、n的数)

给定一幅 M*N大小的图像,将它表示成 M*N*1 维向量,向量中元素为像素点的灰度,按行存储,则如下公式分别表示第 i 张图片和 n 张图片的平均值:

令 M*N*n 矩阵 X 为:

即中心化,将坐标原点移动到平均值位置。设Q = XX T ,则Q是一个MN * MN 矩阵:

Q 被称为协方差矩阵。那么X中每一个元素x

j

可以表达成:

其中e

i

是非零特征值对应的特征向量,对于 M*N 图像, e1,e2,...,en 是M*N*1

维相互正交的向量。尺度g

ji 是x

j

在空间中的坐标。为了降维,可以对特征值设

定阈值或按照其他准则,寻找协方差矩阵Q中前 k个特征向量。Q为 M*N*M*N,通常很庞大。考虑矩阵

P = X T X

Q 的大小为 M*N*M*N,而P的大小为 n*n,N 为训练样本图像数量,通常 n<

Pe =λe

X T Xe =λe

XX T Xe =λXe

Q(Xe) =λ( Xe)

所以 X*e 是矩阵Q 的特征值λ对应的特征向量。这就是用求特征值分解的方法。

对Q进行奇异值分解

Q

MN * MN = U

MN * MN

MN * MN

V

MN * MN

U就是QQ T的特征向量, V就是Q T Q 的特征向量,∑中奇异值的平方就是QQ T和Q T Q的特征值。

(2)主成分分析(PCA)的原理就是将一个高维向量x,通过一个特殊的特征向量矩阵U,投影到一个低维的向量空间中,表征为一个低维向量y,并且仅仅损失了一些次要信息。也就是说,通过低维表征的向量和特征向量矩阵,可以基本重构出所对应的原始高维向量。

在人脸识别中,特征向量矩阵U称为特征脸空间,因此其中的特征向量u

i

进行量化后可以看出人脸轮廓,在下面的实验中可以看出。

设有n个人脸训练样本,每个样本由其像素灰度值组成一个向量x

i

,则样本

图像的像素点数即为x

i

的维数,由向量构成的训练样本集为[x1,x2,…,xn]。

该样本集的平均向量为:

平均向量又叫平均脸。

样本集的协方差矩阵为:

求出协方差矩阵的特征向量u

i

和对应的特征值λi ,这些特征向量组成的矩阵U 就是人脸空间的正交基底,用它们的线性组合可以重构出样本中任意的人脸图像。并且图像信息集中在特征值大的特征向量中,即使丢弃特征值小的向量也不会影响图像质量。

将协方差矩阵的特征值按从大到小顺序:。

由大于λ

d 的λ

i

对应的特征向量构成主成分,主成分构成的变换矩阵为:

这样每一幅人脸图像都可以投影到构成的特征脸子空间中。

MATLAB实践:

选取16 张人脸图像作为数据源,大小为80×80(这里的人脸图像要求大小相同,人眼部位尽可能对齐),把图像存储为[80×80,16]的矩阵A,每列表示一张图像,每行代表同一个位置的像素,因此一共有80×80个维度。中心化时各自减去每个维度的均值,由于图像数据的量纲一样,所以不需要归一化。16 张人脸为:

(a)对X用经典的主成分分析法计算特征脸,取前15个对应主成分特征脸:

通常情况下MN>>P的,而矩阵非零特征值的个数为min{MN-1,P-1},所以在实现中使用维数少的P*P矩阵来代替理论上的协方差矩阵(MN*MN),减少计算。接着我们根据PCA算法的理论对得到的特征值进行排序,并舍弃一部分特征值(所占能量少,即特征值小的部分)在实现中我们设定的阈值为1,保留特征值大于1的,小于1的将被舍弃。由此我们再求得协方差矩阵的特征向量,并且此特征向量就是所谓的“特征脸”。

平均脸特征脸特征脸特征脸

平均脸特征脸特征脸特征脸

特征脸特征脸特征脸特征脸

特征脸特征脸特征脸特征脸

(b)对X用奇异值方法计算特征脸,取前15个对应主成分特征脸:

采用svd分解来得到特征值和特征向量。

相关文档
最新文档