前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【V课堂】R语言十八讲(十七)—主成分分析

【V课堂】R语言十八讲(十七)—主成分分析

作者头像
小莹莹
发布2018-04-23 10:15:35
6320
发布2018-04-23 10:15:35
举报

理解主成分分析这个模型前,可能需要一定的线性代数的知识,当然若没有基本也能看下去,只是可能比较困弄清楚,但这篇短文会尽可能给你的写得浅显易懂,不涉及太多公式推导,先让我们关注一下我们可能面对的问题,若在数据收集过程中有许多的字段,也叫变量吧,这些变量可能有几十上百个,那么我们怎么去理解这些变量间的关系了?如果两两去看,那得有几百个相关关系了,另外我们还会遇到这样的问题:

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

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

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

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

主成分分析便是一种降维的技巧,就是将大量相关的变量变成一组很少的不相关的变量,这些无关变量称之为主成分.

我们来看看这句话,注意几个关键词,大量相关的变量,很少不相关的变量.学过线性代数的应该了解这叫求最大线性无关组.其实把每个变量当做一个人,相关就是指两个人认识比较熟,不相关就是比较陌生.我们认为熟悉的人之间可以互相代表,所以若一组人之间都认识那么只需要一个人就可以代表这个组,那么最大线性无关组就是变成组里面只剩下相互陌生的人了,这个小组就能代表之前的大组.

而PCA的思想与之有些区别,PCA模型中的那个代表是另外构造的,并不是来自原先组中原本的特征,如果我们将每个特征看做一个维度的话,那么构造出的代表其实就是将原先的多维变成少量新的维度.也就是说PCA的思想是将n维特征映射到k维上(k<n),这k维是全新的正交特征。这k维特征称为主元,是重新构造出来的k维特征,而不是简单地从n维特征中去除其余n-k维特征。

接下来我们来看看主成分分析的计算过程:

假设我们得到的2维数据如下:

行代表了样例,列代表特征,这里有10个样例,每个样例两个特征。可以认为有10辆汽车,x是千米/小时的速度,y是英里/小时的速度,等等。

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

第二步,这里只有x和y,求解得

第三步,求协方差的特征值和特征向量,注意是协方差矩阵的特征值和特征向量,得到

上面是两个特征值,下面是对应的特征向量,这里的特征向量都归一化为单位向量。

第四步,将特征值按照从大到小的顺序排序,选择其中最大的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维上的投影。形成的新特征,该特征基本上代表了这两个特征。

那么理论基础是什么了?我们来简单讲讲其中一个:

比如下图有5个样本点:(已经做过减去均值处理,均值为0,特征方差归一,也就是把坐标系原点移到数据的中点)我们来想象这个坐标系的X轴代表一个特征人的身高,y轴代表另一个特征人的体重,这两个特征是不是有很大的相关性啊.其中的每一个点代表一个人.如果我们按照X轴也就是身高来区分这几个人,其实可以区分,但是当数据量比较集中时也就是方差较小时,根本没办法区分,大家身高都差不多吗,体重也是,你看Y轴还有几个人体重一模一样了.

下面将样本投影到某一维上,这里用一条过原点的直线表示,这条直线是另外一个特征,我们假设是身高与体重的一个加权组合吧,就管它叫什么形体美的程度吧,我们发现基本上几个人很好的区分开来了,如左图都比较离散,也即是方差比较大.而右边构建的新特征就不好,没有很好区分.用数学来说就是方差较小.

那么我们的目的就很明确的,就是要找到新特征,其能很好的区分样本,数学上就是投影后方差比较大,具体的计算过程就如同上面讲的求协方差矩阵,计算特征值和特征向量,然后找到大的特征值,与对应的特征向量,组成的矩阵,这几个特征向量是正交的,也就是互相垂直的(因为协方差矩阵是对称阵).然后将样本矩阵与之相乘即可.具体是怎么推导的,就不写了,因为涉及到很多线性代数的知识,感兴趣可以自己看.好了,这就是主成分分析的大致原理和过程.,当然原理我只介绍了一个,下篇我将会介绍另一个,并在R中实现主成分分析.欢迎继续阅读.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PPV课数据科学社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档