主成分分析

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

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