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

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

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中实现主成分分析.欢迎继续阅读.

原文发布于微信公众号 - PPV课数据科学社区(ppvke123)

原文发表时间:2016-07-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

业界 | 似乎没区别,但你混淆过验证集和测试集吗?

选自Machine Learning Mastery 机器之心编译 参与:蒋思源 很多机器学习入门者对测试集和验证集的概念有所混淆,甚至很多机器学习开发工程师常...

3085
来自专栏用户2442861的专栏

深层学习为何要“Deep”(上)

http://blog.csdn.net/u010751535/article/details/52739803

2331
来自专栏大数据挖掘DT机器学习

手把手教你理解EM算法原理

作者:Rachel Zhang 百度深度学习实验室RD,关注计算机视觉,机器学习,算法研究,人工智能, 移动互联网等学科和产业. 在聚类中我们经...

4039
来自专栏PPV课数据科学社区

常见面试之机器学习算法思想简单梳理

前言:   找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据...

3574
来自专栏SIGAI学习与实践平台

视觉多目标跟踪算法综述(上)-附开源代码下载链接整理

目标跟踪是机器视觉中一类被广为研究的重要问题,分为单目标跟踪与多目标跟踪。前者跟踪视频画面中的单个目标,后者则同时跟踪视频画面中的多个目标,得到这些目标的运动轨...

9462
来自专栏喔家ArchiSelf

全栈必备 贝叶斯方法

对一个全栈老码农而言,经常在开发或者研发管理的时候遇到各种预测、决策、推断、分类、检测、排序等诸多问题。面对“你的代码还有bug么?”这样的挑战,一种理智的回答...

1103
来自专栏CDA数据分析师

机器学习算法一览

引言 提起笔来写这篇博客,突然有点愧疚和尴尬。愧疚的是,工作杂事多,加之懒癌严重,导致这个系列一直没有更新,向关注该系列的同学们道个歉。尴尬的是,按理说,机器学...

3409
来自专栏专知

【深度学习进阶模型详解】概率图模型/深度生成模型/深度强化学习,复旦邱锡鹏老师《神经网络与深度学习》教程分享05(附pdf下载)

【导读】复旦大学副教授、博士生导师、开源自然语言处理工具FudanNLP的主要开发者邱锡鹏(http://nlp.fudan.edu.cn/xpqiu/)老师撰...

7806
来自专栏数据科学与人工智能

【机器学习】机器学习算法基础知识

在我们了解了需要解决的机器学习问题的类型之后,我们可以开始考虑搜集来的数据的类型以及我们可以尝试的机器学习算法。在这个帖子里,我们会介绍一遍最流行的机器学习算法...

2148
来自专栏新智元

Adobe 写实深度摄影风格迁移,局部仿射解决画面扭曲

【新智元导读】康奈尔大学和 Adobe 团队的这项图像风格迁移研究,解决了神经网络风格迁移中由于参考图像风格夸张而产生的的输出图像“扭曲”的问题,在各种场景下得...

3205

扫码关注云+社区

领取腾讯云代金券