降维--深入理解PCA

1 引言

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

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

降维的好处:降维可以去除数据中的冗余特征,相应也可减少数据存储空间,更重要的是,方便后续各种算法对数据的进一步处理、分析!

这里写图片描述
图2

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

2 目标函数及求解

上一节简要介绍了PCA的思想,提到了PCA就是找方差大的方向,这一节就是解决怎样来找这些方向。在机器学习模型中,常针对一个要求解的问题,提出若干准则,以此提出一个目标函数,再在数学上对目标函数进行优化,得出问题的解。PCA的准则是,让投影后的数据分布方差尽可能大,所以PCA的目标函数可以这样定义:
max ⁡ 1 n ∑ i = 1 n ( y i − y ‾ ) 2 = max ⁡ w T w = 1 1 n ∑ i = 1 n ( w T x i ) 2 = max ⁡ w T w = 1 w T ( 1 n X X T ) w = max ⁡ w T w = 1 w T C x w (2.1) \max \frac{1}{n}\sum_{i=1}^n(y_i-\overline{y})^2=\max_{w^Tw=1} \frac{1}{n}\sum_{i=1}^n(w^Tx_i)^2=\max_{w^Tw=1}w^T( \frac{1}{n}XX^T)w=\max_{w^Tw=1}w^TC_xw \tag{2.1} maxn1i=1n(yiy)2=wTw=1maxn1i=1n(wTxi)2=wTw=1maxwT(n1XXT)w=wTw=1maxwTCxw(2.1) 其中, w ∈ R d w\in\mathbb{R}^d wRd表示投影方向, y i = w T x i y_i=w^Tx_i yi=wTxi是投影后的数据点, X = [ x 1 , … , x n ] ∈ R d × n X=[x_1,\ldots,x_n]\in\mathbb{R}^{d\times n} X=[x1,,xn]Rd×n是数据矩阵,且我们假设它已经被零均值化处理过,即 x ‾ = 1 n ∑ i x i = 0 \overline{x}=\frac{1}{n}\sum_i x_i=0 x=n1ixi=0,也自然有 y ‾ = 0 \overline{y}=0 y=0 C x C_x Cx就是协方差矩阵,有时也用修正后的,即 C x = 1 n − 1 X X T C_x=\frac{1}{n-1}XX^T Cx=n11XXT。关于正交约束,可以这样简单理解,一个作用是使目标式子有解,限制 w w w的变化范围,另一个作用是选择标准化的坐标轴,接下来会再提到。

上面是学了一个投影方向(也称子空间),即把数据降成一维,如果要学多个投影方向,很自然地,我们可以让它们的和最大,即:
max ⁡ ∀ j , w j T w j = 1 ∑ j = 1 c w j T C x w j = max ⁡ W T W = I c T r ( W T C x W ) (2.2) \max_{\forall j, w_j^Tw_j=1}\sum_{j=1}^c w_j^TC_xw_j =\max_{W^TW=I_c} Tr(W^TC_xW) \tag{2.2} j,wjTwj=1maxj=1cwjTCxwj=WTW=IcmaxTr(WTCxW)(2.2) 这里, W = [ w 1 , … , w c ] ∈ R d × c W=[w_1,\ldots,w_c]\in\mathbb{R}^{d\times c} W=[w1,,wc]Rd×c是投影矩阵, I c ∈ R c × c I_c\in\mathbb{R}^{c\times c} IcRc×c表示单位矩阵,正交约束使得各投影方向自身是标准化的,且它们之间是两两正交的,为什么要正交,可简单类比我们常用x,y轴表示平面上的点,用xyz轴表示三维空间中的点,都是为了使问题简化而已。

现在就要来求解上述提出的目标式子,更一般地,我们直接对式(2.2)进行操作。设 Λ ∈ R c × c \Lambda\in\mathbb{R}^{c\times c} ΛRc×c为拉格朗日乘子,式(2.2)的拉格朗日函数为:
J ( W ) = T r ( W T C x W ) − T r ( Λ ( W T W − I c ) ) (2.3) J(W) =Tr(W^TC_xW)-Tr\left(\Lambda(W^TW-I_c)\right) \tag{2.3} J(W)=Tr(WTCxW)Tr(Λ(WTWIc))(2.3) 求导并置零得:
∂ J ( W ) ∂ W = 2 C x W − W ( Λ + Λ T ) = 0 (2.4) \frac{\partial J(W)}{\partial W} =2C_xW-W(\Lambda+\Lambda^T) =0 \tag{2.4} WJ(W)=2CxWW(Λ+ΛT)=0(2.4)
Λ ~ = 1 2 ( Λ + Λ T ) \tilde{\Lambda}=\frac{1}{2}(\Lambda+\Lambda^T) Λ~=21(Λ+ΛT),有 C x W = W Λ ~ C_xW=W\tilde{\Lambda} CxW=WΛ~。所以, W W W就是 C X C_X CX的特征向量矩阵, Λ ~ \tilde{\Lambda} Λ~是对应的特征值组成的对角矩阵。 J ( W ) = T r ( W T W Λ ~ ) = T r ( Λ ~ ) J(W)=Tr(W^TW\tilde{\Lambda})=Tr(\tilde{\Lambda}) J(W)=Tr(WTWΛ~)=Tr(Λ~),要最大化 J ( W ) J(W) J(W),自然取 C x C_x Cx的前 c c c个最大的特征值,相应地, W W W就是由 C x C_x Cx的前 c c c大特征值对应的特征向量按列组成的矩阵。通过投影矩阵 W W W,数据从 d d d维降低到 c c c维。

关于主成分个数( c c c),通常根据需要保留的方差百分比,即需要保留的信息量来确定。比如我们要保留99%的信息量,将 λ \lambda λ从大到小排列,即 λ 1 > λ 2 > … > λ n \lambda_1>\lambda_2>\ldots>\lambda_n λ1>λ2>>λn,找到最小的 k k k,使满足:
∑ j = 1 k λ j ∑ j = 1 n λ j ≥ 0.99 \frac{\sum_{j=1}^k \lambda_j}{\sum_{j=1}^n \lambda_j}\ge 0.99 j=1nλjj=1kλj0.99

3 再理解

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

3.1 特征值分解

前面已经引出了协方差的概念,在概率论和统计学中,协方差用于衡量变量之间的总体误差,方差是协方差的特例,即两个变量相同情况下的协方差。在协方差矩阵中,对角线元素对应了各变量自身的方差大小,非对角线元素就是不同变量之间的协方差。如果两个变量是统计独立的,那么两者之间的协方差就是0。

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

3.2 奇异值分解(SVD)

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

方法表示说明
特征值分解 A = P Λ P − 1 A=P\Lambda P^{-1} A=PΛP1 A A A是方阵, P P P可逆但不需要是正交阵, Λ \Lambda Λ不需要是半正定阵(因为可以有 λ < 0 \lambda<0 λ<0
SVD A = U Σ V T A=U\Sigma V^T A=UΣVT A A A不需要为方阵, U , V U,V U,V是正交阵, Σ \Sigma Σ为半正定阵(因为奇异值 ≥ 0 \ge0 0

【注】方阵 A A A半正定: ∀ x ∈ R n \forall x\in\mathbb{R}^n xRn,有 x T A x ≥ 0 x^TAx\ge 0 xTAx0

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

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

3.3 数据重构

也可从数据重构的角度来看待PCA,主要思想是将投影后的数据重新投影回原空间,使得数据的重构误差最小,公式化表述就是:
min ⁡ W ∈ R d × c ∥ X − W W T X ∥ F 2 s . t . w i T w j = 0 ( i ≠ j ) , w i T w i = 1 (3.1) \min_{W\in\mathbb{R}^{d\times c} } \|X-WW^TX\|_F^2 \quad s.t. \quad w_i^Tw_j=0(i\neq j), w_i^Tw_i=1 \tag{3.1} WRd×cminXWWTXF2s.t.wiTwj=0(i=j),wiTwi=1(3.1) 首先,如果我们保留100%的信息量,即选择的主成分个数 c c c就等于原始维度 d d d,相当于不降维, W W W d × d d\times d d×d大小的正交矩阵,有 W W T = I d WW^T=I_d WWT=Id,此时重构误差为0。下面,我们来证明式(3.1)等价于式(2.2)。

( 3.1 ) ⇔ min ⁡ W T W = I c T r ( X − W W T X ) T ( X − W W T X ) ⇔ max ⁡ W T W = I c T r ( X T W W T X ) ⇔ max ⁡ W T W = I c 1 n T r ( W T X X T W ) ⇔ ( 2.2 ) (3.1)\Leftrightarrow \min_{W^TW=I_c} Tr(X-WW^TX)^T(X-WW^TX)\\ \Leftrightarrow \max_{W^TW=I_c} Tr(X^TWW^TX) \\ \Leftrightarrow \max_{W^TW=I_c} \frac{1}{n}Tr(W^TXX^TW) \Leftrightarrow(2.2) (3.1)WTW=IcminTr(XWWTX)T(XWWTX)WTW=IcmaxTr(XTWWTX)WTW=Icmaxn1Tr(WTXXTW)(2.2)
【注】上面第一个等价就是按定义展开,第二个是去掉了一些无关的常数项,不影响最大或最小问题的解,第三个用到了迹的性质Tr(AB)=Tr(BA)。

3.4 低秩近似

还有一种观点,认为PCA是找一个低秩矩阵来近似数据矩阵,用欧式距离来衡量的话,就是:
min ⁡ r a n k ( Z ) = c ∥ X − Z ∥ F 2 . (3.2) \min_{rank(Z)=c} \|X-Z\|_F^2 . \tag{3.2} rank(Z)=cminXZF2.(3.2) 根据满秩分解, Z ∈ R d × n Z\in\mathbb{R}^{d\times n} ZRd×n可以分解为: Z = U V T Z=UV^T Z=UVT,其中 U ∈ R d × c , V ∈ R n × c U\in\mathbb{R}^{d\times c}, V\in\mathbb{R}^{n\times c} URd×c,VRn×c,且有 U T U = I c U^TU=I_c UTU=Ic。式(2.2)可以改写为:
min ⁡ U T U = I c , V ∥ X − U V T ∥ F 2 . (3.2) \min_{U^TU=I_c,V} \|X-UV^T\|_F^2 . \tag{3.2} UTU=Ic,VminXUVTF2.(3.2) 这里, U U U可以看做是 d d d维空间的 c c c个基, V V V可以看做是数据点在该空间中的(低维)表达。下面我们还是来把式(3.2)跟式(2.2)联系起来。式(3.2)对 V V V求偏导并置零,可得 V = X T U V=X^TU V=XTU,代回(3.2)中可得:
max ⁡ U T U = I c T r ( U T X X T U ) . (3.3) \max_{U^TU=I_c} Tr(U^TXX^TU) . \tag{3.3} UTU=IcmaxTr(UTXXTU).(3.3) 又回到最初的起点,PCA现在跟低秩近似也联系起来了。

4 拓展

4.1 PCA与Kmeans

PCA是经典的降维算法,Kmeans是经典的聚类算法,看似八竿子打不着,私下会不会有何联系呢。
Kmeans大意是先随机给定一些聚类中心,然后依据数据点距聚类中心的远近给数据分配簇标签,然后计算新的聚类中心,然后再重新分配,然后再计算,再分配…最终聚类中心会移动到一个比较好的位置,使得数据点距聚类中心的距离的平方和比较小。对,就是根据距离的平方和作为准则的,所以目标函数可以这样写:
min ⁡ C k ∑ k = 1 K ∑ i ∈ C k ∥ x i − m k ∥ 2 (4.1) \min_{C_k}\sum_{k=1}^K \sum_{i\in C_k}\|x_i-m_k\|^2 \tag{4.1} Ckmink=1KiCkximk2(4.1) 这就是我们常见的Kmeans目标式,其中 K K K表示簇的个数, C k C_k Ck表示第 k k k个簇的数据点集合, m k = ∑ i ∈ C k 1 n k x i m_k=\sum_{i\in C_k}\frac{1}{n_k}x_i mk=iCknk1xi表示第 k k k个簇的聚类中心, n k n_k nk表示第 k k k个簇中的数据点个数。
仅通过(4.1)好像看不出什么名堂,那我们就来变一变,看能不能写出更简便的表达式,因为是要找跟PCA之间的关系,所以联想PCA的目标式,看能不能跟(2.2)套一下近乎。下面是公式推导:

( 4.1 ) ⇔ min ⁡ ∑ k = 1 K ∑ i ∈ C k ( x i T x i − 2 x i T m k + m k T m k ) ⇔ min ⁡ ∑ i = 1 n x i T x i − 2 ∑ k = 1 K ∑ i ∈ C k x i T m k + ∑ k = 1 K n k m k T m k ⇔ min ⁡ ∑ i = 1 n x i T x i − ∑ k = 1 K ∑ i ∈ C k x i T m k ( ∵ n k m k T m k = ∑ i ∈ C k x i T m k ) ⇔ min ⁡ ∑ i = 1 n x i T x i − ∑ k = 1 K 1 n k ∑ i , j ∈ C k x i T x j ⇔ min ⁡ T r ( X T X ) − T r ( H T X T X H ) ⇔ max ⁡ H T H = I , H ≥ 0 T r ( H T K H ) ( 4.2 ) (4.1) \Leftrightarrow \min \sum_{k=1}^K\sum_{i\in C_k} (x_i^Tx_i-2x_i^Tm_k+m_k^Tm_k) \\ \Leftrightarrow \min\sum_{i=1}^nx_i^Tx_i - 2\sum_{k=1}^K\sum_{i\in C_k}x_i^Tm_k + \sum_{k=1}^K n_km_k^Tm_k \\ \Leftrightarrow \min \sum_{i=1}^nx_i^Tx_i - \sum_{k=1}^K\sum_{i\in C_k}x_i^Tm_k \quad(\because n_km_k^Tm_k=\sum_{i\in C_k}x_i^Tm_k)\\ \Leftrightarrow \min\sum_{i=1}^nx_i^Tx_i - \sum_{k=1}^K \frac{1}{n_k}\sum_{i,j\in C_k}x_i^Tx_j \\ \Leftrightarrow \min Tr(X^TX)-Tr(H^TX^TXH) \\ \Leftrightarrow \max_{H^TH=I,H\ge 0} Tr(H^TKH) \quad\quad\quad(4.2) (4.1)mink=1KiCk(xiTxi2xiTmk+mkTmk)mini=1nxiTxi2k=1KiCkxiTmk+k=1KnkmkTmkmini=1nxiTxik=1KiCkxiTmk(nkmkTmk=iCkxiTmk)mini=1nxiTxik=1Knk1i,jCkxiTxjminTr(XTX)Tr(HTXTXH)HTH=I,H0maxTr(HTKH)(4.2)

其中引入了一个指示矩阵(或称标签矩阵) H ∈ R n × k H\in\mathbb{R}^{n\times k} HRn×k,如果 x i x_i xi是第 j j j个簇的,则 H i j = 1 / n k H_{ij}=1/\sqrt{n_k} Hij=1/nk ,否则为0。比如现在有5个样例分别属于两个簇,前两个属于第一个簇,后三个属于第二个簇,则 H H H长这样:
[ 1 / 2 1 / 2 0 0 0 0 0 1 / 3 1 / 3 1 / 3 ] T \left[ \begin{matrix} 1/\sqrt{2} & 1/\sqrt{2} & 0 & 0 & 0 \\ 0 & 0 & 1/\sqrt{3} & 1/\sqrt{3} & 1/\sqrt{3} \\ \end{matrix}\right]^T [1/2 01/2 001/3 01/3 01/3 ]T
K = X T X K=X^TX K=XTX是相似度矩阵,这里是采用的标准内积线性核,也可以扩展到其它核。式(4.2)相比式(4.1)不仅看起来简明多了,而且看上去跟我们目标式(2.2)长得很像,那式(4.2)的解跟式(2.2)的解怎么联系起来呢?还记得上一节中说的特征值分解和SVD分解吧,我们再把它们拿出来瞧瞧(此处忽略 C x C_x Cx中的 1 n \frac{1}{n} n1,且不考虑 C x C_x Cx不可逆的情况):

X = U Σ V T C x = X X T = U Λ U T K = X T X = V Λ V T X=U\Sigma V^T \\ C_x=XX^T=U\Lambda U^T \\ K=X^TX = V\Lambda V^T X=UΣVTCx=XXT=UΛUTK=XTX=VΛVT

上面 U ∈ R d × c U\in\mathbb{R}^{d\times c} URd×c就是PCA中要求的投影矩阵 W W W V V V是式(4.2)松弛非负约束后的指示矩阵 H H H。从第一行中的式子可以知道, V = X T U Σ − 1 V=X^TU\Sigma^{-1} V=XTUΣ1,这说明PCA实际上是在进行一种松弛化的Kmeans聚类,簇的指示矩阵就是投影后的数据矩阵(再缩放一下)

拓展的拓展:1)kernel Kmeans跟谱聚类(spectral clustering)也有关系;2) X X T XX^T XXT也叫总体散度矩阵, X H H T X T XHH^TX^T XHHTXT是类间散度矩阵,可参见线性判别分析LDA,它是另一种经典的降维算法。PCA是无监督的,LDA是有监督。所以Kmeas实际上在 min ⁡ H T r ( S w ) \min_H Tr(S_w) minHTr(Sw),这里 S w = S t − S b S_w=S_t-S_b Sw=StSb是类内散度矩阵。3)LDA是已知标签,调整投影矩阵,Kmeans是调整标签。

4.2 Robust PCA

关于鲁棒PCA这个方向,也有很多研究成果,这里只简单地提一种思路,是关于用 ℓ 1 \ell_1 1-norm替代 ℓ 2 \ell_2 2-norm的,这是一种在机器学习中内十分常用的手法,用于实现鲁棒性或稀疏性。涉及到范数,我们先把式(2.2)改写一下:
min ⁡ W T W = I c 1 n ∑ i = 1 n ∥ W T x i ∥ 2 2 (4.1) \min_{W^TW=I_c} \frac{1}{n} \sum_{i=1}^n\|W^Tx_i\|_2^2 \tag{4.1} WTW=Icminn1i=1nWTxi22(4.1) 那么鲁棒PCA就是:
min ⁡ W T W = I c 1 n ∑ i = 1 n ∥ W T x i ∥ 1 (4.1) \min_{W^TW=I_c} \frac{1}{n} \sum_{i=1}^n\|W^Tx_i\|_1 \tag{4.1} WTW=Icminn1i=1nWTxi1(4.1) 关于求解的问题超出本文范畴,感兴趣地可以看相关论文。

主要参考文献

【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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值