您好,欢迎访问三七文档
主成分分析(PrincipalComponentsAnalysis,PCA)报告人:李帆一、使用PCA的动机二、数据预处理三、PCA模型的定义四、PCA在matlab中的计算五、应用PCA的建议一、使用PCA的动机在进行图像的特征提取的过程中,提取的特征维数太多经常会导致特征匹配时过于复杂,消耗系统资源,不得不采用特征降维的方法。所谓特征降维,即采用一个低纬度的特征来表示高纬度。特征降维一般有两类方法:特征选择和特征抽取。特征选择即从高纬度的特征中选择其中的一个子集来作为新的特征;而特征抽取是指将高纬度的特征经过某个函数映射至低纬度作为新的特征。常用的特征抽取方法就是PCA。PCA基本原理:•根据方差最大化原理,用一组新的、线性无关且相互正交的向量来表征原来数据矩阵的行(或列)。这组新向量(主成分)是原始数据向量的线性组合。•通过对原始数据的平移、尺度伸缩(减均值、除方差)和坐标旋转(特征分解),得到新的坐标系(特征向量)后,用原始数据在新坐标系下的投影(点积)来替代原始变量在介绍PCA之前,先介绍两个概念:维数灾难(CurveofDimensionality)维数规约(DimensionalityReduction)维数灾难:一般我们为了获得更好的分类精度,会选择增加一些特征,但是当特征数量达到一定数量后,增加特征不光不能提高分类精度反而导致分类精度的下降。所谓维数灾难就是随着特征维度的增加,计算开销急剧增加,而分类精度下降(或者聚类质量下降)。下面用一张图来表示分类器性能和特征维度之间的关系从上图能够看出,随着特征维度的增加,分类器性能会提升,但是到达某个临界点后,分类器性能会急剧下降。而且随着特征维度的增加训练模型的时间开销往往很大。在某种意义上,几乎所有的高维空间都远离其中心,高维单元空间可以说是几乎完全由超立方体的“边角”所组成的,没有“中部”。这里我们假设超立方体(hypercube)的边长d=1,那么计算半径为0.5的超球面(hypersphere)的体积(volume)的公式为:/2()0.5(1)2ddVdd可以看出随着特征数量的增加,超球面的体积逐渐减小直至趋向于零,然而超立方体的体积却不变。说明了在高维特征空间中,大多数的训练样本位于超立方体的角落。随着维度的不断增加,公式将趋向于0,其中dist_max和dist_min分别表示样本到中心的最大与最小距离。从样本到质心之间的最小和最大欧几里得距离的差别率趋于零,最小距离也都趋于零,因此,在高维特征空间中对于样本距离的度量失去意义。由于分类器基本都依赖于距离,所以在特征数量过大时,分类器的性能就会出现下降。maxminminlim0ddistdistdist维数规约:所谓维数规约就是降低特征维度。维规约的好处体现在一下几个方面:(1)维度减少能够改善模型性能;(2)使数据集更好理解,因此较低的特征维度可以更容易数据可视化;(3)降低了训练模型的时间开销和节省存储空间。维数规约最常用的技术就是主成分分析(PCA)。本质上讲,PCA就是将高维的数据通过线性变换投影到低维空间上去,但这个投影并不是随便投,要遵循一个指导思想,那就是:找出最能够代表原始数据的投影方法。“最能代表原始数据”希望降维后的数据不能失真,也就是说,被PCA降掉的那些维度只能是那些噪声或是冗余的数据。这里的噪声和冗余可以这样认识:噪声:我们常说“噪音污染”,意思就是“噪声”干扰我们想听到的真正声音。同样,假设样本中某个主要的维度A,它能代表原始数据,是“我们真正想听到的东西”,它本身含有的“能量”(即该维度的方差)本来应该是很大的,但受到其他维度的干扰,它的能量被削弱了,我们就希望通过PCA处理后,使维度A与其他维度的相关性尽可能减弱,进而恢复维度A应有的能量,让我们“听的更清楚”!冗余:冗余也就是多余的意思。同样,假如样本中有些个维度,在所有的样本上变化不明显(极端情况:在所有的样本中该维度都等于同一个数),也就是说该维度上的方差接近于零,那么显然它对区分不同的样本丝毫起不到任何作用,这个维度即是冗余的,有它没它一个样,所以PCA应该去掉这些维度。那么PCA的最终目的就是“降噪”和消灭这些“冗余”的维度,以使降低维度的同时保存数据原有的特征不失真。协方差矩阵度量的是维度与维度之间的关系,而非样本与样本之间。协方差矩阵的主对角线上的元素是各个维度上的方差(即能量),其他元素是两两维度间的协方差(即相关性)。“降噪”的目的就是使保留下来的维度间的相关性尽可能小,也就是说让协方差矩阵中非对角线元素都基本为零。达到这个目的的方式自然不用说,线代中讲的很明确——矩阵对角化。“去冗余”的目的就是使保留下来的维度含有的“能量”即方差尽可能大。通过对角化后,剩余维度间的相关性已经减到最弱,已经不会再受“噪声”的影响了,故此时拥有的能量应该比先前大了,所以我们只取那些含有较大能量(特征值)的维度,其余的就舍掉即可。PCA的本质其实就是对角化协方差矩阵举个例子,假如某学籍数据有两列M和F,其中M列的取值是:学生为男性取值1,为女性取值0;而F列是:学生为女性取值1,男性取值0。此时如果我们统计全部学籍数据,会发现对于任何一条记录来说,当M为1时F必定为0,反之当M为0时F必定为1。在这种情况下,我们将M或F去掉实际上没有任何信息的损失,因为只要保留一列就可以完全还原另一列。二、数据预处理运行PCA算法之前,数据一般都需要预处理。预处理步骤如下:步骤1-2将数据的均值变为0,当已经知道数据的均值为0的时候,可以省略这两步。步骤3-4将数据的每个维度的方差变为1,从而使得每个维度都在同一个尺度下被衡量,不会造成某些维度因数值较大而有大的影响的情况。当预先知道数据处于同一尺度下时,可以忽略3-4步,比如图像处理中,已经预知了图像的每个像素都在0-255范围内,因而没有必要再进行归一化了。经过处理的数据符合标准正态分布,即均值为0,标准差为1三、PCA模型的定义由图可以看到,u1是展示出了数据的相关性,称之为“主方向”,u2则反映了一些主方向之外的噪声如何找到数据的主方向?在二维空间下可以这样理解,有一个单位向量u,若从原点出发,这样定义u以后就相当于定义了一条直线。每个数据点在该直线上都有一个投影点,寻找主方向的的任务就是寻找一个u使得投影点的方差最大化。将样本投影到某一维上,这里用一条过原点的直线表示,假设我们选择两条不同的直线做投影,根据我们之前的方差最大化理论,显然中图的投影点的方差最大,因为投影后的样本点之间方差最大。红色点表示样例,蓝色点表示在u上的投影,u是直线的斜率也是直线的方向向量,而且是单位向量。由于这些样本点的每一维特征均值都为0,因此投影到u上的样本点的均值仍然是0。我们要求的是最佳的u,使得投影后的样本点方差最大。问题1,能不能不从原点出发?可以,但那样计算就复杂了,归一化时候将均值设为0,目的就是为了在寻找方向的时候使向量从原点出发,方便计算。问题2,多维空间下多个主方向时怎么办?就是不止寻找一个单位向量,找到一个主方向后,将该主方向的方差影响去掉,然后再找主方向。如何去掉前一个主方向的方差影响呢?对于二维数据来说,是将所有数据点在垂直于该主方向的另一个方向上做投影,比如要去掉主方向u1的方差影响,需要在u2方向上进行投影,多维空间上也可以类推。给出寻找主方向的数学定义:设𝑥(𝑖)为数据集中的点,u是要求解的单位向量,那么方差最大化可以形式化为最大化:注意到,对于归一化后的数据,其投影点的均值也为0,因而在方差计算中直接平方。该公式有一个约束条件,即||u||2=1.这个最大化问题的解就是矩阵的特征向量。使用拉格朗日方程来求解该最大化问题,则:令导数为0,可知u就是Σ的特征向量,因为是对称矩阵,因而可以得到相互正交的n个特征向量,选取最大的k个特征值所对应的特征向量即可。降维后的数据可以用下式来表达:对u求导贡献率(降维的k的值的选择)k越大,也就是使用的U中的特征向量越多,那么导致的降维误差越小,也就是更多的保留原来的特征的特性。反之亦然。从信息论的角度来看,如果选择的k越大,也就是系统的熵越大,那么就可以认为保留的原来样本特征的不确定性也就越大,就更加接近真实的样本数据。如果k比较小,那么系统的熵较小,保留的原来的样本特征的不确定性就越少,导致降维后的数据不够真实。(个人的观点)贡献率即最前面的k个特征值所占的比重大于90%(不是定值)以上即可。Matlab中使用以下函数:cumsum(latent)./sum(latent)四、PCA在matlab中的计算[COEFF,SCORE,latent,tsquare]=princomp(X)coeff:是X矩阵所对应的协方差阵所有特征向量组成的矩阵,即变换矩阵或称投影矩阵。比如取出前三个主成分的系数,则如下可现:pca3=coeff(:,1:3);用原矩阵x*coeff(:,1:n)才是你要的的新数据,其中的n是你想降到多少维。score:主成分得分,即原始数据在新生成的主成分空间里的坐标值.latent:一个列向量,由协方差矩阵的特征值组成.Tsquare:是表示对每个样本点Hotelling的T方统计量Hotelling(空间差异的决策模型)的T方是用来衡量多变量间的距离,这个距离是指样本观测值到数据集中心的距离。x=[281;754;1083;927];[coeff,score,latent]=princomp(x);coeffscorelatentcumsum(latent)./sum(latent)pareto(latent)每一列为变换空间中的基向量X在变换空间中的表示协方差矩阵的特征值贡献率。一般要求贡献率大于90%时才能够不影响的表达原始数据此数据中,可以将原数据降维到二维上图为parto生成的图,当贡献率累加至95%(当要求不是特别严格时,85%以上也可以),以后的维数会不再显示,在没有达到95%的情况下,最多也只显示10维。loadhald;%载入matlab内部数据[coeff,score,latent,tsquare]=princomp(zscore(ingredients));%调用pca分析函数ingredients,score,coeff,latent,tsquare%显示得到的结果五、应用PCA的建议•对于过拟合问题,不应该使用PCA去降低过拟合,而是应该使用正则化项去避免过拟合。•在训练集中找出PCA的主成分,(可以看做为映射mapping),然后应用到测试集和交叉验证集中。而不是对所有数据集使用PCA然后再划分训练集,测试集和交叉验证集。•PCA是一种无监督学习,其存在的假设是:方差越大信息量越多。但是信息(方差)小的特征并不代表表对于分类没有意义,可能正是某些方差小的特征直接决定了分类结果,而PCA在降维过程中完全不考虑目标变量的做法会导致一些关键但方差小的分类信息被过滤掉。•PCA降低了输入数据的维度同时保有了主要信息/能量,但是这个主要信息,仍然是只针对训练集的,为了更好的满足训练集。过拟合就是对训练集表现的很好,但是对测试集表现的很差。同时,PCA保留的是训练集的主要信息,可能这未必是重要信息,但是舍弃了一些看似无用的信息,那些信息仍可能是重要信息,只是在训练集上没有很大的表现。所以,降维只是降低了过拟合的概率,而没有避免过拟合。PCA技术的优点:它是完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。缺点:如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。黑色点表示采样数据,排列成转盘的形状。容易想象,该数据的主元是P(p1,p2)或是旋转角。PCA找出的主元将是P(p1,p2)。但是这显然不是最优和最简化的主元。之间存在着非线性的关系。根据先验的知识可知旋转角是最优的主元(类比极坐标
本文标题:主成分分析
链接地址:https://www.777doc.com/doc-2670861 .html