PCA的数学原理(转)

首先我们直接给出PCA算法步骤:

设有m条n维数据。
1)将原始数据按列组成n行m列矩阵 X
2)将X的每一行(代表一个特征字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵 C = 1 m X X T
4)求出协方差矩阵的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6) Y = P X 即为降维到k维后的数据


PCA通过线性变换将原始数据变换成一组各维度线性无关的表示,可用于提取数据的主要特征分量。我们通过几个问题来一步步了解其过程

1、先了解一些数学概念

通常我们可以将一条样本数据表示成多维向量。我们需要知道在多维空间中,存在一组基可以用来表示这个多维空间。比如,二维空间可以使用 ( 1 , 0 ) , ( 0 , 1 ) 这两个二维向量来表示整个二维空间中的向量 ( x , y ) = x ( 1 , 0 ) + y ( 0 , 1 ) 。当然基不是唯一的,如 ( 1 / 2 , 1 / 2 ) , ( 1 / 2 , 1 / 2 ) 也可以构成一组基。

2、如何降维?

数据在不通过基底下可以表示成不同的矩阵,这个变换过程可以表示称

=

如果我们选择的新基数目少于原始基底,那么就可以做到降维的目的。因为数据的表示维度是由基决定的。

3、如何选择新基?

我们如何选择最优的新基,以保证我们的数据经过变换能最大程度保留原有的信息。还是以二维空间为例,我们可以将基矩阵变换看成在原始坐标系下,数据点对新的坐标系的投影。那么我们希望投影后的数据点尽可能地分开不要重合。如果点发生重合也就意味着信息缺失。

而这种分散程度可以使用数学上的方差来表示,所以问题变换成寻找新基使得数据变换后方差最大。

4、高维情形?

上面我们提到了在二维下,只需要找到使得方差最大的方向就行了。那么对于高维,完成了第一个方向的选择,我们需要选择第二个投影方向。

如果我们仍然选择方差最大的方向,那么很显然这个方向与第一个方向几乎重合在一起的。直观上看,让两个特征字段尽可能保留更多信息,那么我们希望它们之间线性无关,线性相关就是意味着字段存在重复信息。

5、如何表示相关性?

数学上使用协方差来表示变量之间的相关性,当协方差为0时,即选择的第二个基在第一个基正交的方向上选择是可以保证两个字段完全独立。

通过计算协方差矩阵 1 m X X T (需要经过0均值化处理,便于计算分析),可以发现对角线上是各个字段的方差,其他元素是它们的协方差。

那么问题就简单了,我们需要找到协方差矩阵对角化后,对角线上的k个最大特征值,对应的特征向量就是我们需要的基底。

以上就是对PCA算法的通俗描绘,转载自知乎。

猜你喜欢

转载自blog.csdn.net/wyisfish/article/details/80586495