主成分分析理论与MATLAB实现示例
2017.9.3
关于主成分分析,其实还是比较简单的,但是感觉网上的资料对于理论上的分析有些欠缺,这里自己整理一下,依然是追求严谨完整,另外再加上一个自己练习的示例。
1.基本思想
现实中的数据常常会以高维数据的形式出现。举个简单的例子:对于平面上一条过原点斜线上的一些点,一般地我们需要它的 (x,y) 坐标来描述,但是实际上对于这个数据结构,我们只要知道点在斜线上的位置,比如到原点的距离,就可以间接地确定点的坐标。事实上,上面的过程就把二维的数据 (x,y) 转变为了一维(点到原点的距离)。对于有几百上千个分量的数据,我们同样可以通过选取某些“主成分”来代表这些高维数据,自然地我们希望这些主成分能够尽可能多的表示出原本数据的信息。
2.方法
接着上面的思想,我们将面对三个问题:
- 1.如何描述变换后前数据承载的信息?
- 2.将高维坐标变换成主成分坐标应该是怎样一种变换?
- 3.如何使得主成分能尽可能多的代表原来数据的信息?
1:当数据很集中时,比如说都在一个点的小邻域内,数据之间差别很小,此时的数据除了体现出一个总体趋势(均值)外,没有产生其他信息,而如果数据是分散开的,那么就认为它带来了较多的信息。因此在主成分分析中,我们选取数据的方差来表示所携带的信息量。此外方差还有一个性质:数据的方差等于数据每个坐标上的方差之和。
2:无疑,对一组坐标进行变换有很多种方法,主成分分析提供的便是最常见的线性变换,各个主成分也就是变换后的坐标。进一步地,我们希望不同的“主成分”代表不同的信息,或者说,他们之间是“无关的”,即各个坐标的变换之间是相互正交的。到这里,我们很容易想到正交变换,正交变换除了能满足上面的要求时,还保持了变换前后方差不变(这是因为方差依赖于距离,而正交变换是保距离的),因此正交变换是一个十分合理的选择。
3:在第一个问题中我们就指出了,我们选取方差作为信息的度量,因此,要尽可能多的获得信息,换成数学语言,就是如下的优化问题:
设我们有数据 Xi=(Xi(0),⋯,Xi(m))∈Rm, i=1,⋯,n,X=(X1;⋯;Xn)∈Rn∗m ,最大化方差:
其中 |P|=1 是正交变换的要求, P 就是从原坐标变换到新的第一个坐标的变换系数。如果我们提前为了便捷起见,将数据减去均值