我是靠谱客的博主 可耐仙人掌,最近开发中收集的这篇文章主要介绍zedgraph 两点之间值_【科普】如何正确理解主成分分析(PCA)和奇异值分解(SVD)...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Greeting!

文章接上回,了解了特征值与特征向量的意义后,我们可以踏入线性代数中广泛应用的一种矩阵算法:奇异值分解(Singular Value Decomposition,SVD)及其应用: 主成分分析(Principle Component Analysis, PCA)。

奇异值分解(SVD)的基本思路

首先我们回忆一下特征值与特征向量的定义:

是一个
的方阵。如果存在一个向量
和一个标量
,使得
,则称
为矩阵A的一个
特征值,X为矩阵A对应于特征值的一个 特征向量。

那么问题来了,如果

不是一个正方矩阵呢?我们有以下定义:
是一个
的长方形矩阵。如果存在一个向量
和向量
,以及一个标量
,使得
,则称
为矩阵A的一个
奇异值
为矩阵
对应于特征值的
左奇异向量右奇异向量。

不必纠结太久,第二点无非就是特征向量的一般化而已。

此外,我们还有特征值分解的定义:


其中
特征向量矩阵(n个大小为
的特征向量组成)。
是包含对应特征值的
对角矩阵。根据不同的特征值的大小,可以知道每个特征向量对应权重,即其重要性。

那么同样地,如果这时

不是一个正方矩阵,而是一个长方形矩阵(
)呢?这就是今天奇异值分解SVD的核心内容:

这就是 奇异值分解公式,与 特征值分解公式(上)对应,不难得出
是一个
的矩阵,
是一个
的矩阵,而
是一个包含对应奇异值的
对角矩阵(除了主对角线上的元素以外全为0,主对角线上的每个元素都称为奇异值)。

5613f9c7dba74b6aa67e6a2a72a7d807.png
来源于https://zhuanlan.zhihu.com/p/29846048

总地来说,奇异值分解(SVD)也是对特征值分解,但是和特征值分解不同,SVD分解并不要求被分解的矩阵为方阵。证明过程因字数原因略,有兴趣的同学请参考:We Recommend a Singular Value Decomposition


主成分分析(PCA)的引入

在我们处理数据时,经常会遇到实例特征过多的问题,简称维度爆炸,在这个情况下,我们希望有一些普适的降维方法,降低数据运算时间。与此同时,我们还希望能够保留具有绝大部分信息的特征(又称主成分),将与实例关系联系不大的特征删去,而PCA能够同时满足这两点,下面是PCA的简单介绍:

PCA利用 投影的思想(降维方法的一种),将多个变量转化为少数几个主成分,其中每个主成分都是原始变量的线性组合,也就是说,各主成分之间互不相关(正交)。从而这些主成分能够反映实例的绝大部分信息。

从几何的角度出发,PCA把数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。主成分分析经常用减少数据集的维数,同时保持数据集的对方差贡献最大的特征。

fbd884c4221398b13f7f37fe9a71e4d2.png
爪机拍照,凑合着看吧

为了可视化,这里假定一个实例只有两个特征x1和x2,之前谈过PCA的本质是通过投影降维,显然选择保留最大差异性的轴来投影比较合理,因此这里选择的第一条轴为c1。上面提到,各主成分之间互不相关,也就是说我们选择的第二条次重要的轴应该与c1正交,那么就是c2啦,从数学的角度来看,c2对剩余差异性的贡献度最高。由此,我们成功地将原特征x1,x2转换成了新的特征轴c1c2上,我们定义第i条轴的单位向量就叫做第i个主成分(PC)

【注意】这里假设了实例只有两个特征,如果有n个特征,那就要选取n个轴,轴的数量需要与数据集维度相同。

主成分分析的降维过程

我们先看一下整体的求解流程:

0443c299f74e32aaf64a60f9d2311369.png
来自图书《Feature Engineering》

现在问题在于如何找到新的特征轴的单位向量,也就是我们说的主成分了。Chap 1谈到的SVD技术就派上用场了:

奇异值分解公式中

正是包含我们想要的所有主成分,它由n条特征轴向量列(c1,c2...cn)组成。

d39af5cf9c5477a721cde07ba83a00d5.png
反正看懂就行了

我们可以这样去理解,A的大小是

,也就是m个实例,每个实例n个特征。那么
刚好满足n个特征(维度)对应的n个特征轴,每个特征轴可以表示为大小为n的向量。与
的大小为
刚好对应。

此外

中对应的特征值与主成分矩阵也是一一对应,我们从本文第二张图可以看到,显然
第一个主成分轴具有的信息最多,第二主成分轴次之,以此类推。也就是说,每个主成分轴对数据集方差的贡献度是依次减少的,对应特征值对角矩阵(
)也是从左上到右下依次减少的。(Sklearn中可以通过变量explained_variance_ratio来获得)。
--------------------------------------喝口水休息一下-------------------------------------

到这里,获得了

只是用另一种坐标系(n个独立正交的主成分)表达原数据集而已,其实并没有降维。这时有的小伙伴会问了,那这大动干戈地转换有什么意义呢?这就要回到我们引入PCA的需求了,我们说过我们还希望能够保留具有绝大部分信息的特征。
奇异值转换的目的,正是将这些绝大部分信息由靠前的i个主成分轴提供,而越往后所提供的信息越少,从而方便降维,这也是PCA名字的来源。

如欲降维,只需保留前d列主成分,而将后(n-d)列删去即可,还可以保证大部分信息不被删去,这是奇异值转换之前不能达到的。用公式表示则有:

为原训练集矩阵,
为包含前d列主成分的矩阵(即
的前d列),
二者之点积即为降维后的数据集,降维后的维度为d。

这个d的选取根据具体情况而言,我们可以根据将各列方差解释率依次相加,直到得到足够大比例的方差(如95%)作为合适的维度。或者我们想可视化,就直接设置d为2或3即可。

至此,我们基础的PCA过程就结束了。至于一些小尾巴例如PCA的逆压缩、增量PCA、随机PCA,核PCA(KPCA)等扩展内容,可自行阅读专业书籍文献。后续我可能会在介绍核技巧和介绍图像去噪原理时涉及到PCA的内容。总的来说,PCA的应用非常广泛,有很高的科研价值。

最后

以上就是可耐仙人掌为你收集整理的zedgraph 两点之间值_【科普】如何正确理解主成分分析(PCA)和奇异值分解(SVD)...的全部内容,希望文章能够帮你解决zedgraph 两点之间值_【科普】如何正确理解主成分分析(PCA)和奇异值分解(SVD)...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部