关于PCA的理解

来源:互联网 发布:上古卷轴5随从编程 编辑:程序博客网 时间:2024/06/06 07:47

PCA(principal compoment analysis)主成分分析,主要用在数据降维上,当数据的维数非常大的时候,无论是计算还是存储都是十分耗时的。因此,需要对数据进行降维处理,同时保持降维后的数据对于问题的描述能力。


一、主成分分析的引入


考虑一个简单的模型:



该实验的目的是记录绑在弹簧上的红色小球的运动轨迹,对于有先验知识的实验者来说,这个实验是非常容易的,因为球的运动轨迹只在x轴上发生,因此只需要在垂直于xy平面上架设摄像机即可。但是,在真实世界或者没有实验经验的人来说,是不可能这样假设的。一般来说,就需要记录下球的三维位置(X0,Y0,Z0)。可以通过不同角度的放置三个摄像机来实现(如图所示)。但是由于实验的限制,这三台摄像机的角度可能比较任意,并不是正交的。事实上,在真实世界中也并没有所谓的{x,y,z}轴,每个摄像机记录下的都是一幅二维图像,有其自己的空间坐标系,球的空间位置是由一组二维坐标记录的:[(xa,ya),(xb,yb),(xc,yc)]。经过一段时间后会产生非常多的数据,怎么样从这些数据中找到能够很好的描述球是沿着某个X轴运动的规律呢?怎么样将试验数据中的冗余变量剔除,划归到这个潜在的X轴上呢?同时数据中可能含有一定的噪音,比如摄像机的误差、弹簧的寿命等均会对数据产生影响。


PCA就是这样的一种有利工具。


二、PCA的数学推导过程

从线形代数的角度来看,PCA的目标就是使用另一组基去重新描述得到的数据空间。而新的基要能尽量揭示原有的数据间的关系。在这个例子中,沿着某轴上的运动是最重要的。这个维度即最重要的“主元”。PCA的目标就是找到这样的“主元”,最大程度的去除冗余和噪音的干扰。


1)标准正交基

为了引入推导,需要将上文的数据进行明确的定义。在上面描述的实验过程中,在每一个采样时间点上,每个摄像机记录了一组二维坐标(Xa,Ya),综合三台摄像机数据,在每一个时间点上得到的位置数据对应于一个六维列向量。

如果以200hz的频率拍摄10分钟,将得到10*60*200=120000个这样的向量数据。即矩阵X6×120000

抽象一点来说,每一个采样点数据X都是在m维向量空间(此例中m=6维)内的一个向量,这里的m是牵涉的变量个数。由线形代数我们知道,在m维向量空间中的每一个向量都是一组正交基的线形组合。最普通的一组正交基是标准正交基,实验采样的结果通常可以看作是在标准正交基下表示的。因为一般的观测者都是习惯于取摄像机的屏幕坐标,即向上和向右的方向作为观测的基准。也就是说,标准正交基表现了数据观测的一般方式。在线形代数中,这组基表示为行列向量线形无关的单位矩阵。


2)基变换

从更严格的数学定义上来说,PCA回答的问题是:如何寻找到另一组正交基,它们是标准正交基的线性组合,而且能够最好的表示数据集

提出PCA方法的一个最关键的假设:线性。这是一个非常强的假设条件。它使问题得到了很大程度的简化:1)数据被限制在一个向量空间中,能被一组基表示;2)隐含的假设了数据之间的连续性关系。

这样一来数据就可以被表示为各种基的线性组合。令X表示原数据集。是一个m*n的矩阵,它的每一个列向量都表示一个时间采样点上的数据,在上面的例子中,m=6,n=120000 。Y表示转换以后的新数据集表示,P是他们之间的线性变换:PX=Y


xi表示的是X中的列向量,pi表示的是P中的行向量,yi表示Y中的列向量,在线性代数中,他们的含义是:

P是从X到Y的转换矩阵;P对X进行旋转和拉伸得到Y;P的行向量{p1,p2..,pm}就是一组新的基,而Y是原数据Y在这组新的基表示下得到的重新表示。

在线性的假设条件下,问题转化为寻找一组变换后的基,也就是的行向量,这些向量就是PCA中所谓的“主元”。问题转化为如下的形式:

a)怎样才能最好的表示原数据X?

b)P的基怎样选择才是最好的?

解决问题的关键是如何体现数据的特征。那么,什么是数据的特征,如何体现呢?


3)良好的数据表示

好的数据表示应该反映数据的特征,而较差的数据会包含一些混乱数据如:噪音、旋转、冗余,接下来介绍一下数据的噪音、旋转、冗余。

a)噪音和旋转:

噪音对数据的影响是巨大的,如果不能对噪音进行区分,就不可能抽取数据中有用的信息。噪音的衡量有多种方式,最常见的定义是信噪比SNR(signal-to-noise ratio)或叫方差比:

比较大的信噪比表示数据的准确度高,而信噪比低则说明数据中的噪音成分比较多。那么怎样区分什么是信号,什么是噪音呢?这里假设,变化较大的信息被认为是信号(即方差大),变化较小的则是噪音(方差小,没有区分度)。事实上,这个标准等价于一个低通的滤波器,是一种标准的去噪准则。而变化的大小则是由方差来描述的。

它表示了采样点在平均值两侧的分布,对应于图表 2(a)就是采样点云的“胖瘦”。显然的,方差较大,也就是较“宽”较“胖”的分布(长黑线的方向),表示了采样点的主要分布趋势,是主信号或主要分量;而方差较小的分布则被认为是噪音或次要分量。


图表 2:(a)摄像机A的采集数据。图中黑色垂直直线表示一组正交基的方向(实验采用通常的观测方向)。σ2(signal)是采样点云在长线方向上分布的
方差(方差值较大),而σ2(noise)是数据点在短线方向上分布的方差(方差值较小)。(b)对P的基向量进行旋转使SNR和方差最大。仔细观测(b)的两个图,当基向量旋转到45度时,上方途中信号方差最大,同时下方图中信噪比也达到最大,其余在其他任何度数时都没有达到最大值。

假设摄像机A拍摄到的数据如图表 2(a)所示,圆圈代表采样点,因为运动理论上是只存在于一条直线上,所以偏离直线的分布都属于噪音。此时SNR描述的就是采样点云在某对垂直方向上的概率分布的比值。那么,最大限度的揭示原数据的结构和关系,找出某条潜在的,最优的x轴,事实上等价寻找一对空间内的垂直直线(图中黑线表示,也对应于此空间的一组基),使得信噪比尽可能大的方向。容易看出,本例中潜在的x轴就是图上的较长黑线方向。

那么怎样寻找这样一组方向呢?直接的想法是对基向量进行旋转。如图表 2(b)所示,随着这对直线的转动SNR以及方差的变化情况。应于SNR最大值的一组基p,就是最优的“主元”方向。


b)冗余:

有时在实验中引入了一些不必要的变量。可能会使两种情况:1)该变量对结果没有影响;2)该变量可以用其它变量表示,从而造成数据冗余。看下图


如图表 3所示,它揭示了两个观测变量之间的关系。(a)图所示的情况是低冗余的,从统计学上说,这两个观测变量是相互独立的,它们之间的信息没有冗余。而相反的极端情况如(c),r1和r2高度相关,r2完全可以用r1表示,一般来说,这种情况发生可能是因为摄像机A和摄像机B放置的位置太近或是数据被重复记录了,也可能是由于实验设计的不合理所造成的。那么对于观测者而言,这个变量的观测数据就是完全冗余的,应当去除,只用一个变量就可以表示了。这也就是PCA中“降维”思想的本源


有了对于数据表示衡量的准则,如何表示数据呢,在这个问题中,协方差矩阵包含了所有观测变量之间的相关性度量。更重要的是,根据前两节的说明,这些相关性度量反映了数据的噪音和冗余的程度。


4)PCA求解:特征根求解

在线形代数中,PCA问题可以描述成以下形式:

寻找一组正交基组成的矩阵P,有Y=PX,使得是对角阵(注意Y是变换后的矩阵,Cy是由Y再进行变换后的矩阵,Cy是优化后最后希望看到的矩阵)。则P的行向量(也就是一组正交基),就是数据X的主元向量。对Cy进行推导:

定义,则A是一个对称阵。

可对A进行对角化取特征向量得:则D是一个由特征值组成的对角阵,而E则是对称阵A的特征向量排成的矩阵。

这里要提出的一点是,A是一个m*m的矩阵,而他将有r(r<=m)个特征向量。其中r是矩阵A的秩,。如果r<m,则A即为退化矩。此时分解出的特征向量不能覆盖整个m空间,。此时只需要在保证基的正交性的前提下,在剩余的空间中任意取得m-r维正交向量填充E的空格即可。它们将不对结果造成影响。因为此时对应于这些特征向量的特征值,也就是方差值为零。

求出特征向量矩阵后我们取P=E,则,可推导出:


可知此时的P就是我们需要求得变换基,D就是线性变换后的目标,Cy即也是等同目标。至此我们可以得到PCA的结果:

a)X的主元即是XX'的特征向量,也就是矩阵P的行向量;

b)矩阵Cy对角线上第i个元素是数据X在方向Pi上的方差;


我们可以得到PCA求解的一般步骤:

1)采集数据形成m*n的矩阵,m为观测变量个数, n为采样点个数;

2)在每个观测变量(矩阵行向量)上减去该观测变量的平均值得到矩阵X;

3)对XX'进行特征分解,求取特征向量以及所对应的特征根。



三、matlab中的PCA应用

http://blog.csdn.net/wangzhiqing3/article/details/12193131


参考文献:

http://blog.csdn.net/wangzhiqing3/article/details/12193131

http://hi.baidu.com/leifenglian/item/abf63c11772020fe64eabf3f


0 0