PCA是一种对高维度数据进行降维的一种方法,为了能够了解PCA的具体过程,一些数学知识,比如:期望,标准差,方差,协方差,特征值,特征向量等都是必须了解的。不过不要怕,我这里先一个一个来介绍下这些概念。
PCA是一种常用的统计方法,什么是统计分析的过程?就是用样本数据的特征去代表整体数据特征,而统计就是来分析这个样本数据的特征(为什么要这样来做?而不是把全部数据拿来分析呢?因为全部数据量太大)
1:概念介绍
Ø 期望
在我们的一组离散数据中,期望就是平均值。
![](https://img-my.csdn.net/uploads/201209/28/1348810641_2444.png)
比如以下两组数据分别是某灯泡厂随即挑选出来的3个灯泡的寿命
A厂的如下:0,10,20。B厂的如下:9,10,11
那么我们衡量A和B就用期望来做即可。得到A的期望是10,B的期望也是10。
Ø 标准差
在期望中我们用期望对两组数据进行了分析,发现他们的平均寿命都是一样的,但是但看这些数据来看,只需要期望还是不够的,因为上面两组数据虽然期望值一样,但是数据特征还是有异同的,比如在上面两组数据中我们更希望需要的是第二组数据,因为第二组数据更“稳定”,也就是这些数据距离期望值差别都不大。为了描绘这个特征我们用标准差来衡量,标准差的定义是:样本点和期望距离和。我们用下面的等价公式来计算这个值:
(至于为什么分母是n-1,请阅读我的另外一篇日志:http://blog.csdn.net/silence1214/article/details/8012684)
Ø 方差
方差就是标准差的平方
Ø 协方差
在我们上面的分析中我们知道,期望,标准差,方差都是来衡量一维数据的特征的,二维的数据特征我们如何衡量呢?这里就要出现协方差了,协方差定义如下:
,协方差的值和X,Y的关系表达如下:
如果cov(X,Y)大于0,说明当X增大的时候Y也增加,反之一样
如果cov(X,Y)小于0,说明当X增大的时候Y是减小的,反之一样
如果cov(X,Y)等于0,则说明X和Y无关
Ø 特征值和特征向量
这个概念由于我们大学学习的课本的问题,其实很多人都知道怎么算的,甚至有的同学计算的时候可以寻找很多方法快速来计算,但是死活不知道实际的意义。这里根据我的个人理解以及别人的沟通用一句话来描述下特征值和特征向量的现实意义。根据寻求特征值和特征向量的公式:PX=λX,知道就是求可以在矩阵p下做变换后的向量x,和一个变量乘以它的值相等,这说明什么?一句话:就是寻找可以再P下进行变换的向量,变换后该向量的长度发生变化,方向不变。其实特征值和特征向量就是这个意思。
2:利用PCA进行数据降维步骤
Ø 我们这个地方用一个关于图像压缩的例子来阐述下PCA降维的过程。
给一副图片,宽窄都是n,则按照图片从第一行像素值,第二行像素值…直到第n行像素值连接成一行,保存称为行向量如下:
P=(x1,x2,…..xn2),它的维度是n2。
我们给予20副这样的图片,则20副图片经过处理行程一个20*n2的矩阵。
Ø 求协方差矩阵
协方差上面我们已经说过了,那么什么是协方差矩阵?给予一个矩阵A
我们定义,矩阵B如下
则A的协方差矩阵就等于B*BT。
文字表示上述过程就是,先对A的每行元素求平均值,然后每个元素减去改行的平均值行程中间矩阵,然后中间矩阵与它转置的乘积就是协方差矩阵,我们记做M
Ø 求协方差矩阵M的特征值和特征向量
因为20副图片的协方差矩阵M是20*20的,所以它的特征值有20个,对应20个特征向量,把这20个特征值从大到小排序,选择前n个特征值(n小于20)对应的特征向量组合成矩阵P=(p1,p2,…pn)。每一个pi是20维的列向量。这个时候我们把20个特征向量就叫做原始数据的主成分。每个向量是20维的。
Ø 得到经过PCA之后的原始数据
我们把经过PCA之后的原始数据叫做FinalData。则(FinalData)T=PT*MT.也就是说FinalData=M*P,由于M是20*20的,P是20*n的,所以FinalData是20*n的,因为n小于20。所以和之前对比节约了n/20的空间。
3:总结
个人觉得PCA主要是利用一些数据知识,对原始数据进行相应的坐标转换,最初的数据在一个坐标系上,你觉得相互之间点都有关系,但是当寻找另外的坐标系的时候会发现一些点可能距离很近也有可能重合,此时就可以把这些点省掉一些。。个人理解,不一定正确。
4:建议
我们之前做可视化总是直接对原始数据进行可视化,如果数据维度大可视难度是非常大的,其实可以做一些这样简单的变换,降低下数据维度,并且利用数学关系和模型来分析下到底和我们需要分析的哪些指标有关系,然后找到有关系的维度,去掉无关系的维度,既利于分析,也能得到真正有用的结果。