在PCA中,有一份样本为n,维度为d的数据 X ∈ R n × d \displaystyle X\in \mathbb{R}^{n\times d} X∈Rn×d,我们希望降维,于是:
X ≈ Z W T X\approx ZW^{T} X≈ZWT
而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) x∼N(Wz,σ2I), z∼N(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) x∼N(Wz,D), z∼N(0,I)
其中D是一个对角矩阵,他跟PPCA的区别就是x的每一个维度的方差都可以不一样,而PPCA中x每个维度的方差都是一样的 σ 2 \displaystyle \sigma ^{2} σ2。不过好像很多人都没搞明白FA跟PCA的区别,这主要是因为很多软件,它写着方法是FA,但实际上给你运行的是PCA >_< 这都是这些软件的锅…
接下来将介绍PCA和PPCA的一些推导。
我们知道PCA一般是用来降维的,如果有一份样本为n,维度为d的数据 X ∈ R n × d \displaystyle X\in \mathbb{R}^{n\times d} X∈Rn×d,那他是怎么实现的呢?其实是基于以下公式实现的:
X ≈ Z W T X\approx ZW^{T} X≈ZWT
其中 Z ∈ R n × k , W ∈ R d × k Z\in \mathbb{R}^{n\times k} ,W\in \mathbb{R}^{d\times k} Z∈Rn×k,W∈Rd×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)=argzmin∥x(i)−Wz∥2=(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} W∈Rd×k,Z∈Rn×kargmin∥∥X−ZWT∥∥F2=j=1∑di=1∑n(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)} ∥A∥F=i=1∑mj=1∑naij2=tr(ATA)。但是或许大家听得最多的是所谓的最大化方差,接下来将证明是等价的
考虑求解第一列 w 1 ∈ R d × 1 \displaystyle \mathbf{w}_{1} \in R^{d\times 1} w1∈Rd×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=1∑N∥∥∥x(i)−w1z1(i)∥∥∥2=N1i=1∑N(x(i)−w1z1(i))T(x(i)−w1z1(i))=N1i=1∑N(x(i))Tx(i)−2(x(i))Tw1z1(i)+z1(i)w1Tw1z1(i)=N1i=1∑Nconst (x(i))Tx(i)−2(z1(i))2+(z1(i))2=const−Var(z1) N1i=1∑N(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=1∑N(z1(i))2=N1i=1∑Nw1Tx(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=1∑Nx(i)(x(i))T=N1⎩⎪⎪⎨⎪⎪⎧∑iN(x1(i))2⋮∑iNxd(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(w1Tw1−1)
对其求导:
∂ ∂ 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} ∂w1∂J~(w1)Σ^w1=2Σ^w1−2λ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=1∑N∥∥∥x(i)−z1(i)w1−z2(i)w2∥∥∥2=const−w2TΣ^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(w2Tw2−1)+λ12(w2Tw1−0)
最后求导可以得到 Σ ^ w 2 = λ 1 w 2 \displaystyle \hat{\mathbf{\Sigma }}\mathbf{w}_{2} =\lambda _{1}\mathbf{w}_{2} Σ^w2=λ1w2,是第二个特征向量,如此类推。
在PCA中我们假设
X ≈ W z X\approx Wz X≈Wz
而在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) x∼N(Wz,σ2I), z∼N(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(x∣z,W)∝exp(−2σ2(x−Wz)T(x−Wz)), 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,z∣W),这个需要用到高斯求条件概率的公式。不过这里,就简单推推
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,z∣W)=p(x∣z,W)p(z∣W)=p(x∣z,W)p(z) (assuming z⊥W)∝exp(−2σ2(x−Wz)T(x−Wz)−2zTz)=exp(−2σ2xTx−xTWz−zTWTx+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.