本文将从PCA的基本概率及相关统计学概率开始,介绍PCA的基本原理及实现过程,进而对基于PCA的人脸识别和图像压缩进行一个简单的介绍。
一、 概述
PCA是一种基于统计的技术,在人脸识别、图像压缩等领域得到了广泛的应用,常用作数据降维。首先介绍将在PCA中使用的数学概念。它包括标准差、协方差、特征向量和特征值。如果对这部分概率非常熟悉的读者可以跳过这些部分。
- 标准差
给定一个样本X={X1,X2,……, Xn}。则均值、标准差如下:
- 方差
方差就是标准差的平方。
- 协方差
上述的标准差、方差都是针对单变量(一维),然而我们生活中的大多数数据都二维及以上,我们需要一个一个标准去衡量这些维度之间的关系。这时,我们就需要用到协方差。
对于单变量X的方差,我们也可以写成如下形式:
那么,对于两个变量(维度)之间的协方差,也可以写成类似形式:
4. 协方差矩阵
协方差矩阵中的每个元素都是两个变量之间的协方差。如:在3维情况下,以x、y、z来表示这三个维度,则他们组成的协方差矩阵如下:
5.特征值和特征向量
相信学过线性代数的都知道矩阵的特征值和特征向量这两个概念,一个矩阵和一个向量的乘机可以表示成一个数和向量的乘积, 。这里的特征向量和特征值都是针对与一定条件下的方阵而言。那么对于任意形状的矩阵我们如何求其特征值和特征向量?这里就不得不提到矩阵的SVD分解,任意矩阵A可分解为 ,若A为mxn矩阵,则U为mxm矩阵, 为mxn矩阵,V为nxn矩阵。其中U称为A的左奇异矩阵,V称为A的右奇异矩阵, 为奇异矩阵,且U和V都为正交矩阵。SVD分解算法可自行百度。
讲到这里关于接下来要讲的PCA的一些基本相关概念就到此结束了,接下来我们来具体讲讲PCA的实现过程。
二、 PCA的实现步骤
第一步:获取数据集
在此,我仅以二维(两个变量)来进行讲解,变量分别用x、y表示。可推至n维。假设数据集如图一所示:
第二步:中心化
为了方便处理数据,我们将每个变量减去他们各自的均值,这样可以将数据的中心归到零点位置,即均值为零。得到调整后的数据图2所示:
第三步:计算协方差矩阵
中心化之后的两个变量的均值都为零,则协方差矩阵即为自相关矩阵。设矩阵A=(X;Y)组成,X、Y均已中心化,则cov(X,Y)=A*AT/(n-1)。如下:
变量内样本个数为10,即n=10
第四步:计算协方差矩阵的特征值和特征向量
求得特征值和其对应的特征向量如下:
第五步:选择分量,构成特征向量
将中心化后的数据和特征向量绘制在同一张图中,如下:
由图可以看出数据主要沿着蓝色虚线所在直线方向,即沿着较大特征值对应的特征向量所在方向,这条直线称为主轴,也就是我们主成分分析中的第一主成分。此处我们选择特征向量为(若两个特征向量都选择,则恢复的数据仍为原始数据):
第六步:生成新数据
此步,我们利用第五步选择的特征向量来构造新数据。
为演示两个特征向量之间的联系与差别,我们用这两个向量来来分别构造新数据,如下:
FD1 = AV(:,1) =
FD2 = AV(:,2) =
第七步:恢复原始数据
我们需要保存的数据为第六步变换后生成的新数据和我们选择的特征向量,利用他们来恢复原始数据。
利用第一个(较小)特征值对应的特征向量来恢复数据,如下:
利用第二个(较大)特征值对应的特征向量来恢复数据,如下:
此处恢复的数据为中心化后的数据,所以还要加上均值才是原始数据。当然在第五步中我们也可以直接用原始数据去相乘,则这时我们恢复的数据即为原始数据。上述两者的和就是去中心化后的数据。
讲到这里,我相信大家对主成分分析已经有了一个基本的了解了。其实就相当于寻找一个新的低维度的基,进行投影。一个矩阵就是很多个向量组成,每个向量组成一个变量(维度),向量相乘(矩阵中的向量与特征向量)的內积就是投影。可能大家没能体验到主成分分析的强大之处,因为此处我便于演示,只设置了两个变量(即在二维情况下)。然而当我们的数据集中变量很多时,即高维度的情况下,主成分分析就可以通过降维,保留一些重要信息。例如:一个mxn的矩阵数据集,我们通过求解他的协方差矩阵的特征值及特征值向量,选择前r个较大特征值对应的特征向量,与原始数据相乘生成新的矩阵数据集,那么我们保存的数据量便是mxr+rn,此处就讲到了数据的压缩了。