因为经常做一些图像和信号处理的工作,要用到主元分析(Principal Components

Analysis)作为工具。写出来供自己和朋友参考。

PCA是一种统计技术,经常应用于人面部识别和图像压缩以及信号去噪等领域,是在高维数据中提取模式的一种常用技术。要了解PCA首先要了解一些相关的数学知识,这里主要介绍协方差矩阵、特征值与特征矢量的概念。

1、 协方差矩阵

协方差总是在两维数据之间进行度量,如果我们具有超过两维的数据,将会有多于两个的协方差。例如对于三维数据(x, y,

z维),需要计算cov(x,y),cov(y,z)和cov(z,x)。获得所有维数之间协方差的方法是计算协方差矩阵。维数据协方差矩阵的定义为

(1)

这个公式告诉我们,如果我们有一个n维数据,那么协方差矩阵就是一个n行n列的方矩阵,矩阵的每一个元素是两个不同维数据之间的协方差。

对于一个3维数据(x,y,z),协方差矩阵有3行3列,它的元素值为:

(2)

需要注意的是:沿着主对角线,可以看到元素值是同一维数据之间的协方差,这正好是该维数据的方差。对于其它元素,因为cov(a,b)=cov(b,a),所以协方差矩阵是关于主对角线对称的。

2、特征值和特征矢量

只要矩阵大小合适,就可以进行两矩阵相乘,特征矢量就是其中的一个特例。考虑图2.1中两个矩阵和矢量乘法。

图2.1

一个非特征矢量和一个特征矢量的例子

图2.2

一个缩放的特征矢量仍然是一个特征矢量

在第一个例子中,结果矢量不是原来因子矢量与整数相乘,然而在第二个例子中,结果矢量是原来因子矢量的4倍,为什么会这样呢?该矢量是一个2维空间矢量,表示从原点(0,0)指向点(3,2)的箭矢。方矩阵因子可以看作是转换矩阵,一个矢量左乘该转换矩阵,意味着原始矢量转换为一个新矢量。

特征矢量来自于转换特性。设想一个转换矩阵,如果用其左乘一个矢量,映射矢量是它自身,这个矢量(以及它的所有尺度缩放)就是该转换矩阵的特征矢量。

特征矢量有什么特性呢?首先只有方阵才有特征矢量,而且并不是所有方阵都有特征矢量,如果一个nXn方阵有特征矢量,那么它有n个特征矢量。

特征矢量的另外一个性质是对特征矢量的缩放会得到缩放前同样地结果,如图2.2所示,这是因为你对矢量的缩放只是改变它的长度,不会改变它的方向。最后,矩阵的所有特征矢量是正交的。这是一个非常重要的性质,因为这意味着你可以在这些正交矢量上表示一组数据,而不仅是在x和y轴上。在下面的PCA小节内我们将作这个工作。

另外一个需要了解的是数学家寻找特征矢量,总喜欢寻找长度为1的那一个特征矢量,这是因为矢量的长度不影响它是否是特征矢量,因此,为了保证特征矢量是标准的矢量,我们通常将特征矢量的长度缩放为1,从而所有的特征矢量都有相同的长度。

怎样去找到这些神秘的特征矢量呢?不幸的是,只有对相当小维数的矩阵才有简单地方法,比如不超过3X3,对于较大维数的矩阵,需要复杂的迭代算法。

特征值是与特征矢量极其相关的,事实上,在图2.1中我们已经看到了一个特征值。注意在两个例子中,原始矢量左乘方阵后与矢量缩放数一样。在这个例子中,缩放数为4。4就是对应该特征矢量的特征值。不管在左乘方阵之前如何缩放特征矢量,我们总是得到该矢量的4倍(如图2.2)。所以特征值和特征矢量总是成对出现,当你使用程序计算特征矢量时,你总是同时得到对应的特征值。

3、主成分分析(PCA)

最后我们将进行主成分分析的介绍,那么什么是主成分分析呢?它是一种在数据中辨别模式的方法,表达数据的相似与不同之处的方法。因为高维数据的模式难以发现——图形表述不可用,PCA是一个有力的数据分析工具。

PCA的另外一个重要优势是,一旦你找到了数据的这些模式,你可以压缩它,也就是在不丢失很多信息的基础上,降低数据的维数。在下一节将会看到,这种技术被用于图像压缩。

本节将一步一步地带你对一组数据进行PCA操作。我将不具体描述该技术为什么适用,只是介绍怎样使用该技术。

§3.1 方法

第一步:获得数据

在我简单的例子中,将使用我自己制作的2维数据,使用2维数据的原因是我可以提供这些数据的图形,以便直观地观察PCA的操作步骤。下面就是我使用的数据

x=[2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2,

1, 1.5, 1.1]Ty=[2.4, 0.7,

2.9, 2.2, 3.0, 2.7, 1.6, 1.1, 1.6, 0.9]T

第二步:减去均值

要使PCA正常工作,必须减去数据的均值。减去的均值为每一维的平均,所有的x值都要减去,同样所有的y值都要减去,这样处理后的数据都具有0均值。

x=[0.69, -1.31, 0.39, 0.09, 1.29, 0.49, 0.19,

-0.81, -0.31, -0.71]T

y=[0.49, -1.21, 0.99, 0.29, 1.09, 0.79, -0.31,

-0.81, -0.31, -1.01]T;

第三步:计算协方差矩阵

因为数据是2维的,它的协方差矩阵就是2X2维的,这里直接给出结果:

因为非对角元素是正的,我们可以期望 和 变量一起增大。

第四步:计算协方差矩阵的特征矢量和特征值

因为协方差矩阵为方阵,我们可以计算它的特征矢量和特征值,它可以告诉我们数据的有用信息。我们数据的特征值和特征矢量分别为

我们可以看到这些矢量都是单位矢量,也就是它们的长度为1,这对于PCA是非常重要的,幸运的是,大多数数学程序包,当你计算特征矢量时,总是会得到单位特征矢量。

第五步:选择成分组成模式矢量

现在可以进行数据压缩降低维数了。如果你观察上一节中的特征矢量和特征值,会注意到那些特征值是十分不同的。事实上,可以证明对应最大特征值的特征矢量就是数据的主成分。在我们的例子中,对应大特征值的特征矢量就是那条穿过数据中间的矢量,它是数据维数之间最大的关联。

一般地,从协方差矩阵找到特征矢量以后,下一步就是按照特征值由大到小进行排列,这将给出成分的重要性级别。现在,如果你喜欢,可以忽略那些重要性很小的成分,当然这会丢失一些信息,但是如果对应的特征值很小,你不会丢失很多信息。如果你已经忽略了一些成分,那么最后的数据集将有更少的维数,精确地说,如果你的原始数据是n维的,你选择了前p个主要成分,那么你现在的数据将仅有p维。

现在要做的是你需要组成一个模式矢量,这只是几个矢量组成的矩阵的一个有意思的名字而已,它由你保持的所有特征矢量构成,每一个特征矢量是这个矩阵的一列。

对于我们的数据集,因为有两个特征矢量,因此我们有两个选择。我们可以用两个特征矢量组成模式矢量:

我们也可以忽略其中较小特征值的一个特征矢量:

下一节我们将会看到它们的结果。

x=[-0.828, 1.778, -0.992, -2.742, -1.676, -0.913,

0.099, 1.145, 0.438,1.224]T

第六步:获得新数据

这是PCA最后一步,也是最容易的一步。一旦你选择了须要保留的成分(特征矢量)并组成了模式矢量,我们简单地对其进行转置,并将其左乘原始数据的转置:

其中rowFeatureVector是由特征矢量作为列组成的矩阵的转置,因此它的行就是原来的特征矢量,而且对应最大特征值的特征矢量在该矩阵的最上一行。rowdataAdjust是减去均值后的数据,即数据项目在每一列中,每一行就是一维。FinalData是最后得到的数据,数据项目在它的列中,维数沿着行。

这将给我们什么结果呢?这将仅仅给出我们选择的数据。我们的原始数据有两个轴(x和y),所以我们的原始数据按这两个轴分布。我们可以按任何两个我们喜欢的轴表示我们的数据。如果这些轴是正交的,这种表达将是最有效的,这就是特征矢量总是正交的重要性。我们已经将我们的数据从原来的xy轴表达变换为现在的单个特征矢量表达。如果我们已经忽略了一些特征矢量,则新数据将会用我们保留的矢量表达。

§3.2 恢复原来的数据

4、写的累了,就这样吧。

matlab pca 主元 贡献,主元分析(PCA)原理相关推荐

  1. 主元分析(PCA)理论分析及应用

    主元分析(PCA)理论分析及应用 (主要基于外文教程翻译) 什么是PCA? PCA是Principal component analysis的缩写,中文翻译为主元分析.它是一种对数据进行分析的技术,最 ...

  2. 一文读懂PCA分析 (原理、算法、解释和可视化)

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.高颜值在线绘图和分析.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流 ...

  3. matlab主成分分析散点图_主成分分析(PCA)及其在MATLAB中的实现

    主成分分析 Principal Component Analysis(PCA) 1. 什么是主成分分析? What is PCA? Principal component analysis (PCA) ...

  4. 影像组学视频学习笔记(23)-主成分析PCA、降维和特征筛选的区别、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(23)主要讲解: 主成分析PCA,影像组学降维和特征筛选的区别 0. PCA(Principal component analysis) ...

  5. PCA(主成分分析)的工作原理

    PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降 ...

  6. lda 吗 样本中心化 需要_机器学习 —— 基础整理(四):特征提取之线性方法——主成分分析PCA、独立成分分析ICA、线性判别分析LDA...

    本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensiona ...

  7. 五步移相法matlab程序_用MATLAB软件对逆变电路移相调压进行仿真,30°,60°,90°的波形,并用分段分析法分析其原理_学小易找答案...

    [简答题]Translate the following ad into (1) a TV comercial, and (2) a factual introduction. Marie Franc ...

  8. 【ML】主成分分析 PCA(Principal Component Analysis)原理 + 实践 (基于sklearn)

    [ML]主成分分析 PCA(Principal Component Analysis)原理 + 实践 (基于sklearn) 原理简介 实践 数据集 数据处理 使用KNN模型进行分类预测(为了和PCA ...

  9. 降维分析PCA和FCA

    PCA和FCA的概念 PCA是主成分分析,FCA是因子分析. **主成分分析(PCA)**是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分. **探索性因子分析 ...

最新文章

  1. 从 StarCraft 2 Installer.exe 中提取种子文件
  2. 关联规则算法php,科学网—加权关联规则权值的计算 - 叶文菁的博文
  3. 通过Spring将继承树加载到List中
  4. Java 入门基础——面向对象的特征
  5. Django学习手册 - ORM sqlit基础数据库操作
  6. 老手萌新学习composer的使用
  7. Design System 中的 Design Token
  8. 地图加载不出来坐标标识点图片
  9. 有多厉害?首互联网卫星发射 飞机高铁WiFi就靠它了
  10. Kali安装VirtualBox增强功能
  11. Windows日志浅析
  12. HJ95 人民币转换
  13. android移动点餐系统内容和要求,基于Android云计算的移动点餐系统
  14. 批处理入门手册之批处理常用DOS命令篇(md、rd、ren、move)
  15. 欧姆龙e5dc温控器_E5DC-QX2DSM-800手册欧姆龙 数字温度控制器E5DC-QX2DSM-800用户手册 - 广州凌控...
  16. python出现‘int‘ object is not iterable的解决办法
  17. 拒绝服务攻击是对计算机网络的哪种,信息安全技术题库:DoS攻击是一种对网络危害巨大的恶意攻击,其中,具有代表性的攻击手段包括SYN洪泛、ICMP洪泛、UDP洪泛等。()...
  18. 水龙头CE认证EN817怎么办理?
  19. 用asp.net开发的网站的运行环境
  20. 把导航栏和图片无缝连接

热门文章

  1. Pygame基础知识(14)-pygame.image.load()对象和blit()绘制
  2. Android高级工程师进阶学习,分享PDF高清版
  3. 2022 年最佳开源软件出炉
  4. 【 react】react实现页面后退按钮(goBack())
  5. 支持Apple Music无损音频的耳机型号以及iPhone、iPad
  6. PHP学习资源整理:入门到进阶全系列
  7. BFC是什么?BFC的四种理解方式
  8. 免费文本转语音(在线文本转语音)
  9. android studio try again,完美解决Android Studio在gradle上的各种问题
  10. 学习管理系统五大好处