PCA计算步骤

开始之前先列出PCA的计算步骤,之后对步骤进行说明。将原始数据按列组成n行m列的矩阵X(注:n代表了特征维数;m代表了数据条数;为什么使用列向量表示一条数据:使用列向量使得在之后的矩阵相乘时更加方便,并且符合数学公式的表达方式,比如第6条中 Y = HX,其表示将X表示的数据降维到k维,即将X投影到H表示的空间中,线性代数中一般均采用左侧为待投影空间矩阵的方式)

将X的每一行减去对应行的均值(注:这一过程称为:零均值化)

求出X的协方差矩阵C,即 X 乘 X转置(注:虽然称为协方差矩阵,但是实际并没有除以数据条数来取平均,因为这样做也没什么用处)

求出协方差矩阵的所有特征值和对应的特征向量(注:该协方差矩阵是实对称矩阵,因此所有特征值均是实数,这就保证了之后能够根据特征值大小来对特征向量进行排序)

将特征向量按照其对应的特征值由大到小的顺序排列,去前k个组成矩阵H(注:k表示要将原来的矩阵X降维到k维)

Y = HX ,得到的Y即表示X降维到k维后的数据(注:从这里也可以看出,对于两个矩阵相乘的本质,一种解释方法就是:右侧矩阵所代表的空间中的点投影到左侧矩阵所代表的的空间中)

PCA原理

为什么要提出PCA

首先,PCA是一种数据降维方法。

在机器学习中,很多情况下要处理的数据维数很高,甚至达到上万维,这种情况下机器学习要消耗大量的资源,有时设备无法支持,或者时间不允许,就必须对数据进行降维处理。

降维原则1:维度间相关性尽可能小

通过降维,希望能够去除一些没有用的数据,如相关性较大的数据。比如说一个数据集,有两列分别表示“男”,“女”,那么当一条数据中“男”是1,则“女”一定是0,这样的特征之间带有极强的相关性。在这种情况下,将“男”或者“女”去掉实际上没有任何信息损失。当然这是一种极端的情况。但是诸如网店数据中“下单数”和“成交单数”具有较强的相关关系,必要时二者取其一即可。

降维原则2:维度内各数据间分散程度尽可能大

降维就意味着信息的丢失,因此在降维过程中要尽量使信息的损失降到最低。如何保证?

假设我们有两个数据集,每个数据集均有两个特征。将这两个数据集表示在二维坐标系上如 图1 图2 所示。

下面对这两个数据集进行降维处理,缩放到一维。直观来看,如果缩放到一维,图1明显将其投影到x1轴最好。图2明显将其投影到x2轴最好,这样能够使得数据尽可能分散,越分散保留的信息越多。

降维的目的与原则

降维的目的是减少数据维数,其原则是使得保留下来的维度之间的相关性尽可能小;维度内的分散程度尽可能大。

保证两条原则的解决方法:协方差矩阵

怎样知道维度间相关性和维度内的分散程度(分散程度很自然使用方差描述)呢?答案是协方差矩阵!协方差矩阵度量的是维度与维度之间的关系,而非样本与样本之间。协方差矩阵的主对角线上的元素是各个维度上的方差,其他元素是两两维度间的协方差(即相关性)。对于原则1:维度间相关性尽可能小,翻译一下:协方差矩阵的非对角线元素之和最小。可以通过使协方差矩阵中非对角线元素都为0来实现。实现这一目的的方法就是:矩阵对角化。

对于原则2:维度内数据间分散程度尽可能大,翻译一下:协方差矩阵的对角线元素之和最大。通过对协方差矩阵对角化,我们得到对角矩阵,并且该对角矩阵对角线元素是协方差矩阵的特征值。因协方差矩阵是方阵,因此协方差矩阵的n个特征值之和等于协方差矩阵的对角线元素之和即各个维度的方差之和,由于我们是要降维(假设降到k维),因此我们只能取k个特征值作为新空间的基。如何保证各个维度方差之和最大?显然是要取最大的k个特征值。

PCA步骤解释将原始数据按列组成n行m列的矩阵X

解释:没有啥可解释的,基本操作。

2 将X的每一行减去对应行的均值

解释:这是为了在求协方差矩阵的时候方便,因为方差和协方差都有 【x - E(x)】一项,提前处理之后直接使用矩阵乘法即可。

3 求出X的协方差矩阵C,即 X 乘 X转置

解释:没有啥可解释的,基本操作。

4 求出协方差矩阵的所有特征值和对应的特征向量

解释:没有啥可解释的,基本操作。

5 将特征向量按照其对应的特征值由大到小的顺序排列,去前k个组成矩阵H(注:k表示要将原来的矩阵X降维到k维)

解释:排序就是为了方便取前k个特征值,矩阵H所代表的就是降维后的空间。

6 Y = HX ,得到的Y即表示X降维到k维后的数据

解释:将X降维到H所表示的空间中。

为什么要使用协方差矩阵的特征向量

协方差矩阵的特征向量表示的是什么?答:协方差矩阵的特征向量所表示的方向是数据变化最大的方向。

如上图所示,二维数据集的协方差矩阵经过计算后有两个特征向量u,v。其中,特征值大的对应的特征向量是u,小的对应的是v。因此,使用特征向量来作为降维后的基是合理的。

PCA简单实例

接下来使用PCA进行一个图片的简单操作,观察降维后的结果。

下面是测试图片,我们将该图片降维到一维。

在没有编写程序之前,讲过上面的分析,我们应该大体可以猜出来,结果大体应该是:

大体应该投影到红线表示的向量上。

下面是结果:

可以看到是符合预期的,这符合PCA降维的原则。

参考:

pca图解读_PCA 图像识别 详解(一)相关推荐

  1. FPN论文解读 和 代码详解

    FPN论文解读 和 代码详解 论文地址:[Feature Pyramid Networks for Object Detection](1612.03144v2.pdf (arxiv.org)) 代码 ...

  2. python 折线图 尾部_Matplotlib 折线图plot()所有用法详解

    散点图和折线图是数据分析中最常用的两种图形.其中,折线图用于分析自变量和因变量之间的趋势关系,最适合用于显示随着时间而变化的连续数据,同时还可以看出数量的差异,增长情况. Matplotlib 中绘制 ...

  3. 图之邻接表详解(C语言版)

    文章目录 一.定义 二.结构 三.常用操作 四.测试 结语 附录 一.定义 图的邻接表是一种顺序与链式存储相结合的存储方式.下面给出一个示例,以便大家能够理解邻接表这种存储方式:         无向 ...

  4. 数据结构(C语言版) 第 六 章 图 知识梳理 + 习题详解

    目录 一. 图的基本定义和术语 一.图的基本概念 1.度 2.连通 (1)连通图 (2)强连通/强连通图 3.回路 4.完全图 二.图的三种存储结构 1.邻接矩阵表示法 2.邻接表(链式)表示法 3. ...

  5. python箱线图_Python 箱线图 plt.boxplot() 参数详解

    Python 绘制箱线图主要用 matplotlib 库里 pyplot 模块里的 boxplot() 函数. plt.boxplot() 参数详解 plt.boxplot(x, # 指定要绘制箱线图 ...

  6. 重磅!阿里首次全面公开展示AI布局(附布局图/成绩单/六产业详解)

    01 阿里首次公开展示AI布局 12月20日,阿里云云栖大会·北京峰会召开,作为2017年阿里云栖大会最后一场,阿里做足了噱头,系列预热"重磅"."史无前例"等 ...

  7. gcn 图卷积神经网络_GCN图卷积网络入门详解

    字幕组双语原文:[GCN]图卷积网络(GCN)入门详解 英语原文:Graph Convolutional Networks (GCN) 翻译:听风1996.大表哥 在这篇文章中,我们将仔细研究一个名为 ...

  8. 【图结构】之图注意力网络GAT详解

    作者:張張張張 github地址:https://github.com/zhanghekai [转载请注明出处,谢谢!] GATGATGAT源代码地址:https://github.com/Petar ...

  9. 【YOLO系列】YOLOv5超详细解读(网络详解)

    前言 吼吼!终于来到了YOLOv5啦! 首先,一个热知识:YOLOv5没有发表正式论文哦~ 为什么呢?可能YOLOv5项目的作者Glenn Jocher还在吃帽子吧,hh 目录 前言 一.YOLOv5 ...

最新文章

  1. Linux内核之内核同步(二)——原子操作
  2. php 数组导出csv_php导出CSV抽象类实例
  3. fastapi日志重复打印_【FastAPI】踩坑总结
  4. python中index方法详解_详解python中的index函数用法
  5. 博客园---博客美化汇总
  6. 电商库存设计mysql redis_基于redis实现的扣减库存
  7. os.path.join;os.makedirs()
  8. PMP通关必备——知识地图全套(附PMBOK第七版)
  9. java怎么同时实现鼠标监听和键盘监听_JavaScript如何实现监听键盘输入和鼠标监点击...
  10. 浅谈互联网寒冬与经济形势
  11. excel冻结窗口怎么设置_excel冻结多行怎么设置-和冻结首行一样哦
  12. php版本高无法删除栏目,phpcms不能删除栏目怎么办
  13. 二维码图片生成(带文字显示)
  14. 西方哲学史的主要发展阶段
  15. php 生成会员卡号,PHP生成独一会员卡号
  16. JS排序:localeCompare() 方法实现中文排序、sort方法实现数字英文混合排序
  17. GitHub删除仓库小技巧
  18. ElasticSearch搜索引擎入门与实战
  19. Android Radio Interface Layer
  20. CacheLine对齐

热门文章

  1. 小爱音箱当电脑音箱(电脑没有蓝牙)
  2. 计算机考研400分以上,考研400分是什么概念?
  3. cosx等价无穷小_等价无穷小替换注意事项
  4. 目前最精准的Android开源计步器
  5. 南京大学2021计算机考研复试线是多少,2021南京大学
  6. activiti报错:org.activiti.engine.ActivitiTaskAlreadyClaimedException: Task ‘12502‘ is already claimed
  7. scratch零基础
  8. 最近爆火的电子血氧仪是什么原理?测的准吗?
  9. css样式的格式是什么,css的语法格式是什么
  10. Pintia(拼题A)刷题插件 on VS Code