PCA在机器学习中很常用,是一种无参数的数据降维方法。PCA步骤:

  1. 将原始数据按列组成n行m列矩阵X
  2. 将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
  3. 求出协方差矩阵
  4. 求出协方差矩阵的特征值及对应的特征向量
  5. 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
  6. Y=PX即为降维到k维后的数据

1. PCA的推导

PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。

我们知道PCA是一种数据降维的方法,在降低维度的过程中,我们当然想要保留更多的特征,PCA就是经过数学推导,保留最多特征同时降维的方法。

在推导之前要先知道几个基础知识:

  1. 内积与投影

两个维数相同的向量的内积被定义为:

假设A和B是两个n维向量,我们知道n维向量可以等价表示为n维空间中的一条从原点发射的有向线段,为了简单起见我们假设A和B均为二维向量,则A=(x1,y1),B=(x2,y2)。则在二维平面上A和B可以用两条发自原点的有向线段表示,见下图:

现在我们从A点向B所在直线引一条垂线。我们知道垂线与B的交点叫做A在B上的投影,再设A与B的夹角是a,则投影的矢量长度为|A|cos(a),其中|A|是向量A的模,也就是A线段的标量长度。

到这里还是看不出内积和这东西有什么关系,不过如果我们将内积表示为另一种我们熟悉的形式:

现在事情似乎是有点眉目了:A与B的内积等于A到B的投影长度乘以B的模。再进一步,如果我们假设B的模为1,即让|B|=1,那么就变成了:

也就是说,设向量B的模为1,则A与B的内积值等于A向B所在直线投影的矢量长度!这就是内积的一种几何解释,也是我们得到的第一个重要结论。在后面的推导中,将反复使用这个结论。

下面我们继续在二维空间内讨论向量。上文说过,一个二维向量可以对应二维笛卡尔直角坐标系中从原点出发的一个有向线段。例如下面这个向量:

在代数表示方面,我们经常用线段终点的点坐标表示向量,例如上面的向量可以表示为(3,2),这是我们再熟悉不过的向量表示。

我们列举的例子中基是正交的(即内积为0,或直观说相互垂直),但可以成为一组基的唯一要求就是线性无关,非正交的基也是可以的。不过因为正交基有较好的性质,所以一般使用的基都是正交的。

3. 基变换的矩阵表示

一般的,如果我们有M个N维向量,想将其变换为由R个N维向量表示的新空间中,那么首先将R个基按行组成矩阵A,然后将向量按列组成矩阵B,那么两矩阵的乘积AB就是变换结果,其中AB的第m列为A中第m列变换后的结果。(新基按行,向量按列)

特别要注意的是,这里R可以小于N,而R决定了变换后数据的维数。也就是说,我们可以将一N维数据变换到更低维度的空间中去,变换后的维度取决于基的数量。因此这种矩阵相乘的表示也可以表示降维变换。

最后,上述分析同时给矩阵相乘找到了一种物理解释:两个矩阵相乘的意义是将右边矩阵中的每一列列向量变换到左边矩阵中每一行行向量为基所表示的空间中去。更抽象的说,一个矩阵可以表示一种线性变换。很多同学在学线性代数时对矩阵相乘的方法感到奇怪,但是如果明白了矩阵相乘的物理意义,其合理性就一目了然了。

4. 协方差矩阵与优化目标

我们从上面的矩阵乘法与基变换可以看出,当新基的维数小于原来的维数时可以做到数据的降维,但是究竟如何选择新基就是我们现在面临的问题,我们想要选择一个维数更小的新基,同时新基保留有更多的信息。我们知道矩阵向新基投影的形式,也就是PCA是将一组N维的特征投影到K维(K

那么怎么衡量更多的特征,也就是投影后尽量少的重叠,投影值尽可能分散。

协方差

从二维到一维的降维,只需要找到一个一维基使得方差最大,但是三维降到二维呢?我们需要找到两个基让这个三维数据投影到两个基上,如果我们找方差最大的两个基,会发现他们完全一样或者线性相关,这和一个基没什么区别,不能表达更多的信息,所以我们需要添加限制条件,我们希望这两个基彼此线性无关,扩展到K个基也是一样。

当协方差为0时,表示两个字段完全独立。为了让协方差为0,我们选择第二个基时只能在与第一个基正交的方向上选择。因此最终选择的两个方向一定是正交的。

至此,我们得到了降维问题的优化目标:将一组N维向量降为K维(K大于0,小于N),其目标是选择K个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽可能大(在正交的约束下,取最大的K个方差)。

关于PCA的贡献率与K的选择

在我的文章特征值和特征向量中说过,特征值反映了矩阵对于特征向量的拉伸程度,只有拉伸而没有旋转,也就是在特征向量方向上的作用程度,所以在PCA中我们选取前K个特征向量组成新基进行投影,就是因为原特征在前K个特征向量有最大的作用程度。

投影过后可以保留更多的信息,作用程度是用特征值表示的,所以我们可以使用下面的式子表示贡献率,贡献率是表示投影后信息的保留程度的变量,也就是特征值的总和比上前K个特征值,一般来说贡献率要大于85%。

(1)获取更多优质内容及精彩资讯,可前往:https://www.cda.cn/?seo

(2)了解更多数据领域的优质课程:

pca 累积方差贡献率公式_机器学习数据降维方法:PCA主成分分析相关推荐

  1. pca 累积方差贡献率公式_主成分分析(PCA)解析 | 统计学习方法 | 数据分析,机器学习,学习历程全记录...

    本文包括:主成分分析基本思想 主成分分析的数学表达 主成分个数 规范化变量的总体主成分 样本主成分分析 1.主成分分析基本思想: 在一个数据集中,数据的变量(特征)之间可能存在相关性(互相不独立),这 ...

  2. pca 累积方差贡献率公式_初识PCA数据降维

    PCA要做的事降噪和去冗余,其本质就是对角化协方差矩阵. 一.预备知识 1.1 协方差分析 对于一般的分布,直接代入E(X)之类的就可以计算出来了,但真给你一个具体数值的分布,要计算协方差矩阵,根据这 ...

  3. pca 累积方差贡献率公式_累计方差贡献率和方差贡献率是什么关系SPSS中~~

    展开全部 各方差贡献率62616964757a686964616fe59b9ee7ad9431333431356637相加和等于累计方差贡献率. 主成分分析的重点在于解释各变量的总方差,而因子分析则把 ...

  4. python降维方法_机器学习数据降维方法总结(附python代码)

    介绍 在机器学习实战时,如果面对一个数据集具有上千个特征,那么对于模型训练将是一个巨大的挑战.面对如此多的数据变量,如果我们认真的去分析每一个变量将耗费我们几周甚至几个月的时间,那么你估计也要被开除了 ...

  5. pca 累积方差贡献率公式_PCA--主成分分析

    主成分分析(principal component analysis,PCA)是一种无监督学习方法,用来计算主成分理解数据. PCA的主要思想是n个样本值虽然都是存在于p维空间当中,但是并不是所有维度 ...

  6. pca 累积方差贡献率公式_PCA的原理及详细步骤

    一.基本原理 主成分分析是数学上对数据降维的一种方法. 其基本思想是设法将原来众多 的具有一定相关性的指标 X1 , X2 ,-, XP (比如 p 个指标) ,重新组合成一组较 少个数的互不相关的综 ...

  7. 数据降维方法(主成分分析PCA、线性判别分析LDA)

    数据降维 1.特征变换 1.1.特征提取 2.维数缩减 2.1.维度灾难 2.2.维度缩减 2.3.线性降维法 2.3.1.主成分分析(PCA) 2.3.1.1.数学分析 2.3.1.2.算法步骤 2 ...

  8. 【机器学习】降维技术-PCA

    写在篇前   PCA即主成分分析技术,又称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标,其主要目的是为了减少数据的维数,而同时保持数据集最多的信息.这篇文章主要是整理PCA算法的理论 ...

  9. 机器学习——数据降维

    文章目录 数据降维 1 维度灾难与降维 2 主成分分析 2.1 PCA原理 2.2 PCA算法 2.3 PCA算法实验 3 SVD降维 4 核主成分分析降维 总结 数据降维 数据降维又称维数约简,就是 ...

最新文章

  1. 学习linux要会mysql吗_linux 学习 mysql安装到连接
  2. 自然语言处理十问!独家福利
  3. 配置telnet和SSH
  4. tensorflow_yolo-v3 Intel Realsense 视频流处理模块 opencv.videocapture()
  5. 计算机社区活动,计算机与信息学院“e修哥”党支部进社区开展志愿服务活动...
  6. sony电视播放服务器文件,sony电视怎么样 sony电视支持视频格式【图文详解】
  7. 架构设计:数据服务系统0到1落地实现方案
  8. java wado_dcm4che,WADO相关
  9. 大数据工作由哪几部分组成
  10. 搜寻Linux软件实用指南
  11. mysql提权马免杀_webshell/牛逼免杀提权隐藏大马.asp at master · tennc/webshell · GitHub...
  12. 【VMware】XP安装VMware Tools
  13. python花猫_涨见识了,在终端执行 Python 代码的 6 种方式!
  14. java兵临城下_[编程题] 兵临城下
  15. make menuconfig错误——make[2]: *** [scripts/kconfig/lexer.lex.c] 错误 127
  16. Matlab / ArcGIS 处理GPM全球月均降水数据
  17. FlyAI小课堂:python机器学习笔记:深入学习决策树算法原理
  18. element-ui中tree组件双击事件的实现
  19. 十进制和二进制简单计算
  20. 前端角度出发做好SEO需要考虑什么?

热门文章

  1. VS 2019 要来了,是时候了解一下 C# 8.0 新功能
  2. 浅谈开发模式及架构发展
  3. 一个还算简单的微信消息SDK(基于.Net Standard 2.0)
  4. .NetCore+Jexus代理+Redis模拟秒杀商品活动
  5. GatewayWorker Not Support On Windows.
  6. CrossPHP--在我们用ajax,js取不到指定数据时,我们可以换一种方式
  7. [转]【JAVA各版本特性】JAVA 1.0
  8. 【错误异常大全】:ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS
  9. WCF服务自托管(Self-Hosting)
  10. C++语言打印汉字表