为什么会讲到PCA?
前一阵在做一些featureselection的工作,想到PCA可以用来降维(在某些方面来说Feature selection也要降维),因此学习了一下PCA才发现这是完全不同的过程(PCA中的降维(计算主成分的目的是将高维数据投影到较低维空间)与特征选择中的降维(选取特征)是两个概念)。PCA应该算是feature extraction的过程,feature extraction是通过变换把原始特征从最初的度量空间中变换到另一个维度减少了的度量空间(the original features in the measurement space areinitially transformed into a new dimension-reduced space via some specifiedtransformation)的过程,虽然通过featureextraction的方法是维度减少很多,但是转换后的feature几乎包含原始数据的全部信息。而feature selection则是选择一个subset,使得所选取的特征能够去掉原数据的冗余信息,是分类更好,有利于创建好的model等。扯远了,言归正传。
PCA(Principal Component Analysis)即主成分分析,是一种掌握事物主要矛盾的统计分析方法,是一种经典的用于数据降维的统计学方法。在本人所接触到的应用中,PCA被应用于面部识别,是面部识别领域经典的方法。下面便总结一下PCA的算法与技术。
1. PCA(统计学上)
对于多变量问题,由于变量较多,使问题很复杂,同时人们发现变量之间有一定的相关性,自然想到用较少的变量替代原来较多的变量,是这些较少的变量反映原来变量的信息。
设是一个P维随机变量,且其二阶矩存在,记为,,考虑他的线性变换
易得
我们希望用Y1来代替原来的p个变量,这就要求Y1能尽可能的反映原来的p个变量的信息,这里的“信息”可用Y1的方差来表达越大,表示Y1所包含的信息越多,但同时我们也要对L1有所限制,常用的限制条件是
我们在上面的约束条件下找到L1使达到最大,这样的Y1就称为第一主成分。如果第一个主成分不足以代表p个变量时,就考虑采用Y2,为了有效的表示原有信息,Y2中不应该含有Y1的信息,用数学公式表的就是
于是Y2就转化为在上两式的约束条件下求L2。使达到最大。然后若要求Y3则依次go on。
关于主成分的求法有下面定理:
设X为p维随机变量,且存在,则X的第i个主成分Yi与方差D(Yi)分别为
其中为的特征值,为对应的单位特征向量。
看到这里如果你还没晕就证明你的统计学知识还是不错的,但当我们在machine learning或patternrecognition中用到PCA是,如果用上面的思想脉络总是感觉怪怪的,统计学家们一直在说做machine learning的人是在reinventingthe wheel,但我感觉做机器学习的人在一些方法的应用上更好理解,更能让人明白。
2.PCA(machine learning)
从上面我们可知,降维就是把高维的数据投影到低维的空间中,而线性方法的本质就在这里,所以上面我们用线性组合还表示数据。在machine leaning中,PCA的目的是找到在最小均方意义下最能代表原始数据的方法(在machine leaning中这个“最小均方”无处不在啊!)。
有n个d维的样本,我们希望找到一个X0来表示,即使平方误差准则函数达到最小,容易得到,这个就是样本均值。
通过把全部样本向通过样本均值的一条直线做投影,我们能够得到样本均值的直线上的一维向量
这条直线是,(e是通过样本均值的直线上的单位向量,a是一个实数)如果我们用,那么通过最小化均方误差准则函数,我们可以得到一组最优的的集合,如下:
通过对求导,可以得到
其实就是用一组数(k=1,2,…,n)来表示原来的n个d维的样本。
下面还有一个问题是怎样找到e的方向:
我们需要引入样本离差矩阵
把(2)带入到(1)中就可以得到
显然使J1最小的那个向量e,能使最大,在约束条件||e||=1下,有
因此,矩阵S最大的特征值对应的特征向量就是投影e的方向。
从几何上来讲,样本点在d维空间上形成一个d维椭球形状的云团,样本离差矩阵S的特征向量就是这个云团的主轴,主成分分析就是提取云团散布最大的那些方向的方法,达到对特征空间进行降维的目的。
3.举个小例子直观说明一下PCA
对于一个训练集,100个对象模板,特征是10维,那么它可以建立一个100*10的矩阵,作为样本。求这个样本的协方差矩阵,得到一个10*10的协方差矩阵,然后求出这个协方差矩阵的特征值和特征向量,应该有10个特征值和特征向量,我们根据特征值的大小,取前四个特征值所对应的特征向量,构成一个10*4的矩阵,这个矩阵就是我们要求的特征矩阵,100*10的样本矩阵乘以这个10*4的特征矩阵,就得到了一个100*4的新的降维之后的样本矩阵,每个特征的维数下降了。
4.下面一点具体的应用(面部识别)
训练阶段
1. 假设训练集有两百个样本,由灰度图组成每个样本大小M*N,则样本训练矩阵为
2. 计算平均脸;
3. 计算每一张脸与平均脸的差值
4. 构造协方差矩阵
5. 求协方差矩阵的特征值与特征向量,构造特征脸空间
6. 根据贡献率选取前p个最大特征值及其对应的特征向量
贡献率取a=99%,即训练样本的前p个特征向量集上的投影有99%的能量,特征脸空间为
7. 将每一幅人脸与平均脸的差值矢量投影到“特征脸”空间,即
识别阶段
1. 将待识别人脸与平均脸的差值投影到特征空间,得到其特征向量表示
2. 定义阈值
3. 采用欧式距离计算与每个人脸的距离
4. 为了区分人脸和非人脸,还需要计算原始图像与由特征脸空间重建的图像之间的距离,其中;
5. 根据以下规则对人脸进行分类
1) 若 则输入图像不是人脸图像
2) 若且 则输入图像包含未知人脸
3) 若且则输入图像是库中第k个人的人脸
6. 参考文献
【1】 师义民,徐伟,”数理统计”,科学出版社,2010
【2】 Richard O.Duda Peter E.Hart , ” Pattern Classification”, 2003
【3】 http://hi.baidu.com/ccst_kmyu/blog/item/91cd461dceddac04314e157c.html
【4】 http://wenku.baidu.com/view/9f69930790c69ec3d5bb75d3.html
【5】 http://en.wikipedia.org/wiki/Principal_component_analysis
【6】 Hua-Liang Wei and Stephen A. Billings,Feature Subset Selection and Ranking for
DataDimensionality Reduction,IEEE Trans on Pami,2007