主成分分析(PCA)的推导与解释

主成分分析(PCA)的推导与解释,第1张

PCA是一种无参数的数据降维方法,在机器学习中很常用,这篇文章主要从三个角度来说明PCA是怎么降维的分别是方差角度,特征值和特征向量以及SVD奇异值分解。

推导主要来源于下面网址的这篇文章,是通过方差和协方差矩阵来说明:

http://blogcodinglabsorg/articles/pca-tutorialhtml

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

在上面网址的文章中,从头到尾发明了一遍PCA我觉得很有借鉴意义。我们知道PCA是一种数据降维的方法,在降低维度的过程中,我们当然想要保留更多的特征,PCA就是经过数学推导,保留最多特征同时降维的方法。

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

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

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

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

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

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

不过我们常常忽略, 只有一个(3,2)本身是不能够精确表示一个向量的。 我们仔细看一下, 这里的3实际表示的是向量在x轴上的投影值是3,在y轴上的投影值是2。 也就是说我们其实 隐式引入了一个定义:以x轴和y轴上正方向长度为1的向量为标准。 那么一个向量(3,2)实际是说在x轴投影为3而y轴的投影为2。注意投影是一个矢量,所以可以为负。

更正式的说, 向量(x,y)实际上表示线性组合

我们之所以默认选择(1,0)和(0,1)为基,当然是比较方便,因为它们分别是x和y轴正方向上的单位向量,因此就使得二维平面上点坐标和向量一一对应,非常方便。 但实际上任何两个线性无关的二维向量都可以成为一组基, 所谓线性无关在二维平面内可以直观认为是两个不在一条直线上的向量。

例如,(1,1)和(-1,1)也可以成为一组基。一般来说,我们希望基的模是1,因为从内积的意义可以看到,如果基的模是1,那么就可以方便的用向量点乘基而直接获得其在新基上的坐标了!实际上,对应任何一个向量我们总可以找到其同方向上模为1的向量,只要让两个分量分别除以模就好了。例如,上面的基可以变为(1/√2,1/√2)和(-1/√2,1/√2)

现在,我们想获得(3,2)在新基上的坐标,即在两个方向上的投影矢量值,那么根据内积的几何意义,我们只要分别计算(3,2)和两个基的内积,不难得到新的坐标为(5/√2,-1/√2)。下图给出了新的基以及(3,2)在新基上坐标值的示意图:

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

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

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

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

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

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

这种投影值的分散数学上可以用方差表示。方差公式这里不表, 所以PCA现在的问题就变成了,寻找K维的新基,使得数据变换到这组基上后方差值最大。

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

在数学上使用协方差表示两个向量的相关性,在我们将均值归一化为0后,协方差可以表示为:

=\frac{1}{m}\sum_{i=1}^{m}a_ib_i)

m为向量的元素数。可以看到,在字段均值为0的情况下,两个字段的协方差简洁的表示为其内积除以元素数m。

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

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

上面我们导出了优化目标,但是这个目标似乎不能直接作为操作指南(或者说算法),因为它只说要什么,但根本没有说怎么做。所以我们要继续在数学上研究计算方案。

我们看到,最终要达到的目的与字段内方差及字段间协方差有密切关系。因此我们希望能将两者统一表示,仔细观察发现,两者均可以表示为内积的形式,而内积又与矩阵相乘密切相关。于是我们来了灵感:

假设我们只有a和b两个特征,那么我们将它们按行组成矩阵X:

然后我们用X乘以X的转置,并乘上系数1/m:

这个矩阵对角线上的两个元素分别是两个字段的方差,而其它元素是a和b的协方差。两者被统一到了一个矩阵的。

根据矩阵相乘的运算法则,这个结论很容易被推广到一般情况:

设我们有m个n维数据记录,将其按列排成n乘m的矩阵X,设C=1/mXX T ,则C是一个对称矩阵,其对角线分别个各个字段的方差,而第i行j列和j行i列元素相同,表示i和j两个字段的协方差。

根据上述推导,我们发现要达到优化目前,等价于将协方差矩阵对角化:即除对角线外的其它元素化为0,并且在对角线上将元素按大小从上到下排列,这样我们就达到了优化目的。这样说可能还不是很明晰,我们进一步看下原矩阵与基变换后矩阵协方差矩阵的关系:

设原始数据矩阵X对应的协方差矩阵为C,而P是一组基按行组成的矩阵,设Y=PX,则Y为X对P做基变换后的数据。设Y的协方差矩阵为D,我们推导一下D与C的关系:

现在事情很明白了!我们要找的P不是别的,而是能让原始协方差矩阵对角化的P。换句话说, 优化目标变成了寻找一个矩阵P,满足PCP T 是一个对角矩阵 ,并且对角元素按从大到小依次排列,那么P的前K行就是要寻找的基,用P的前K行组成的矩阵乘以X就使得X从N维降到了K维并满足上述优化条件。

由上文知道,协方差矩阵C是一个是对称矩阵,在线性代数上,实对称矩阵有一系列非常好的性质:

1)实对称矩阵不同特征值对应的特征向量必然正交。

2)设特征向量λ重数为r,则必然存在r个线性无关的特征向量对应于λ,因此可以将这r个特征向量单位正交化。

由上面两条可知,一个n行n列的实对称矩阵一定可以找到n个单位正交特征向量,设这n个特征向量为e 1 ,e 2 ,,e n ,我们将其按列组成矩阵:

则对协方差矩阵C有如下结论:

其中Λ为对角矩阵,其对角元素为各特征向量对应的特征值(可能有重复)。以上结论不再给出严格的数学证明,对证明感兴趣的朋友可以参考线性代数书籍关于“实对称矩阵对角化”的内容。

到这里,我们发现我们已经找到了需要的矩阵P:

P是协方差矩阵的特征向量单位化后按行排列出的矩阵,其中每一行都是C的一个特征向量。如果设P按照Λ中特征值的从大到小,将特征向量从上到下排列,则用P的前K行组成的矩阵乘以原始数据矩阵X,就得到了我们需要的降维后的数据矩阵Y。

至此我们完成了整个PCA的数学原理讨论。

在我的文章特征值和特征向量中说过,特征值反映了矩阵对于特征向量的拉伸程度,只有拉伸而没有旋转,也就是在特征向量方向上的作用程度,所以在PCA中我们选取前K个特征向量组成新基进行投影,就是因为原特征在前K个特征向量有最大的作用程度,投影过后可以保留更多的信息,作用程度是用特征值表示的,所以我们可以使用下面的式子表示贡献率,贡献率是表示投影后信息的保留程度的变量,可以用下面的式子表示:

也就是特征值的总和比上前K个特征值,一般来说贡献率要大于85%。

上面的推导中我们看到

其实就是对于D的奇异值分解。但是其实两者还有一些区别:

1) SVD可以获取另一个方向上的主成分,而PCA只能获得单个方向上的主成分:

隐语义索引(Latent semantic indexing,简称LSI)通常建立在SVD的基础上,通过低秩逼近达到降维的目的。

注意到PCA也能达到降秩的目的,但是PCA需要进行零均值化,且丢失了矩阵的稀疏性。

通过SVD可以得到PCA相同的结果,但是SVD通常比直接使用PCA更稳定。因为PCA需要计算X T X的值,对于某些矩阵,求协方差时很可能会丢失一些精度。例如Lauchli矩阵:

1)将原始数据按列组成n行m列矩阵X

2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值

3)求出协方差矩阵

4)求出协方差矩阵的特征值及对应的特征向量

5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P

6)Y=PX即为降维到k维后的数据

courser里吴恩达的PCA的习题就不错。

先放一张PCA图

主成分分析(Principal Component Analysis)

是不是听起来就一脸懵,下面就让我们来看看PCA是何方神圣!

01

降维?

主成分分析的字面意思就是用主成分来分析数据呗!阔是,什么是主成分?这就不得不聊一个关于“降维”的故事了。

“学医要考研,考研要复试,复试要…要…要…复试不仅让考生心痛更让导师眼花缭乱。”这不,A导就纠结着到底选5个复试学生里的哪一个来当自己的关门弟子?

A导最终决定用数据说话!设置了“绩点,考研分数,科研能力,笔试成绩,面试表现,英语水平,奖学金,学科竞赛,部门任职”9个指标(相当于从9个维度去评价这5位考生)。

9个指标=9个变量=9个维度

我的三维大脑是搞不定的

看来9维是不行了,那怎么把维度降低,用简单的方法表示复杂的数据分析?

当然是用降维了!降维是通过减少数据中的指标(或变量)以化简数据的过程。这里的减少指标,并不是随意加减,而是用复杂的数理知识,得到几个 “综合指标” 来代表整个数据。

PS:降维的原理涉及复杂数理知识且大多由计算机完成

那么问题来了!这个“综合指标”是什么?为什么它们就可以代表整个数据?

02

Why

主成分?

综合指标=主成分

你没有看错,这个综合指标就是我们今天的重点:主成分。它不是原来的指标中的任何一个,而是由所有原有指标数据线性组合而来。

比如A导的故事中的主成分就可这样表示:

认识了“主成分”以后,PCA的概念就很容易理解了!

PCA——就是以“降维”为核心,把多指标的数据用少数几个综合指标(主成分)替代,还原数据最本质特征的数据处理方式。

可是, 主成分为什么拽到可以代替所有数据?

认真看看可以发现 部分指标其实是相互关联的! (比如奖学金也可以反映绩点情况),这就会造成 数据冗余。 而降维就可以帮助我们 去除这些指标中重叠、多余的信息,把数据最本质和关键的信息提取出来。

A导终于可以一眼就区分这5位考生的水平并“理智”地做出选择了!

将学生成绩表示为矩阵形式,一行代表一个学生,每一列代表一门课的成绩

假设找到了一个线性组合(命名为特征矩阵(Yn, k)),其中k<n

得到一组新变量Pm, k = Xm, n Yn, k,并且新变量的协方差矩阵(Dm, m)为对角阵。

设我们有m个n维数据记录,将其按列排成n乘m的矩阵X,设

优化目标变成了寻找一个矩阵Y,满足YTCY是一个对角矩阵,并且对角元素按从大到小依次排列,那么Y的前K列就是要寻找的基,用Y的前K列组成的矩阵乘以X就使得X从M维降到了K维并满足上述优化条件。

A导可是只有5位考生,9个指标而已!在我们医学中!那可是上千的样本量,上万的基因数据

在医学领域中,我们可以用PCA图来进行 疾病危险因素分析,肠道菌群聚类分析,推断肿瘤亚群之间的进化关系还用它来观察样本的分组、趋势、剔除异常数据。

所以PCA图在文献中出现率还是蛮高的!!!不过遇到它我们怎么看?

深入了解PCA

识图秘籍

样本点连线 距离长 =样本之间差异性大

样本点连线 距离短 =样本之间差异性小

1、各样本点连线的距离:体现各国家蛋白摄入习惯的相似性。

2、主成分与原变量之间的关系:箭头对应的原始变量在投影到水平和垂直方向上后的值,可以分别体现该变量与PC1和PC2的相关性(正负相关性及其大小)(例如,Eggs对PC1具有较大的贡献,而Nuts则与PC1之间呈较大的负相关性)。

3、样本点和箭头之间的距离:反映样本与原始变量的关系。(对于图中用蓝色粗箭头所指的样本点而言,该国的蛋白质来源主要为Fruits and Vegetables)。

怎么样?有没有一种豁然开朗的感觉?

什么?还是懵?

没关系,继续看例子

主成分分析(英语:Principal components analysis,PCA)是一种统计分析、简化数据集的方法。

它利用正交变换来对一系列可能相关的变量的观测值进行线性变换,从而投影为一系列线性不相关变量的值,这些不相关变量称为主成分(Principal Components)。具体地,主成分可以看做一个线性方程,其包含一系列线性系数来指示投影方向。PCA对原始数据的正则化或预处理敏感(相对缩放)。

1、将坐标轴中心移到数据的中心,然后旋转坐标轴,使得数据在C1轴上的方差最大,即全部n个数据个体在该方向上的投影最为分散。意味着更多的信息被保留下来。C1成为第一主成分。

2、C2第二主成分:找一个C2,使得C2与C1的协方差(相关系数)为0,以免与C1信息重叠,并且使数据在该方向的方差尽量最大。

3、以此类推,找到第三主成分,第四主成分……第p个主成分。p个随机变量可以有p个主成分。

主成分分析经常用于减少数据集的维数,同时保留数据集当中对方差贡献最大的特征。这是通过保留低维主成分,忽略高维主成分做到的。这样低维成分往往能够保留住数据的最重要部分。但是,这也不是一定的,要视具体应用而定。由于主成分分析依赖所给数据,所以数据的准确性对分析结果影响很大。

使用统计方法计算PCA

以下是使用统计方法计算PCA的详细说明。但是请注意,如果利用奇异值分解(使用标准的软件)效果会更好。

我们的目标是把一个给定的具有 M 维的数据集X 变换成具有较小维度 L的数据集Y。现在要求的就是矩阵Y,Y是矩阵X Karhunen–Loève变换。

这应该是定性分析软件比如NVINO 做的图吧。

实际上就是看这些termS 之间是否有关联。 如果把这些components 分成3个catalogues 3类型,那么有些是有关联的,因为都在一个维面上或说可以分在一类。 有些既可以在第一类又可以在第二类, 旁边那些百分比是给个大概的印象,比如pc1 061 那么可以基本认可在这一个维面上的这个term 是可以属于一个principle component 的。 如果0,05这么小的概率的话,那么原来分的那些terms 可能需要重新归类,因为有些链接太紧密了。因为component下面都是terms 来定义的嘛

在前面我们学习了一种有监督的降维方法——线性判别分析(Linear Dscriminant Analysis,LDA)。LDA不仅是一种数据压缩方法还是一种分类算法,LDA将一个高维空间中的数据投影到一个低维空间中去,通过最小化投影后各个类别的类内方差和类间均值差来寻找最佳的投影空间。

本文介绍的主成分分析(Principe Component Analysis,PCA)也是一种降维技术,与LDA不同的是,PCA是一种无监督降维技术,因此PCA的主要思想也与LDA不同。LDA是一种有监督的分类兼降维技术,因此其最大化均值差最小化类内差的思想够保证在降维后各个类别依然能够很好地分开。但PCA只用来降维而无需分类,因此PCA需要考虑的是如何在降维压缩数据后尽可能的减少数据信息的损失。在PCA中使用协方差来表示信息量的多少,至于为什么能这么表示后面再进行介绍。下面我们从一些基本的线代知识开始。

在进行数据分析时我们的数据样本经常被抽象为矩阵中的一组向量,了解一些线代基础知识理解PCA非常重要,但在这里我们并不准备也不可能将所有的线代知识都罗列以便,因此这里我们仅会复习一些对理解PCA较为重要的东西。更多线代的内容可参考下面几个链接:

为了方便,我们这里以一个二维平面为例。

在前面我们说了,在数据处理时我们经常讲一个样本数据当作一个向量。在二维平面中,一个向量从不同的角度有不同的理解方式,例如对于向量 (-2, 3) T :

在我们描述任何东西的时候其实都是选择了一个参照系的,也即事物都是相对的,最简单的运动与静止(以静止的事物为参照),说一个有点意思的——人,人其实也是放在一个参考系中的,我们可以将其理解为生物种类系统,抛开这个大的系统去独立的定义人是很难让人理解的。向量也是这样的,虽然我们前面没有指明,但是上面的向量其实是在一个默认坐标系(或称为空间)中的,也即x,y轴,但是在线性代数中我们称其为基。在线代中任何空间都是由一组线性无关的(一维空间由一个基组成)基向量组成。这些基向量可以组成空间中的任何向量。

现在假设我们有如下一个矩阵相乘的式子:

因此,上面的例子可以有两种理解方式:

(1)如果我们将值全为1对角方阵视为标准坐标系,则它表示在 i=(1, -2) T 和 j=(3, 0) T 这组基底下的坐标 (-1, 2) T 在基底 (1, 0) T 、(0, 1) T 下的坐标,如下:

当我们讨论向量 (-1, 2) T 时,都隐含了一个默认的基向量假设:沿着x轴方向长度为1的 i,沿着y轴长度为1的j。

但是,(-1, 2) T 可以是任何一组基底下的向量。例如,他可能是i'=(2,1) T , j'=(-1, 1) T 这组基下的一个向量。此时他在我们默认坐标系 i=(1, 0) T ,j=(0, 1) T 下的计算过程如下:

我们可以从另一个角度理解基地变换的过程:我们先 误认为 (-1, 2) T 是坐标系i=(1, 0) T ,j=(0, 1) T 下的坐标,此时我们通过线性变换[[2, -1], [1, 1]](每个嵌套列表看做一行)把坐标轴i,j(基坐标)分别变换到了新的位置 i1=(2, 1) T , j1=(-1, 1) T (他们也是用默认坐标系表示的),即[2, -1], [1, 1]]。此时我们把“误解”转换成了真正的向量。如下:

在上面我们说了矩阵是一种变换,现在我们继续从这个角度来理解特征值和特征向量。为了方便理解,我们在这里做一个类比——将变换看作物理中的作用力。我们知道一个力必须有速度和方向,而矩阵对一个向量施加的变换也是一样的。考虑一下特征向量的定义:

上面介绍了一些基本的线性代数相关的知识,下面开始介绍PCA的原理。

上面我们讨论了选择不同的基可以对同样一组数据给出不同的表示,而且如果基的数量少于向量本身的维数,则可以达到降维的效果。但是我们还没有回答一个最最关键的问题:如何选择基才是最优的。或者说,如果我们有一组N维向量,现在要将其降到K维(K小于N),那么我们应该如何选择K个基才能最大程度保留原有的信息?

要完全数学化这个问题非常繁杂,这里我们用一种非形式化的直观方法来看这个问题。

为了避免过于抽象的讨论,我们仍以一个具体的例子展开。假设我们的数据由五条记录组成,将它们表示成矩阵形式:

其中每一列为一条数据记录,而一行为一个字段。为了后续处理方便,我们首先将每个字段内所有值都减去字段均值,其结果是将每个字段都变为均值为0(这样做的道理和好处后面会看到)。中心化的数据为:

通过上一节对基变换的讨论我们知道,这个问题实际上是要在二维平面中选择一个方向,将所有数据都投影到这个方向所在直线上,用投影值表示原始记录。这是一个实际的二维降到一维的问题。

那么如何选择这个方向(或者说基)才能尽量保留最多的原始信息呢?一种直观的看法是:希望投影后的投影值尽可能分散。

以上图为例,可以看出如果向x轴投影,那么最左边的两个点会重叠在一起,中间的两个点也会重叠在一起,于是本身四个各不相同的二维点投影后只剩下两个不同的值了,这是一种严重的信息丢失,同理,如果向y轴投影最上面的两个点和分布在x轴上的两个点也会重叠。所以看来x和y轴都不是最好的投影选择。我们直观目测,如果向通过第一象限和第三象限的斜线投影,则五个点在投影后还是可以区分的。

下面,我们用数学方法表述这个问题。

对于上面二维降成一维的问题来说,找到那个使得方差最大的方向就可以了。不过对于更高维,还有一个问题需要解决。考虑三维降到二维问题。与之前相同,首先我们希望找到一个方向使得投影后方差最大,这样就完成了第一个方向的选择,继而我们选择第二个投影方向。

如果我们还是单纯只选择方差最大的方向,很明显,这个方向与第一个方向应该是“几乎重合在一起”,显然这样的维度是没有用的,因此,应该有其他约束条件。 从直观上说,让两个字段尽可能表示更多的原始信息,我们是不希望它们之间存在(线性)相关性的,因为相关性意味着两个字段不是完全独立,必然存在重复表示的信息。

可以看到,在字段均值为0的情况下,两个字段的协方差简洁的表示为其内积除以元素数m。

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

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

上面我们导出了优化目标,但是这个目标似乎不能直接作为操作指南(或者说算法),因为它只说要什么,但根本没有说怎么做。所以我们要继续在数学上研究计算方案。

我们看到,最终要达到的目的与字段内方差及字段间协方差有密切关系。因此我们希望能将两者统一表示,仔细观察发现,两者均可以表示为内积的形式,而内积又与矩阵相乘密切相关。于是我们来了灵感:

假设我们只有a和b两个字段,那么我们将它们按行组成矩阵X:

然后我们用X乘以X的转置,并乘上系数1/m:

根据矩阵相乘的运算法则,这个结论很容易被推广到一般情况:

设我们有m个n维数据记录,将其按列排成n乘m的矩阵X,设C=1/m(XX T ),则C是一个对称矩阵,其对角线分别个各个字段的方差,而第i行j列和j行i列元素相同,表示i和j两个字段的协方差。

根据上述推导,我们发现要达到优化目前,等价于将协方差矩阵对角化:即除对角线外的其它元素化为0,并且在对角线上将元素按大小从上到下排列,这样我们就达到了优化目的 。这样说可能还不是很明晰,我们进一步看下原矩阵与基变换后矩阵协方差矩阵的关系:

设原始数据矩阵X对应的协方差矩阵为C,而P是一组基按行组成的矩阵,设Y=PX,则Y为P对X做基变换后的数据。设Y的协方差矩阵为D,我们推导一下D与C的关系:

现在所有焦点都聚焦在了协方差矩阵对角化问题上,有时,我们真应该感谢数学家的先行,因为矩阵对角化在线性代数领域已经属于被玩烂了的东西,所以这在数学上根本不是问题。

由上文知道,协方差矩阵C是一个是对称矩阵,在线性代数上,实对称矩阵有一系列非常好的性质:

1)实对称矩阵不同特征值对应的特征向量必然正交。

2)设特征向量λ重数为r,则必然存在r个线性无关的特征向量对应于λ,因此可以将这r个特征向量单位正交化。

则对协方差矩阵C有如下结论:

以上结论不再给出严格的数学证明,对证明感兴趣的朋友可以参考线性代数书籍关于“实对称矩阵对角化”的内容。

到这里,我们发现我们已经找到了需要的矩阵P:P = E T

P是协方差矩阵的特征向量单位化后按行排列出的矩阵,其中每一行都是C的一个特征向量。如果设P按照Λ中特征值的从大到小,将特征向量从上到下排列,则用P的前K行组成的矩阵乘以原始数据矩阵X,就得到了我们需要的降维后的数据矩阵Y。

PCA的特征向量的求解除了使用上述最大化方差的矩阵分解方法,还可以使用最小化损失法,具体可参见: 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA) 。

总结一下PCA的算法步骤:

设有m条n维数据。

LDA和PCA都用于降维,两者有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。

首先我们看看相同点:

我们接着看看不同点:

参考:

PCA的数学原理

线性代数的直觉

线性判别分析LDA原理总结

很多人隐约知道求解最大特征值,其实并不理解PCA是对什么东西求解特征值和特征向量。 也不理解为什么是求解特征值和特征向量。 要理解到Hinton对PCA的认知,需要跨过4个境界,而上面仅仅是第1个境界的问题。

为什么要理解PCA?

其实深度学习在成为深度学习以前,主要是特征表达学习, 而特征表达学习追溯到始祖象阶段,主要是无监督特征表达PCA和有监督特征表达LDA。 对了这里LDA不是主题模型的LDA,是统计鼻祖Fisher搞的linear discriminant analysis(参考“Lasso简史”)。 而Hinton在这方面的造诣惊人, 这也是为什么他和学生一起能搞出牛牛的 t-Distributed Stochastic Neighbor Embedding (t-SNE) 。

至于t-SNE为啥牛, 这里给两个对比, 然后我们再回到PCA,以后有机会再扩展!

t-SNE vs PCA: 可以看到线性特征表达的局限性

t-SNE 优于 已有非线性特征表达 Isomap, LLE 和 Sammon mapping

依然还记得2004年左右Isomap横空出世的惊奇, 再看t-SNE的诞生,真是膜拜! 也正是Hinton对PCA能理解到他的境界, 他才能发明t-SNE。

PCA理解第一层境界:最大方差投影

正如PCA的名字一样, 你要找到主成分所在方向, 那么这个主成分所在方向是如何来的呢?

其实是希望你找到一个垂直的新的坐标系, 然后投影过去, 这里有两个问题。 第一问题: 找这个坐标系的标准或者目标是什么? 第二个问题, 为什么要垂直的, 如果不是垂直的呢?

如果你能理解第一个问题, 那么你就知道为什么PCA主成分是特征值和特征向量了。 如果你能理解第二个问题, 那么你就知道PCA和ICA到底有什么区别了。

对于第一个问题: 其实是要求解方差最小或者最大。 按照这个目标, 你代入拉格朗日求最值, 你可以解出来, 主成分方向,刚好是S的特征向量和特征值! 是不是很神奇? 伟大的拉格朗日(参考 "一步一步走向锥规划 - QP" "一挑三 FJ vs KKT ")

现在回答了,希望你理解了, PCA是对什么东西求解特征值和特征向量。 也理解为什么是求解的结果就是特征值和特征向量吧!

这仅仅是PCA的本意! 我们也经常看到PCA用在图像处理里面, 希望用最早的主成分重建图像:

这是怎么做到的呢?

PCA理解第二层境界:最小重建误差

什么是重建, 那么就是找个新的基坐标, 然后减少一维或者多维自由度。 然后重建整个数据。 好比你找到一个新的视角去看这个问题, 但是希望自由度小一维或者几维。

那么目标就是要最小重建误差,同样我们可以根据最小重建误差推导出类似的目标形式。

虽然在第二层境界里面, 也可以直观的看成忽略了最小特征值对应的特征向量所在的维度。 但是你能体会到和第一层境界的差别么? 一个是找主成分, 一个是维度缩减。 所以在这个层次上,才是把PCA看成降维工具的最佳视角。

主成分分析(Principal Components Analysis,PCA) ,也称主分量分析或主成分回归分析法,是一种无监督的数据降维方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的 降维 。这种降维的思想首先减少数据集的维数,同时还保持数据集的对方差贡献最大的特征,最终使数据直观呈现在二维坐标系。

主坐标分析(Principal Coordinates Analysis,PCoA) ,即经典多维标度(Classical multidimensional scaling),用于研究数据间的相似性。

二者差异

PCA与PCoA都是降低数据维度的方法,但是差异在在于 PCA 是基于 原始矩阵 ,而 PCoA 是基于通过原始矩阵计算出的 距离矩阵 。因此,PCA是尽力保留数据中的变异让点的位置不改动,而PCoA是尽力保证原本的距离关系不发生改变,也就是使得原始数据间点的距离与投影中即结果中各点之间的距离尽可能相关。

基因表达量数据通过RSEM软件定量后得到

除转录组研究以外,在16S微生物的研究中我们会根据物种丰度的文件对数据进行PCA或者PCoA分析,也是我们所说的β多样性分析。根据PCA或者PCoA的结果看感染组和对照组能否分开,以了解微生物组的总体变化情况。

具体内容及绘图方法可参考下面这篇文章。

16s—β多样性分析(R画三维PCoA图)

R数据可视化4: PCA和PCoA图

详解主成分分析PCA

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/meirong/1950811.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-10-30
下一篇2023-10-30

随机推荐

  • 蜜丝佛陀三合一粉底液怎么样?

    蜜丝佛陀三合一粉底液妆感自然,哑光细腻,持妆不浮粉。那么蜜丝佛陀三合一粉底液怎么样蜜丝佛陀三合一粉底液好用吗试客背景职业:其他星座:巨蟹肤质:混合性妆龄:1年以下个性标签:其他彩妆风格:裸妆年龄:18-24岁发质:中性性别:女宝

    2024-04-15
    25900
  • 精华露和精华液的区别是什么

    精华露属于浓缩型的护肤产品,基本上小小的一瓶就可以使自己的皮肤变得水润且有光泽。精华液属于护肤产品的一种,通常来说它的作用是保湿补水,而且还有一些是添加抗皱美白的成分。其实它们的质地有着本质的不同,精华露属于浓缩后的高级护肤品像sk神仙水就

    2024-04-15
    17800
  • 妮维雅男士护肤品使用顺序

    妮维雅男士护肤品使用顺序在男士的日常护肤过程中,正确的使用顺序是非常重要的。这样不仅可以确保产品充分发挥功效,还能最大程度地满足皮肤的需要。对于妮维雅男士护肤品的使用顺序,以下是一些建议供参考。洁面是护肤过程中的第一步,也是最基础的一步。选

    2024-04-15
    13700
  • 神仙水和清莹露区别

    神仙水和清莹露区别如下:1、质地不同神仙水的质地是清爽不粘稠,水状;清莹露的质地是透亮清澈的水状,触感顺滑轻薄,水润感十足,没有香味。2、效果不同神仙水是一种精华水,化妆水后使用,上脸吸收快,不油腻,对闭口有一定作用,长期使用可以稳定肌肤,

    2024-04-15
    16800
  • 龙婆烈帕婴能不能和其它帕婴一起供

    不可以。怕烫和帕婴依霸古曼一起供奉基本是不可以的,建议不要供奉在一起,怕烫是音译,基本就是一种大鬼的东西,依霸又是招人缘,异性缘的阴牌,拍婴也是有正牌有阴,古曼童是经过净化的夭折小孩子的灵体,跟多时候是指正的古曼,而不是一些巫师制作的。

    2024-04-15
    9000
  • 只有祛痘面膜能治好痘痘没有疤的吗?

    有的面膜非常贵,但是效果并不比平价面膜好用多少,有的面膜超级便宜,还不到1块钱一片,这样的面膜你也不要买,因为用了还不如不用,一个是炒作概念坑钱,一个是没有任何有效成分的无用,所以都不值得购买,真正又好用又高质量的面膜价格都在中上等左右,这

    2024-04-15
    18600
  • vtv所有烟杆都有童锁么

    有的vtv电子烟按开关5下就可以开启和关闭。电子烟,其实并没有它宣传的那么好,说可以将烟草里面的烟毒全部都去除,所以抽了电子烟之后,人们还是有可能会出现肺部的问题,这是因为电子烟并不可能将烟里面的有害物质过滤掉,反而如果大家吸食了电子烟,还

    2024-04-15
    10100

发表评论

登录后才能评论
保存