PA降维方法(主成分分析降维).doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PA降维方法(主成分分析降维).doc

一、简介 PCA (Principal Components Analysis)即主成分分析,是图像处理屮经常川到的降 维方法,大家知道,我们在处理有关数字图像处理方面的M题时,比如经常用的图像的查询 问题,在一个几万或者几百万甚至更大的数据库屮查询一幅相近的图像。这时,我们通常的 方法是对图像库中的图片提取响应的特征,如颜色,纹理,sift, surf, Vlad等等特征,然后 将其保存,建立响应的数据索引,然后对要查询的图像提取相应的特征,与数据库屮的图像 特征对比,找出与之最近的图什。这里,如果我们为了提高查询的准确率,通常会提取一些 较为复杂的特征,如sift,surf等,一幅图像有很多个这种特征点,每个特征点又有一个相 应的描述该特征点的128维的向量,设想如果一幅图像有300个这种特征点,那么该幅图 像就有30(Tvector (128维)个,如果我们数据库巾有一百万张图片,这个存储量是相当大 的,建立索引也很耗时,如果我们对每个向量进行PCA处理,将其降维% 64维,是不是 很节约存储空间啊?对于学习图像处理的人来说,都知道PCA是降维的,但是,很多人不 知道具体的原理,为此,我写这篇文章,来详细阐述一下PCA及其具体计算过程: 二、PCA原理 1、 原始数据: 为了方便,我们假定数据是二维的,借助网络上的一组数据,如下: x=[2.5, 0.5, 2.2, 1.9, 3.1,2.3, 2, 1,1.5, 1.1]T y=[2.4, 0.7, 2.9, 2.2, 3.0, 2.7, 1.6, 1.1, 1.6, 0.9]T 2、 计算协方差矩阵 什么是协方差矩阵?相信看这篇文章的人都学过数理统计,一些基本的常识都知道,但是, 也许你很长时间不看了,都忘差不多了,为了方便大家更好的理解,这里先简单的回顾一下 数理统计的相关知识,当然如果你知道协方差矩阵的求法你可以跳过这里。 (1)协方差矩阵: 首先我们给你一个含有n个样本的集合,依次给出数理统计中的一些相关概念: 了二 m 均值: n 标准差 方差:n, 方差: n,([乃 n- 1 既然我们都有这么多描述数据之间关系的统计量,为什么我们还要用协方差呢?我们应该注 意到,标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的 数据集,最简单的大家上学时免不了要统计多个学科的考试成绩。而对这样的数据集,我们 当然可以按照侮一维独立的计算其方差,但是通常我们还想了解这儿科成绩之间的关系,这 时,我们就要用协方差,协方差就是一种用来度量两个随机变量关系的统计量,其定义为: cov(X. Y)= cov(X. Y)= 从协方差的定义上我们也可以看出?一些显而易见的性质,如: 1 .co\(X,X) = var( 2.cov(A\y) = cov(y, %) 需要注意的是,协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如 n维的数据集就需要计算CN2 此乃组合数基本公式】个协方差,那自然而然的我们会想 到使用矩阵来组织这些数据。给出协方差矩阵的定义: cnxrl = Ci J = cov(Dimh Di”。)) 这个定义还是很容易理解的,我们可以举一个简单的三维的例子,假设数据集有三个维度 {x,y,z}?则协方差矩阵为 ( cov(t, x) cov(x, y) cov(x^z) \ CGv[y,x) cov{y, y) cov(y, z) I cov{z^x} cov(z^y) cov(z, z) / 可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。 (2)协方差矩阵的求法: 协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。下面我们将在matlab 中用一个例子进行详细说明: 首先,随机产生一个1CT3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数。 |l. MySample = fix(rand(10,3)*50) MySample ? 10 15 29 15 46 13 23 21 30 11 9 35 42 45 11 9 48 5 11 21 14 8 S 15 11 12 21 21 20 25 根据公式,计算协方差需要汁算均值,那是按行汁算均值还是按列呢,我一开始就老是困扰 这个问题。前面我们也特别强调了,协方差矩阵是计算不同维度间的协方差,要时刻牢记这 —点。样本矩阵的每行是一个样本,每列为一个维度,所以我们要按列计算均值。为了描 述方便,我们先将三个维度的数据分别赋值: [cpp] view plaincopy diml = MySample(: _,1); dim2 = MySample(:2); I 3. dim3 = MySample(:,3); %计算 diml 与 d

文档评论(0)

ggkkppp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档