主成分分析(PCA),概率主成分分析(PPCA)和因子分析(FA)的区别?

介绍

在PCA中,有一份样本为n,维度为d的数据 X ∈ R n × d \displaystyle X\in \mathbb{R}^{n\times d} XRn×d,我们希望降维,于是:

X ≈ Z W T X\approx ZW^{T} XZWT

而Probabilistic PCA则是假设

x ∼ N ( W z , σ 2 I ) ,    z ∼ N ( 0 , I ) x\sim \mathcal{N}\left( Wz,\sigma ^{2} I\right) ,\ \ z\sim \mathcal{N} (0,I) xN(Wz,σ2I),  zN(0,I)

σ → 0 \displaystyle \sigma \rightarrow 0 σ0时,PPCA等价于PCA。
另外Factor analysis则是假设

x ∼ N ( W z , D ) ,    z ∼ N ( 0 , I ) x\sim \mathcal{N}( Wz,D) ,\ \ z\sim \mathcal{N} (0,I) xN(Wz,D),  zN(0,I)

其中D是一个对角矩阵,他跟PPCA的区别就是x的每一个维度的方差都可以不一样,而PPCA中x每个维度的方差都是一样的 σ 2 \displaystyle \sigma ^{2} σ2。不过好像很多人都没搞明白FA跟PCA的区别,这主要是因为很多软件,它写着方法是FA,但实际上给你运行的是PCA >_< 这都是这些软件的锅…

接下来将介绍PCA和PPCA的一些推导。

从PCA说起

我们知道PCA一般是用来降维的,如果有一份样本为n,维度为d的数据 X ∈ R n × d \displaystyle X\in \mathbb{R}^{n\times d} XRn×d,那他是怎么实现的呢?其实是基于以下公式实现的:

X ≈ Z W T X\approx ZW^{T} XZWT

其中 Z ∈ R n × k , W ∈ R d × k Z\in \mathbb{R}^{n\times k} ,W\in \mathbb{R}^{d\times k} ZRn×k,WRd×k,只要我们能够找到一个k≪d的矩阵,使得X跟 Z W T \displaystyle ZW^{T} ZWT尽可能接近就可以了。更具体的说,对于某个样本 x ( i ) ∈ R n × 1 \displaystyle x^{( i)} \in \mathbb{R}^{n\times 1} x(i)Rn×1,其近似方式为

x ( i ) ≈ W z ( i ) x^{( i)} \approx Wz^{( i)} x(i)Wz(i)

一般来说,我们只需要估计W的值,因为如果W已知的话,z是可以直接用x求出来的:

z ( i ) = arg ⁡ min ⁡ z ∥ x ( i ) − W z ∥ 2 = ( W T W ) − 1 W T x ( i ) z^{( i)} =\arg\min_{z} \| x^{( i)} -Wz\| ^{2} =\left( W^{T} W\right)^{-1} W^{T} x^{( i)} z(i)=argzminx(i)Wz2=(WTW)1WTx(i)

可以简单推导下:

∂ ∂ z ( x ( i ) − W z ) T ( x ( i ) − W z ) = − 2 W T ( x ( i ) − W z ) = − 2 ( W T x ( i ) − W T W z ) = 0 ⟹ z = ( W T W ) − 1 W T x ( i ) \begin{aligned} & \frac{\partial }{\partial z}\left( x^{( i)} -Wz\right)^{T}\left( x^{( i)} -Wz\right)\\ = & -2W^{T}\left( x^{( i)} -Wz\right)\\ = & -2\left( W^{T} x^{( i)} -W^{T} Wz\right)\\ = & 0\\ \Longrightarrow & z=\left( W^{T} W\right)^{-1} W^{T} x^{( i)} \end{aligned} ===z(x(i)Wz)T(x(i)Wz)2WT(x(i)Wz)2(WTx(i)WTWz)0z=(WTW)1WTx(i)

我们通常假设W是正交矩阵,于是 W T W = I \displaystyle W^{T} W=I WTW=I,从而 z = W T x ( i ) \displaystyle z=W^{T} x^{( i)} z=WTx(i);从这条式子可以看出,z的每一个维度是由一列一列的w,然后将x加权平均得到的。又因为这个W是不唯一的,他的旋转的是等价的,因此为了保证唯一性,我们通常会通过逐列求解W来保证唯一性。那么如何逐列求解呢?

为了求解方便,假设X是经过标准化的样本矩阵(这将意味着 X T X = Σ \displaystyle X^{T} X=\Sigma XTX=Σ)。首先整体来看就是找到W使得重构误差最小,也称为(synthesis view):

argmin ⁡ W ∈ R d × k , Z ∈ R n × k ∥ X − Z W T ∥ F 2 = ∑ j = 1 d ∑ i = 1 n ( x j ( i ) − w j T z ( i ) ) 2 \underset{W\in \mathbb{R}^{d\times k} ,Z\in \mathbb{R}^{n\times k}}{\operatorname{argmin}}\left\Vert X-ZW^{T}\right\Vert ^{2}_{F} =\sum ^{d}_{j=1}\sum ^{n}_{i=1}\left( x^{( i)}_{j} -w^{T}_{j} z^{( i)}\right)^{2} WRd×k,ZRn×kargminXZWTF2=j=1di=1n(xj(i)wjTz(i))2

其中 ∥ A ∥ F = ∑ i = 1 m ∑ j = 1 n a i j 2 = tr ⁡ ( A T A ) \displaystyle \| \mathbf{A} \| _{F} =\sqrt{\sum ^{m}_{i=1}\sum ^{n}_{j=1} a_{ij}^{2}} =\sqrt{\operatorname{tr}\left(\mathbf{A}^{T}\mathbf{A}\right)} AF=i=1mj=1naij2 =tr(ATA) 。但是或许大家听得最多的是所谓的最大化方差,接下来将证明是等价的
考虑求解第一列 w 1 ∈ R d × 1 \displaystyle \mathbf{w}_{1} \in R^{d\times 1} w1Rd×1,则对于第i个样本它对应着 z 1 ( i ) = ( x ( i ) ) T w 1 \displaystyle z^{( i)}_{1} =(x^{( i)})^{T}\mathbf{w}_{1} z1(i)=(x(i))Tw1(这个是一个标量),其loss函数为:
min ⁡ J ( w 1 , z 1 ) = 1 N ∑ i = 1 N ∥ x ( i ) − w 1 z 1 ( i ) ∥ 2 = 1 N ∑ i = 1 N ( x ( i ) − w 1 z 1 ( i ) ) T ( x ( i ) − w 1 z 1 ( i ) ) = 1 N ∑ i = 1 N ( x ( i ) ) T x ( i ) − 2 ( x ( i ) ) T w 1 z 1 ( i ) + z 1 ( i ) w 1 T w 1 z 1 ( i ) = 1 N ∑ i = 1 N ( x ( i ) ) T x ( i ) ⏟ c o n s t − 2 ( z 1 ( i ) ) 2 + ( z 1 ( i ) ) 2 = c o n s t − 1 N ∑ i = 1 N ( z 1 ( i ) ) 2 ⏟ V a r ( z 1 ) \begin{aligned} \min J(\mathbf{w}_{1} ,z_{1}) & =\frac{1}{N}\sum ^{N}_{i=1}\left\Vert \mathbf{x}^{( i)} -\mathbf{w}_{1} z^{( i)}_{1}\right\Vert ^{2}\\ & =\frac{1}{N}\sum ^{N}_{i=1}\left(\mathbf{x}^{( i)} -\mathbf{w}_{1} z^{( i)}_{1}\right)^{T}\left(\mathbf{x}^{( i)} -\mathbf{w}_{1} z^{( i)}_{1}\right)\\ & =\frac{1}{N}\sum ^{N}_{i=1}(\mathbf{x}^{( i)})^{T}\mathbf{x}^{( i)} -2(\mathbf{x}^{( i)})^{T}\mathbf{w}_{1} z^{( i)}_{1} +z^{( i)}_{1}\mathbf{w}^{T}_{1}\mathbf{w}_{1} z^{( i)}_{1}\\ & =\frac{1}{N}\sum ^{N}_{i=1}\underbrace{(\mathbf{x}^{( i)})^{T}\mathbf{x}^{( i)}}_{const} -2(z^{( i)}_{1})^{2} +(z^{( i)}_{1})^{2}\\ & =const-\underbrace{\frac{1}{N}\sum ^{N}_{i=1} (z^{( i)}_{1})^{2}}_{Var(\mathbf{z_{1}})} \end{aligned} minJ(w1,z1)=N1i=1Nx(i)w1z1(i)2=N1i=1N(x(i)w1z1(i))T(x(i)w1z1(i))=N1i=1N(x(i))Tx(i)2(x(i))Tw1z1(i)+z1(i)w1Tw1z1(i)=N1i=1Nconst (x(i))Tx(i)2(z1(i))2+(z1(i))2=constVar(z1) N1i=1N(z1(i))2

可以看到,推到最后其实就是在最大化方差,那么如果求解呢?我们把w和x代回去:

max ⁡ J ( w 1 ) = 1 N ∑ i = 1 N ( z 1 ( i ) ) 2 = 1 N ∑ i = 1 N w 1 T x ( i ) ( x ( i ) ) T w 1 = w 1 T Σ ^ w 1 \max J(\mathbf{w}_{1}) =\frac{1}{N}\sum ^{N}_{i=1} (z^{( i)}_{1})^{2} =\frac{1}{N}\sum ^{N}_{i=1}\mathbf{w}^{T}_{1} x^{( i)} (x^{( i)})^{T}\mathbf{w}_{1} =\mathbf{w}^{T}_{1}\hat{\Sigma }\mathbf{w}_{1} maxJ(w1)=N1i=1N(z1(i))2=N1i=1Nw1Tx(i)(x(i))Tw1=w1TΣ^w1

其中 Σ ^ = 1 N ∑ i = 1 N x ( i ) ( x ( i ) ) T = 1 N { ∑ i N ( x 1 ( i ) ) 2 ⋯ ∑ i N x 1 ( i ) x d ( i ) ⋮ ⋱ ⋮ ∑ i N x d ( i ) x 1 ( i ) ⋯ ∑ i N ( x d ( i ) ) 2 } \displaystyle \hat{\Sigma } =\frac{1}{N}\sum ^{N}_{i=1} x^{( i)} (x^{( i)})^{T} =\frac{1}{N}\begin{Bmatrix} \sum ^{N}_{i} (x^{( i)}_{1})^{2} & \cdots & \sum ^{N}_{i} x^{( i)}_{1} x^{( i)}_{d}\\ \vdots & \ddots & \vdots \\ \sum ^{N}_{i} x^{( i)}_{d} x^{( i)}_{1} & \cdots & \sum ^{N}_{i} (x^{( i)}_{d})^{2} \end{Bmatrix} Σ^=N1i=1Nx(i)(x(i))T=N1iN(x1(i))2iNxd(i)x1(i)iNx1(i)xd(i)iN(xd(i))2,是经验协方差矩阵(注意到这是个很多个外积的求和)。然而要最大化,显然最简单的是将w设得无穷大,所以为了限制这一天,我们要加个约束 ∥ w 1 ∥ = 1 \displaystyle \| \mathbf{w}_{1} \| =1 w1=1,于是

J ~ ( w 1 ) = w 1 T Σ ^ w 1 + λ 1 ( w 1 T w 1 − 1 ) \tilde{J}(\mathbf{w}_{1}) =\mathbf{w}_{1}^{T}\hat{\mathbf{\Sigma }}\mathbf{w}_{1} +\lambda _{1}\left(\mathbf{w}_{1}^{T}\mathbf{w}_{1} -1\right) J~(w1)=w1TΣ^w1+λ1(w1Tw11)

对其求导:

∂ ∂ w 1 J ~ ( w 1 ) = 2 Σ ^ w 1 − 2 λ 1 w 1 = 0 Σ ^ w 1 = λ 1 w 1 \begin{aligned} \frac{\partial }{\partial \mathbf{w}_{1}}\tilde{J}(\mathbf{w}_{1}) & =2\hat{\mathbf{\Sigma }}\mathbf{w}_{1} -2\lambda _{1}\mathbf{w}_{1} =0\\ \hat{\mathbf{\Sigma }}\mathbf{w}_{1} & =\lambda _{1}\mathbf{w}_{1} \end{aligned} w1J~(w1)Σ^w1=2Σ^w12λ1w1=0=λ1w1

最终我们发现 w 1 \displaystyle \mathbf{w}_{1} w1恰好是 Σ ^ \displaystyle \hat{\mathbf{\Sigma }} Σ^的特征向量,所以我们求PCA的时候,直接求协方差的特征向量就把w给求出来了。接下来的求 w 2 \displaystyle \mathbf{w}_{2} w2也是类似的,考虑

J ( w 1 , z 1 , w 2 , z 2 ) = 1 N ∑ i = 1 N ∥ x ( i ) − z 1 ( i ) w 1 − z 2 ( i ) w 2 ∥ 2 = c o n s t − w 2 T Σ ^ w 2 J(\mathbf{w}_{1} ,\mathbf{z}_{1} ,\mathbf{w}_{2} ,\mathbf{z}_{2}) =\frac{1}{N}\sum ^{N}_{i=1}\left\Vert \mathbf{x}^{( i)} -z^{( i)}_{1}\mathbf{w}_{1} -z^{( i)}_{2}\mathbf{w}_{2}\right\Vert ^{2} =const-\mathbf{w}^{T}_{2}\hat{\Sigma }\mathbf{w}_{2} J(w1,z1,w2,z2)=N1i=1Nx(i)z1(i)w1z2(i)w22=constw2TΣ^w2

这里因为 w 1 \displaystyle \mathbf{w}_{1} w1是已知的,所以被当做常数项了。又因为, w 1 T w 2 = 0 , w 2 T w 2 = 1 \displaystyle \mathbf{w}^{T}_{1}\mathbf{w}_{2} =0,\mathbf{w}^{T}_{2}\mathbf{w}_{2} =1 w1Tw2=0,w2Tw2=1

J ~ ( w 2 ) = − w 2 T Σ ^ w 2 + λ 2 ( w 2 T w 2 − 1 ) + λ 12 ( w 2 T w 1 − 0 ) \tilde{J}(\mathbf{w}_{2}) =-\mathbf{w}_{2}^{T}\hat{\mathbf{\Sigma }}\mathbf{w}_{2} +\lambda _{2}\left(\mathbf{w}_{2}^{T}\mathbf{w}_{2} -1\right) +\lambda _{12}\left(\mathbf{w}_{2}^{T}\mathbf{w}_{1} -0\right) J~(w2)=w2TΣ^w2+λ2(w2Tw21)+λ12(w2Tw10)

最后求导可以得到 Σ ^ w 2 = λ 1 w 2 \displaystyle \hat{\mathbf{\Sigma }}\mathbf{w}_{2} =\lambda _{1}\mathbf{w}_{2} Σ^w2=λ1w2,是第二个特征向量,如此类推。

Probabilistic PCA

在PCA中我们假设

X ≈ W z X\approx Wz XWz

而在PPCA中我们假设

x ∼ N ( W z , σ 2 I ) ,    z ∼ N ( 0 , I ) x\sim \mathcal{N}\left( Wz,\sigma ^{2} I\right) ,\ \ z\sim \mathcal{N} (0,I) xN(Wz,σ2I),  zN(0,I)

显然当 σ → 0 \displaystyle \sigma \rightarrow 0 σ0的时候,PPCA与PCA是等价的。根据上述假设,可以知道他们的分布为:

p ( x ∣ z , W ) ∝ exp ⁡ ( − ( x − W z ) T ( x − W z ) 2 σ 2 ) ,    p ( z ) ∝ exp ⁡ ( − z T z 2 ) . p(x|z,W)\varpropto \exp\left( -\frac{(x-Wz)^{T} (x-Wz)}{2\sigma ^{2}}\right) ,\ \ p(z)\varpropto \exp\left( -\frac{z^{T} z}{2}\right) . p(xz,W)exp(2σ2(xWz)T(xWz)),  p(z)exp(2zTz).

其实PPCA的框架是很灵活的,完全可以假设p(x|z)是laplace分布(Robust PCA),或者如果x是离散就是softmax之类的(Latent Discrete Analysis)。这里先假设高斯的,那我们可以简单推导下x和z的联合分布 p ( x , z ∣ W ) \displaystyle p(x,z|W) p(x,zW),这个需要用到高斯求条件概率的公式。不过这里,就简单推推

p ( x , z ∣ W ) = p ( x ∣ z , W ) p ( z ∣ W ) = p ( x ∣ z , W ) p ( z )    (assuming  z ⊥ W ) ∝ exp ⁡ ( − ( x − W z ) T ( x − W z ) 2 σ 2 − z T z 2 ) = exp ⁡ ( − x T x − x T W z − z T W T x + z T W T W z 2 σ 2 + z T z 2 ) = exp ⁡ ( − 1 2 ( x T ( 1 σ 2 I ) x + x T ( 1 σ 2 W ) z + z T ( 1 σ 2 W T ) x + z T ( 1 σ 2 W T W + I ) z ) ) ∝ exp ⁡ ( − 1 2 [ z T    x T ] [ 1 σ 2 W T W + I − 1 σ 2 W T − 1 σ 2 W 1 σ 2 I ] [ z x ] ) \begin{aligned} p( x,z|W) & =p(x|z,W)p(z|W)\\ & =p(x|z,W)p(z)\ \ \text{ (assuming } z\perp W)\\ & \varpropto \exp\left( -\frac{(x-Wz)^{T} (x-Wz)}{2\sigma ^{2}} -\frac{z^{T} z}{2}\right)\\ & =\exp\left( -\frac{x^{T} x-x^{T} Wz-z^{T} W^{T} x+z^{T} W^{T} Wz}{2\sigma ^{2}} +\frac{z^{T} z}{2}\right)\\ & =\exp\left( -\frac{1}{2}\left( x^{T}\left(\frac{1}{\sigma ^{2}} I\right) x+x^{T}\left(\frac{1}{\sigma ^{2}} W\right) z+z^{T}\left(\frac{1}{\sigma ^{2}} W^{T}\right) x+z^{T}\left(\frac{1}{\sigma ^{2}} W^{T} W+I\right) z\right)\right)\\ & \varpropto \exp\left( -\frac{1}{2}\left[ z^{T} \ \ x^{T}\right]\left[\begin{array}{ c c } \frac{1}{\sigma ^{2}} W^{T} W+I & -\frac{1}{\sigma ^{2}} W^{T}\\ -\frac{1}{\sigma ^{2}} W & \frac{1}{\sigma ^{2}} I \end{array}\right]\left[\begin{array}{ l } z\\ x \end{array}\right]\right) \end{aligned} p(x,zW)=p(xz,W)p(zW)=p(xz,W)p(z)   (assuming zW)exp(2σ2(xWz)T(xWz)2zTz)=exp(2σ2xTxxTWzzTWTx+zTWTWz+2zTz)=exp(21(xT(σ21I)x+xT(σ21W)z+zT(σ21WT)x+zT(σ21WTW+I)z))exp(21[zT  xT][σ21WTW+Iσ21Wσ21WTσ21I][zx])

参考文献

CPSC 540: Machine Learning Probabilistic PCA and Factor Analysis

Murphy K. Machine Learning: a Probabilistic Perspective. The MIT Press, 2012.

你可能感兴趣的:(人工智能)