再议PCA

之前对PCA学习之后做了一个总结,主要是从如何计算的角度来进行的,今天从PCA的概念出发,利用数学知识再从另外的一个角度对PCA做一个阐述:

1:PCA的主要作用:

PCA是用来对数据降维的,比如一个行向量X=(X1,X2,X3,…Xn)它的维度就是n,那么对它进行PCA之后要让它变成Y=(Y1,Y2,…Ym)同时m<n,并且Y能够最大程度代表离散数据X的特征。

2:PCA的数学表达:

对于一组数(以2维空间的数为例)比如

X=(X1,X2,X3,…Xn),每一个Xi是有一个2维的向量组成,它们在坐标系中的图如下:

PCA的主要任务就是找一个方向让这组数在这个方向上的投影的方差最大(简单的数就是投影到这个方向上之后最左边的点和最右边的点的距离最大)。

大家可以看到从目前图中来说,应该是在红色线上的投影的方差最大吧?我们的主要目标就是找到这样的方向,同时我们知道在坐标系中一个方向对应的就是个向量,而我们只需要这个方向而已,为了简单化这个问题我们把这个方向向量的摸取为1,同时又知道过坐标原点的向量最简单,所以为了能够找到这样的向量,那么需要我们一个操作就是0均值化(是不是想起来上次说过的再求PCA的时候需要先对每个维度的数据减去它们的平均值?这样做就是为了方便求这个方向,那么我们就先把这组数据0均值化后再来求这个方向)

经过上面的分析知道,我们要找的这个方向就是:

Max{E[(Y=wTX)2] }, s.t. ||w||2=1,只要同时满足这2个条件求出来的W,就是这个方向。(WTX就是X在W上的投影,我来展开下:一个向量再另外一个向量上的投影就等于[W,X]/|W|,W是单位向量所以就等于[W,X],内积展开就是wTX)

3:接下来就是求这个值了,看我下面的计算过程:

F=E[(Y=wTX)2]=E(WTXXTW)= WTXXTW/n=WT[(XXT)/n]W=WTE(XXT)W

可以知道F就是个2次型,2次型的极值问题还记得怎么求的吗?这里我不给出极值的证明过程,直接给出答案,感兴趣的可以参开下如何求解。如果C=XXT的n个特征值分别为

Λ1>Λ2>Λ3>….> Λn,并且依次对应的特征向量为e1`,e2,….,en,那么F的最大值就是Λ1,此时W的取值为e1。

4:至此我们得到了w,也就得到了方差最大的方向向量。

5:让X在W上投影就得到了这组数,如果把全部的w都找到并且分别投影那么就是全部的数据了。具体w选择几个,根据实际工程需要来,只要w的个数小于之前的维度都能够起到降维作用!