降维--主成分分析(PCA)

1 引言

主成分分析(Principal Component Analysis, PCA)是一种经典又常用的数据降维算法(注意这里的降维是指特征提取 ,有时也称子空间学习,还有一支叫特征选择,有兴趣可参这篇博客),它的主要思想是寻找数据分布方差最大的投影方向,初次听好像也不太好理解,那就上个图瞧瞧咯。


图1
图1

如图1标注出了信号和噪音的方差方向。我们找数据变化大的方向,变化大则含信息量大,所以认为它代表信号方向,而认为小的数据波动是由噪音引起。事实上,有个叫信噪比的指标:SNR=σsignal2/σnoise2SNR 越大(1 ),说明信息越准确噪音越少。图中用x,y座标轴来描述这些数据点的位置,如果我们忽略次要因素,抓主要矛盾,就可以用一个沿着信号方向的轴(投影方向),来刻画这些点,虽然可能会损失一些有用的信息,但是这个过程中我们简化了问题,实现了降维:从二维到一维。

小结一下降维大法的好处:降维可以去除数据中的冗余特征,相应也可减少数据存储空间,更重要的是,方便后续各种算法对数据的进一步处理、分析!这一小节到这里本应结束,但我还想再上个酷炫的图,已超出PCA范畴,可跳过不看。


这里写图片描述
图2

如图2A,把一张“彩色的纸”卷起来。如图2B,在纸上随机选取一些数据。如图2C,把纸摊开。不同的颜色代表不同的类别,在现实生活中,数据的呈现形式往往是这个B样子,不仅需要在更高维的空间中描述它们,而且往往导致数据更难区分(同类数据间的欧式距离甚至比非同类的距离都大),所以最好就是找到简单又好分的数据本质的分布空间如C,这种B到C的降维技术就是传说中的流形学习(manifold learning),典型代表有LLE,LPP,NPE等,在此按住不提,总之流行学习是关注局部结构,而PCA关注的是全局。

2 目标函数及求解

上一节简要介绍了PCA的思想,提到了PCA就是找方差大的方向,这一节就是解决怎样来找这些方向。在机器学习模型中,常针对一个要求解的问题,提出若干准则,以此提出一个目标函数,再在数学上对目标函数进行优化,得出问题的解。PCA的准则是,让投影后的数据分布方差尽可能大,所以PCA的目标函数可以这样定义:

(2.1)max1ni=1n(yiy¯)2=maxwTw=11ni=1n(wTxi)2=maxwTw=1wT(1nXXT)w=maxwTw=1wTCxw
其中,wRd 表示投影方向,yi=wTxi 是投影后的数据点,X=[x1,,xn]Rd×n 是数据矩阵,且我们假设它已经被零均值化处理过,即x¯=1nixi=0 ,也自然有y¯=0Cx 就是协方差矩阵,有时也用修正后的,即Cx=1n1XXT 。关于正交约束,可以这样简单理解,一个作用是使目标式子有解,限制w 的变化范围,另一个作用是选择标准化的座标轴,接下来会再提到。

上面是学了一个投影方向(也称子空间),即把数据降成一维,如果要学多个投影方向,很自然地,我们可以让它们的和最大,即:

(2.2)maxj,wjTwj=1j=1cwjTCxwj=maxWTW=IcTr(WTCxW)
这里,W=[w1,,wc]Rd×c 是投影矩阵,IcRc×c 表示单位矩阵,正交约束使得各投影方向自身是标准化的,且它们之间是两两正交的,为什么要正交,可简单类比我们常用x,y轴表示平面上的点,用xyz轴表示三维空间中的点,都是为了使问题简化而已。

现在就要来求解上述提出的目标式子,更一般地,我们直接对式(2.2)进行操作。设ΛRc×c 为拉格朗日乘子,式(2.2)的拉格朗日函数为:

(2.3)J(W)=Tr(WTCxW)Tr(Λ(WTWIc))
求导并置零得:
(2.4)J(W)W=2CxWW(Λ+ΛT)=0
Λ~=12(Λ+ΛT) ,有CxW=WΛ~ 。所以,W 就是CX 的特征向量矩阵,Λ~ 是对应的特征值组成的对角矩阵。J(W)=Tr(WTWΛ~)=Tr(Λ~) ,要最大化J(W) ,自然取Cx 的前c 个最大的特征值,相应地,W 就是由Cx 的前c 大特征值对应的特征向量按列组成的矩阵。通过投影矩阵W ,数据从d 维降低到c 维。

关于主成分个数(c ),通常根据需要保留的方差百分比,即需要保留的信息量来确定。比如我们要保留99%的信息量,将λ 从大到小排列,即λ1>λ2>>λn ,找到最小的k ,使满足:

j=1kλjj=1nλj0.99

3 再理解

上一节,我们走完了机器学习中传统的目标引出和公式推导过程,这一节中,我们尝试从另外几个角度来剖析PCA,感受一下殊途同归。

3.1 特征值分解

前面已经引出了协方差的概念,在概率论和统计学中,协方差用于衡量变量之间的总体误差,方差是协方差的特例,即两个变量相同情况下的协方差。在协方差矩阵中,对角线元素对应了各变量自身的方差大小,非对角线元素就是不同变量之间的协方差。如果两个变量是统计独立的,那么两者之间的协方差就是0。(为了避免侧重点跑偏,关于协方差的具体内容在此不做展开,有兴趣可自行谷歌/百度)

所以我们可以直接拿协方差矩阵做文章,简单分析一下,我们想要的协方差矩阵应该是介个样纸的:对角线元素尽可能大,非对角线元素尽量为0,即协方差矩阵最好是一个对角阵。原始数据X ,对应原始协方差矩阵CxCx 通常含有冗余特征,即非对角,现在我们想要通过一个投影变换Y=WTX ,使得降维后新数据的协方差矩阵Cy=WTCxW (近似)为对角阵。注意Cx 实对称,是一个正规矩阵(满足ATA=AAT,ARn×n ),根据矩阵论的知识,一定可以对角化:D=PTCxP ,其中PRd×dCx 的特征向量按列组成,且P 是个正交阵,DRd×d 是对应的特征值组成的对角矩阵。嘿!这不就是我们想要的对角矩阵嘛,对比Cy=WTCxW ,我们可令WP 的某c 列按列组成,因为我们想要对角元素尽可能大,这c 列自然是对应Cx 的前c 大特征值的列(特征向量),跟上一节中推导的结果一致!

3.2 奇异值分解(SVD)

SVD(singular value decomposition),即奇异值分解,跟上一小节的特征值分解有很大关联,我们不妨先来对比一下两者:

方法 表示 说明
特征值分解 A=PΛP1 A 是方阵,P 可逆但不需要是正交阵,Λ 不需要是半正定阵(因为可以有λ<0 )
SVD A=UΣVT A 不需要为方阵, U,V 是正交阵,Σ 为半正定阵(因为奇异值 0)

【注】方阵A 半正定:xRn ,有xTAx0

Y~=1nXT ,则有Y~TY~=1nXXT=Cx 。对Y~ 进行SVD:Y~=UΣVT ,那么V 就包含了YTY 也即Cx 的特征向量。SVD这个角度更多地是为了求解的方便(即已知我们要求解的投影方向就是协方差矩阵的特征向量),在数值计算上,SVD比特征值分解要稳定一些,而且对一个n×n 的矩阵进行特征分解的计算复杂度高达O(n3)

补充:不难发现,对于一个对称半正定矩阵A (保证了可对角化和特征值0 ),特征分解和奇异值分解是等价的,因为A=PΛPT 既可以看做是特征分解,也可以看做是U=V 时的奇异值分解,此时A 的特征值=奇异值。无巧不成书,幸运的我们幸运地发现,Cx 正是这样一个对称半正定阵!所以实际上,我们对Cx 进行特征分解或者SVD都是可以得到投影方向滴

3.3 数据重构

也可从数据重构的角度来看待PCA,主要思想是将投影后的数据重新投影回原空间,使得数据的重构误差最小,公式化表述就是:

(3.1)minWRd×cXWWTXF2s.t.wiTwj=0(ij),wiTwi=1
首先,如果我们保留100%的信息量,即选择的主成分个数c 就等于原始维度d ,相当于不降维,Wd×d 大小的正交矩阵,有WWT=Id ,此时重构误差为0。下面,我们来证明式(3.1)等价于式(2.2)。
(16)(3.1)minWTW=IcTr(XWWTX)T(XWWTX)(17)maxWTW=IcTr(XTWWTX)(18)maxWTW=Ic1nTr(WTXXTW)(2.2)
【注】上面第一个等价就是按定义展开,第二个是去掉了一些无关的常数项,不影响最大或最小问题的解,第三个用到了迹的性质Tr(AB)=Tr(BA)。

3.4 低秩近似

还有一种观点,认为PCA是找一个低秩矩阵来近似数据矩阵,用欧式距离来衡量的话,就是:

(3.2)minrank(Z)=cXZF2.
根据满秩分解,ZRd×n 可以分解为:Z=UVT ,其中URd×c,VRn×c ,且有UTU=Ic 。式(2.2)可以改写为:
(3.2)minUTU=Ic,VXUVTF2.
这里,U 可以看做是d 维空间的c 个基,V 可以看做是数据点在该空间中的(低维)表达。下面我们还是来把式(3.2)跟式(2.2)联系起来。式(3.2)对V 求偏导并置零,可得V=XTU ,代回(3.2)中可得:
(3.3)maxUTU=IcTr(UTXXTU).
又回到最初的起点啦,即PCA现在跟低秩近似也联系起来了。

4 拓展

对本节内容如果有兴趣但没时间仔细看过程,大概浏览一下结论就行,这一节主要就是输出一种认识,学习和生活中,不要轻易小瞧看似简单的人/物,觉得自己了然了看穿了,可能只是因为自己还在雾中。

4.1 PCA与Kmeans

PCA是经典的降维算法,Kmeans是经典的聚类算法,在这一小节里,咱们来瞅瞅它们两个在私底下会不会有什么基情。Kmeans大意是先随机给定一些聚类中心,然后依据数据点距聚类中心的远近给数据分配簇标签,然后计算新的聚类中心,然后再重新分配,然后再计算,再分配……最终聚类中心会移动到一个比较好的位置,使得数据点距聚类中心的距离的平方和比较小。对,就是根据距离的平方和作为准则的,所以目标函数自然可以这样写:

(4.1)minCkk=1KiCkximk2
这就是我们常见的Kmeans目标式,其中K 表示簇的个数,Ck 表示第k 个簇的数据点集合,mk=iCk1nkxi 表示第k 个簇的聚类中心,nk 表示第k 个簇中的数据点个数。仅通过(4.1)好像看不出什么名堂,那我们就来变一变,看能不能写出更简便的表达式,因为是要找跟PCA之间的关系,所以联想PCA的目标式,看能不能跟(2.2)套一下近乎。下面是公式推导:
(28)(4.1)mink=1KiCk(xiTxi2xiTmk+mkTmk)(29)mini=1nxiTxi2k=1KiCkxiTmk+k=1KnkmkTmk(30)mini=1nxiTxik=1KiCkxiTmk(nkmkTmk=iCkxiTmk)(31)mini=1nxiTxik=1K1nki,jCkxiTxj(32)minTr(XTX)Tr(HTXTXH)(33)maxHTH=I,H0Tr(HTKH)(4.2)
其中引入了一个指示(或标签)矩阵HRn×k ,如果xi 是第j 个簇的,则Hij=1/nk ,否则为0。比如现在有5个样例分别属于两个簇,前两个属于第一个簇,后三个属于第二个簇,则H 长这个样纸:
[1/21/2000001/31/31/3]T
K=XTX 是相似度矩阵,这里是采用的标准内积线性核,也可以扩展到其它核,在此不做赘述。到这里可以小激动一下,因为式(4.2)相比式(4.1)不仅看起来简明多了,而且看上去跟我们目标式(2.2)长得很像,那式(4.2)的解跟式(2.2)的解怎么联系起来呢?还记得上一节中说的特征值分解和SVD分解吧,我们再把它们拿出来瞧瞧(此处忽略Cx 中的1n ,且不考虑Cx 不可逆的情况):
(34)X=UΣVT(35)Cx=XXT=UΛUT(36)K=XTX=VΛVT
上面URd×c 就是PCA中要求的投影矩阵WV 是式(4.2)松弛非负约束后的指示矩阵H 。从第一行中的式子可以知道,V=XTUΣ1 ,这说明了什么啊,说明PCA实际上是在进行一种松弛化的Kmeans聚类,簇的指示矩阵就是投影后的数据矩阵(再缩放一下)

拓展的拓展:1)kernel Kmeans跟谱聚类(spectral clustering)有关系;2)实际上,XXT 也叫总体散度矩阵,XHHTXT 可参见线性判别分析LDA,它是另一种经典的降维算法,PCA是无监督的,LDA是有监督。所以Kmeas实际上在minHTr(Sw) ,这里Sw=StSb 是类内散度矩阵。3)LDA是已知标签,调整投影矩阵,Kmeans是调整标签。

4.2 Robust PCA

关于鲁棒PCA这个方向,也有很多研究成果,这里只简单地提一种思路,是关于用1 -norm替代2 -norm的,这是一种在机器学习中内十分常用的手法,用于实现鲁棒性或稀疏性。涉及到范数,我们先把式(2.2)改写一下:

(4.1)minWTW=Ic1ni=1nWTxi22
那么鲁棒PCA就是:
(4.1)minWTW=Ic1ni=1nWTxi1
关于求解的问题超出本文范畴,感兴趣地可以看相关论文。

主要参考文献

【1】Shlens J. A Tutorial on Principal Component Analysis[J]. 2014, 51(3):219-226.
【2】http://ufldl.stanford.edu/tutorial/unsupervised/PCAWhitening/
【3】Ding C H Q, He X. Principal Component Analysis and Effective K-Means Clustering[C]. SIAM ICDM. DBLP, 2004:126–143.
【4】Masaeli M, Yan Y, Cui Y, et al. Convex Principal Feature Selection[C]. SIAM ICDM. DBLP, 2010:619-628.
【5】Nie F, Yuan J, Huang H. Optimal mean robust principal component analysis[C]. ICML. 2014:1062-1070.
【6】Nie F, Huang H, Ding C, et al. Robust Principal Component Analysis with Non-Greedy L1-Norm Maximization[C]. IJCAI. 2011:1433-1438.

发布了25 篇原创文章 · 获赞 21 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章