APP下载

人工智能基础-通过PCA主成分分析实现资料降维

消息来源:baojiabao.com 作者: 发布时间:2024-05-22

报价宝综合消息人工智能基础-通过PCA主成分分析实现资料降维

在写这篇之前,我阅读了PCA、SVD和LDA,这几个模型相近,却都有自己的特点。本篇打算先介绍PCA,至于他们之间的关系,只能是边学边体会了。PCA以前也叫做Principal factor analysis。

1. 问题

真实的训练资料总是存在各种各样的问题:

1、 比如拿到一个汽车的样本,里面既有以“千米/每小时”度量的最大速度特征,也有“英里/小时”的最大速度特征,显然这两个特征有一个多余。

2、 拿到一个数学系的本科生期末考试成绩单,里面有三列,一列是对数学的兴趣程度,一列是复习时间,还有一列是考试成绩。我们知道要学好数学,需要有浓厚的兴趣,所以第二项与第一项强相关,第三项和第二项也是强相关。那是不是可以合并第一项和第二项呢?

3、 拿到一个样本,特征非常多,而样例特别少,这样用回归去直接拟合非常困难,容易过度拟合。比如北京的房价:假设房子的特征是(大小、位置、朝向、是否学区房、建造年代、是否二手、层数、所在层数),搞了这么多特征,结果只有不到十个房子的样例。要拟合房子特征->房价的这么多特征,就会造成过度拟合。

4、 这个与第二个有点类似,假设在IR中我们建立的文件-词项矩阵中,有两个词项为“learn”和“study”,在传统的向量空间模型中,认为两者独立。然而从语义的角度来讲,两者是相似的,而且两者出现频率也类似,是不是可以合成为一个特征呢?

5、 在讯号传输过程中,由于通道不是理想的,通道另一端收到的讯号会有噪音扰动,那么怎么滤去这些噪音呢?

回顾我们之前介绍的《模型选择和规则化》,里面谈到的特征选择的问题。但在那篇中要剔除的特征主要是和类标签无关的特征。比如“学生的名字”就和他的“成绩”无关,使用的是互资讯的方法。

而这里的特征很多是和类标签有关的,但里面存在噪声或者冗余。在这种情况下,需要一种特征降维的方法来减少特征数,减少噪音和冗余,减少过度拟合的可能性。

下面探讨一种称作主成分分析(PCA)的方法来解决部分上述问题。PCA的思想是将n维特征对映到k维上(k2. PCA计算过程

首先介绍PCA的计算过程:

假设我们得到的2维资料如下:

行代表了样例,列代表特征,这里有10个样例,每个样例两个特征。可以这样认为,有10篇文件,x是10篇文件中“learn”出现的TF-IDF,y是10篇文件中“study”出现的TF-IDF。也可以认为有10辆汽车,x是千米/小时的速度,y是英里/小时的速度,等等。

第一步分别求x和y的平均值,然后对于所有的样例,都减去对应的均值。这里x的均值是1.81,y的均值是1.91,那么一个样例减去均值后即为(0.69,0.49),得到

第二步,求特征协方差矩阵,如果资料是3维,那么协方差矩阵是

这里只有x和y,求解得

对角线上分别是x和y的方差,非对角线上是协方差。协方差大于0表示x和y若有一个增,另一个也增;小于0表示一个增,一个减;协方差为0时,两者独立。协方差绝对值越大,两者对彼此的影响越大,反之越小。

第三步,求协方差的特征值和特征向量,得到

上面是两个特征值,下面是对应的特征向量,特征值0.0490833989对应特征向量为

这里的特征向量都归一化为单位向量。

第四步,将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵。

这里特征值只有两个,我们选择其中最大的那个,这里是1.28402771,对应的特征向量是

第五步,将样本点投影到选取的特征向量上。假设样例数为m,特征数为n,减去均值后的样本矩阵为DataAdjust(m*n),协方差矩阵是n*n,选取的k个特征向量组成的矩阵为EigenVectors(n*k)。那么投影后的资料FinalData为

这里是FinalData(10*1) = DataAdjust(10*2矩阵)×特征向量

得到结果是

这样,就将原始样例的n维特征变成了k维,这k维就是原始特征在k维上的投影。

上面的资料可以认为是learn和study特征融合为一个新的特征叫做LS特征,该特征基本上代表了这两个特征。

上述过程有个图描述:

正号表示预处理后的样本点,斜著的两条线就分别是正交的特征向量(由于协方差矩阵是对称的,因此其特征向量正交),最后一步的矩阵乘法就是将原始样本点分别往特征向量对应的轴上做投影。

如果取的k=2,那么结果是

这就是经过PCA处理后的样本资料,水平轴(上面举例为LS特征)基本上可以代表全部样本点。整个过程看起来就像将座标系做了旋转,当然二维可以图形化表示,高维就不行了。上面的如果k=1,那么只会留下这里的水平轴,轴上是所有点在该轴的投影。

这样PCA的过程基本结束。在第一步减均值之后,其实应该还有一步对特征做方差归一化。比如一个特征是汽车速度(0到100),一个是汽车的座位数(2到6),显然第二个的方差比第一个小。因此,如果样本特征中存在这种情况,那么在第一步之后,求每个特征的标准差

然后对每个样例在该特征下的资料除以

归纳一下,使用我们之前熟悉的表示方法,在求协方差之前的步骤是:

其中

是样例,共m个,每个样例n个特征,也就是说

是n维向量。

是第i个样例的第j个特征。

是样例均值。

是第j个特征的标准差。

整个PCA过程貌似及其简单,就是求协方差的特征值和特征向量,然后做资料转换。但是有没有觉得很神奇,为什么求协方差的特征向量就是最理想的k维向量?其背后隐藏的意义是什么?整个PCA的意义是什么?

3. PCA理论基础

要解释为什么协方差矩阵的特征向量就是k维理想特征,我看到的有三个理论:分别是最大方差理论、最小错误理论和座标轴相关度理论。这里简单探讨前两种,最后一种在讨论PCA意义时简单概述。

最大方差理论

在讯号处理中认为讯号具有较大的方差,噪声有较小的方差,信噪比就是讯号与噪声的方差比,越大越好。如前面的图,样本在横轴上的投影方差较大,在纵轴上的投影方差较小,那么认为纵轴上的投影是由噪声引起的。

因此我们认为,最好的k维特征是将n维样本点转换为k维后,每一维上的样本方差都很大。

比如下图有5个样本点:(已经做过预处理,均值为0,特征方差归一)

下面将样本投影到某一维上,这里用一条过原点的直线表示(前处理的过程实质是将原点移到样本点的中心点)。

假设我们选择两条不同的直线做投影,那么左右两条中哪个好呢?根据我们之前的方差最大化理论,左边的好,因为投影后的样本点之间方差最大。

这里先解释一下投影的概念:

红色点表示样例

蓝色点表示

在u上的投影。

u是直线的斜率也是直线的方向向量,而且是单位向量。蓝色点是

在u上的投影点。

离原点的距离是

或者

由于这些样本点(样例)的每一维特征均值都为0,因此投影到u上的样本点(只有一个到原点的距离值)的均值仍然是0。

回到上面左右图中的左图,我们要求的是最佳的u,使得投影后的样本点方差最大。

由于投影后均值为0,因此方差为:

中间那部分很熟悉啊,不就是样本特征的协方差矩阵么(

的均值为0,一般协方差矩阵都除以m-1,这里用m)。

来表示

表示

那么上式写作

由于u是单位向量,即

上式两边都左乘u得,

We got it!

就是

的特征值,u是特征向量。最佳的投影直线是特征值

最大时对应的特征向量,其次是

第二大对应的特征向量,依次类推。

因此,我们只需要对协方差矩阵进行特征值分解,得到的前k大特征值对应的特征向量就是最佳的k维新特征,而且这k维新特征是正交的。得到前k个u以后,样例

通过以下变换可以得到新的样本。

其中的第j维就是

上的投影。

通过选取最大的k个u,使得方差较小的特征(如噪声)被丢弃。

4. PCA理论意义

PCA将n个特征降维到k个,可以用来进行资料压缩,如果100维的向量最后可以用10维来表示,那么压缩率为90%。同样影象处理领域的KL变换使用PCA做影象压缩。但PCA要保证降维后,还要保证资料的特性损失最小。再看回顾一下PCA的效果。经过PCA处理后,二维资料投影到一维上可以有以下几种情况:

我们认为左图好,一方面是投影后方差最大,一方面是点到直线的距离平方和最小,而且直线过样本点的中心点。为什么右边的投影效果比较差?直觉是因为座标轴之间相关,以至于去掉一个座标轴,就会使得座标点无法被单独一个座标轴确定。

PCA得到的k个座标轴实际上是k个特征向量,由于协方差矩阵对称,因此k个特征向量正交。看下面的计算过程。

假设我们还是用

来表示样例,m个样例,n个特征。特征向量为e

表示第i个特征向量的第1维。那么原始样本特征方程可以用下面式子来表示:

前面两个矩阵乘积就是协方差矩阵

(除以m后),原始的样本矩阵A是第二个矩阵m*n。

上式可以简写为

我们最后得到的投影结果是

E是k个特征向量组成的矩阵,展开如下:

得到的新的样例矩阵就是m个样例到k个特征向量的投影,也是这k个特征向量的线性组合。e之间是正交的。从矩阵乘法中可以看出,PCA所做的变换是将原始样本点(n维),投影到k个正交的座标系中去,丢弃其他维度的资讯。举个例子,假设宇宙是n维的(霍金说是11维的),我们得到银河系中每个星星的座标(相对于银河系中心的n维向量),然而我们想用二维座标去逼近这些样本点,假设算出来的协方差矩阵的特征向量分别是图中的水平和竖直方向,那么我们建议以银河系中心为原点的x和y座标轴,所有的星星都投影到x和y上,得到下面的图片。然而我们丢弃了每个星星离我们的远近距离等资讯。

5. 总结与讨论

这一部分来自http://www.cad.zju.edu.cn/home/chenlu/pca.htm

PCA技术的一大好处是对资料进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对资料进行压缩的效果。同时最大程度的保持了原有资料的资讯。

PCA技术的一个很大的优点是,它是完全无引数限制的。在PCA的计算过程中完全不需要人为的设定引数或是根据任何经验模型对计算进行干预,最后的结果只与资料相关,与使用者是独立的。

但是,这一点同时也可以看作是缺点。如果使用者对观测物件有一定的先验知识,掌握了资料的一些特征,却无法通过引数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。

图表 4:黑色点表示取样资料,排列成转盘的形状。

容易想象,该资料的主元是

或是旋转角

如图表 4中的例子,PCA找出的主元将是

但是这显然不是最优和最简化的主元。

之间存在着非线性的关系。根据先验的知识可知旋转角

是最优的主元(类比极座标)。则在这种情况下,PCA就会失效。但是,如果加入先验的知识,对资料进行某种划归,就可以将资料转化为以

为线性的空间中。这类根据先验知识对资料预先进行非线性转换的方法就成为kernel-PCA,它扩充套件了PCA能够处理的问题的范围,又可以结合一些先验约束,是比较流行的方法。

有时资料的分布并不是满足高斯分布。如图表 5所示,在非高斯分布的情况下,PCA方法得出的主元可能并不是最优的。在寻找主元时不能将方差作为衡量重要性的标准。要根据资料的分布情况选择合适的描述完全分布的变数,然后根据概率分散式

来计算两个向量上资料分布的相关性。等价的,保持主元间的正交假设,寻找的主元同样要使

这一类方法被称为独立主元分解(ICA)。

图表 5:资料的分布并不满足高斯分布,呈明显的十字星状。

这种情况下,方差最大的方向并不是最优主元方向。

另外PCA还可以用于预测矩阵中缺失的元素。

2019-10-20 15:54:00

相关文章