PCA

PCA是一种无参数的数据降维方法。

首先看如下一张图


屏幕快照 2018-03-11 下午4.55.51.png

这是一组二位数据图,这些数据形成一个椭圆形状的点阵,那么这个椭圆有一个长轴和一个短轴。在短轴方向上,数据变化很少;在极端的情况,短轴如果退化成一点,那只有在长轴的方向才能够解释这些点的变化了;这样,由二维到一维的降维就自然完成了。
数据在u1上的投影代表了原始数据的绝大部分信息,即使不考虑u2,信息损失也不多。而且,u1、u2不相关。只考虑u1时,二维降为一维。

PCA步骤

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

方差

从最上面的图来看,选择u1是因为数据投影在u1上方差最大,这样损失数据最小。

内积的几何意义
7377512-e38afc6c4052b15b.png

内积的一般形式如下,


屏幕快照 2018-03-11 下午5.48.13.png

假设A和B均为二维向量,则A=(x1,y1),B=(x2,y2),在二维中也可以这样表示。


屏幕快照 2018-03-11 下午5.43.49.png

设向量B的模为1,则A与B的内积值等于A向B所在直线投影的矢量长度。

7377512-b7d2d7000488ff47.png

在通常的坐标系中,(0,1),(1,0)为基,那么我们可以通过改变基来确定新的坐标系,比如改变为(1,1),(-1,1)就可以得到如下紫色部分。根据内积的意义,我们只要分别计算(3,2)和两个基的内积,不难得到新的坐标为(5/√2,-1/√2)。


7377512-fc702f1a62b4c27a.png

那么降唯是怎么操作的呢?很明显,从最开始的图来看,如果我们把坐标系中的x轴变换的和长轴重合。那么此时,就由二维变为一维了,因为y轴情况变换较小,变化情况几乎只有x轴。


1485048-51fa34ea1a0029e1.png
基变换的矩阵表示

矩阵相乘的物理解释:两个矩阵相乘的意义是将右边矩阵中的每一列列向量变换到左边矩阵中每一行行向量为基所表示的空间中去。更抽象的说,一个矩阵可以表示一种线性变换。

一般的,如果我们有M个N维向量,想将其变换为由R个N维向量表示的新空间中,那么首先将R个基按行组成矩阵A,然后将向量按列组成矩阵B,那么两矩阵的乘积AB就是变换结果,其中AB的第m列为A中第m列变换后的结果。(新基按行,向量按列)

特别要注意的是,这里R可以小于N,而R决定了变换后数据的维数。也就是说,我们可以将一N维数据变换到更低维度的空间中去,变换后的维度取决于基的数量。因此这种矩阵相乘的表示也可以表示降维变换。

协方差

clip_image002[8]

协方差的结果有什么意义呢?比如,一个男孩子的猥琐程度跟他受女孩子的欢迎程度是否存在一些联系。协方差就是这样一种用来度量两个随机变量关系的统计量。
如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐越受女孩欢迎。如果结果为负值, 就说明两者是负相关,越猥琐女孩子越讨厌。如果为0,则两者之间没有关系,猥琐不猥琐和女孩子喜不喜欢之间没有关联,就是统计上说的“相互独立”。

一般从二维到一维的降维,只需要找到一个一维基使得方差最大,但是三维降到二维呢?我们需要找到两个基让这个三维数据投影到两个基上,如果我们找方差最大的两个基,会发现他们完全一样或者线性相关,这和一个基没什么区别,不能表达更多的信息,所以我们需要添加限制条件,我们希望这两个基彼此线性无关,扩展到K个基也是一样。所以我们让这两个基相互正交。

至此,我们得到了降维问题的优化目标:

将一组N维向量降为K维(K大于0,小于N),其目标是选择K个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽可能大(在正交的约束下,取最大的K个方差)。

协方差矩阵

假设数据集有三个维度,则协方差矩阵为:

clip_image002[20]

可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度的方差。

协方差矩阵对角化

假设我们只有a和b两个特征(已经进行过零均质化,方差为0),那么我们将它们按行组成矩阵X:


gif.latex.gif

gif.latex.gif

然后我们用X乘以X的转置,并乘上系数1/m:

根据上述推导,我们发现要达到优化目前,等价于将协方差矩阵对角化:即除对角线外的其它元素化为0,并且在对角线上将元素按大小从上到下排列,这样我们就达到了优化目的。

设原始数据矩阵X对应的协方差矩阵为C,而P是一组基按行组成的矩阵,设Y=PX,则Y为X对P做基变换后的数据。设Y的协方差矩阵为D,
gif.latex.gif

优化目标变成了寻找一个矩阵P,满足PCPT是一个对角矩阵。
并且对角元素按从大到小依次排列,那么P的前K行就是要寻找的基,用P的前K行组成的矩阵乘以X就使得X从N维降到了K维并满足上述优化条件。

在线性代数上,实对称矩阵有一系列非常好的性质:
1)实对称矩阵不同特征值对应的特征向量必然正交。
2)设特征向量λ重数为r,则必然存在r个线性无关的特征向量对应于λ,因此可以将这r个特征向量单位正交化。

如下图,E为列向量是单位化的特征向量,其中Λ为对角矩阵,其对角元素为各特征向量对应的特征值(可能有重复)。

gif.latex.gif

那么我们寻找到了需要的矩阵P:


gif.latex.gif

如果设P按照Λ中特征值的从大到小,将特征向量从上到下排列,则用P的前K行组成的矩阵乘以原始数据矩阵X,就得到了我们需要的降维后的数据矩阵Y。

主成分分析(PCA)的推导与解释

你可能感兴趣的:(PCA)