主成分分析(PCA )

关于主成分(PCA)分析,其实在上大学时就已经接触到了,当时感觉也没弄得十分清楚。前面花了点时间,来重新figure it out.

(1)真实的训练数据总是存在各种各样的问题:

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

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

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

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

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

对于上述问题,PCA能很好解决。

(2) PCA的原理

理论基础:在信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。

基本思想:主成分分析是采取一种数学降维的方法,找出几个综合变量来代替原来众多的变量,使这些综合变量能尽可能地代表原来变量的信息量,而且彼此之间互不相关。这种将把多个变量化为少数几个互相无关的综合变量的统计分析方法就叫做主成分分析或主分量分析。主成分分析所要做的就是设法将原来众多具有一定相关性的变量,重新组合为一组新的相互无关的综合变量来代替原来变量。通常,数学上的处理方法就是将原来的变量做线性组合,作为新的综合变量,但是这种组合如果不加以限制,则可以有很多,应该如何选择呢?如果将选取的第一个线性组合即第一个综合变量记为F1,自然希望它尽可能多地反映原来变量的信息,这里“信息”用方差Var(F1)来测量,即希望越大,表示F1包含的信息越多。因此在所有的线性组合中所选取的应该是方差最大的,故称为第一主成分。如果第一主成分不足以代表原来个变量的信息,再考虑选取即第二个线性组合F2,为了有效地反映原来信息,已有的信息就不需要再出现在中,用数学语言表达就是要求,称为第二主成分,依此类推可以构造出第三、四……第P个主成分。

几何解释:

(3)PCA 计算MATLABT代码

MATLAB本身提供了主成分分析函数,来进行PCA,然而为了更好理解PAC过程,下面的代码提供了Sequential Processes of PCA (example数据及代码已经上传至附件).

http://www.voidcn.com/blog/sungaochao/article/p-2340190.html

http://www.voidcn.com/blog/richeylee/article/p-6130556.html

需要强调两点:

A. X标准化协方差矩阵就是X的相关系数矩阵,所以上面第二个链接会有两种方法,这个很容易推导。

B. 关于是否需要对原始矩阵进行标准化处理的问题。

  主成分分析数据的标准化与非标准化的对比分析本质上就是对原始变量的协方差矩阵以及相关矩阵求解主成分进行对比分析。

一般而言,对于度量单位不同的指标或是取值范围彼此差异非常大的指标不直接由其协方差矩阵出发进行主成分分析,而应该考虑对数据的标准化。在本文中采用的例子就是度量单位不同,有万人、万吨、万元、亿元,而数据见的差异性也非常大,小则65.49大则13618179,。因此在用协方差矩阵求解主成分时存在协方差矩阵中数据的差异性很大。在后面提取主成分时发现,只提取了一个主成分,而此时并不能将所有的变量都解释到,这就没有真正起到降维的作用。但是在用相关矩阵求解主成分时发现,提取了两个主成分后可以很好地将所有变量都解释了,进而起到降维的作用,这就实现主成分分析的最终目的。但是对原始数据进行标准化后更倾向于各个指标的作用在主成分分析夫人构成中相等。对于数据取值范围不大或是度量单位相同的指标进行标准化处理后,其主成分分析的结果与仍由协方差矩阵出发求得的结果有较大区别。这是因为对数据标准化的过程实际上就是抹杀原是变量离散程度差异的过程,标准化后方差均为1,而实际上方差是对数据信息的重要概括形式,也就是说,对原始数据进行标准化后抹杀了一部分重要信息,因此才使得标准化后各变量在主成分构成中的作用趋于相等。因此,对同度量或是取值范围在同量级的数据,还是直接从协方差矩阵求解主成分为宜。

关于MATLAB自带的PCA分析函数:princomp(X),函数的用法参考下面(4),和上面的代码结果可以进行比较,来理解各个参数的意义。需要注意的是X是没有标准化的原始数据,而且同一特征值,对应无穷多个由基础特征向量线性组合的特征向量。

More details Plesase referring to the following documents:

(1)http://blog.csdn.net/whiteinblue/article/details/21071439

(2)http://blog.csdn.net/zhongkelee/article/details/44064401

(3)http://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html

(4)http://blog.sciencenet.cn/blog-936367-729746.html

Desktop.rar

One thought on “主成分分析(PCA )

Leave a Reply

Your email address will not be published. Required fields are marked *