PPCA(Probability PCA)

伯克利的机器学习课的note当中简要介绍了一下PPCA, 但是我看了感觉没写什么东西。Yu姐上PPCA那节课我翘了,导致我对于PPCA几乎是一无所知。碰巧翻了一下工大自己的机器学习课的ppt,翻到了关于PPCA的内容,所以就结合CS189的note了解了一下PPCA。

1. Key assumptions

PPCA假设所有的样本点都取样于某个分布 x R d {\bf x} \in {\Bbb R}^{d} ,对于每个点 x i x_i ,都有一个 z i z_i 与之对应,取样于某个分布 z R k {\bf z} \in {\Bbb R}^{k} , 满足以下条件:
x = W z + μ + ϵ , W R d × k , μ R d , ϵ R d , ϵ N ( 0 , σ 2 I ) {\bf x} = W{\bf z}+\mu +\epsilon , W \in {\Bbb R}^{d \times k}, \mu \in {\Bbb R}^{d }, \epsilon \in {\Bbb R}^{d}, \epsilon \sim N(0,\sigma^2I)
其中 W , μ W,\mu 都是常数, ϵ \epsilon i i d iid 的 noise

这个 z {\bf z} 被称为latent variable

关于latent variable,可以简单的理解为我们看不见(观测不到)的变量,是我们希望从可观测到的变量推断的一个变量。

因为高斯分布的条件分布、联合分布都是高斯分布,所以,我们可以得到:
E [ x ] = E [ μ + W z + ϵ ] = μ E[x] = E[\mu + Wz + \epsilon] = \mu
C = C o v [ x ] = E [ ( μ + W z + ϵ μ ) ( μ + W z + ϵ μ ) T ] = E [ ( W z + ϵ ) ( W z + ϵ ) T ] = W W T + σ 2 I C = Cov[x]=E[(\mu+Wz+\epsilon -\mu)(\mu+Wz+\epsilon -\mu)^T] = E[(Wz+\epsilon)(Wz+\epsilon)^T] = WW^T + \sigma^2I

所以,
p ( x θ ) N ( μ , W W T + σ 2 I ) p(x|\theta) \sim N(\mu, WW^T + \sigma^2I)

2. Maximum Likelihood Estimation

对于一个概率分布模型,我们常用的手段是 MLE
L ( θ ; X ) = i = 1 N l o g ( p ( x i θ ) ) = N 2 l o g ( C ) 1 2 i = 1 n ( x n μ ) T C 1 ( x n μ ) \mathcal {L}(\theta ;X) = \sum_{i = 1}^Nlog(p(x_i|\theta))= -\frac{N}{2}log(|C|) - \frac{1}{2}\sum_{i = 1}^{n}(x_n-\mu)^TC^{-1}(x_n-\mu)

最终我们得到:
L ( θ ; X ) = N 2 l o g ( C ) 1 2 T r ( C 1 i = 1 n ( x n μ ) ( x n μ ) T ) \mathcal {L}(\theta ;X) =-\frac{N}{2}log(|C|) - \frac{1}{2}Tr(C^{-1}\sum_{i = 1}^{n}(x_n-\mu)(x_n-\mu)^T)
a r g m a x L ( θ ; X ) = a r g m i n L ( θ ; X ) = a r g m i n   { N 2 l o g ( C ) + 1 2 T r ( C 1 i = 1 n ( x n μ ) ( x n μ ) T ) } argmax\mathcal {L}(\theta ;X)= argmin-\mathcal {L}(\theta ;X) = argmin \space \{\frac{N}{2}log(|C|) + \frac{1}{2}Tr(C^{-1}\sum_{i = 1}^{n}(x_n-\mu)(x_n-\mu)^T)\}

3.Optimize over the object function

首先先贴几个公式:
d t r ( X ) = t r ( d X ) dtr(X) = tr(dX)
d X 1 = X 1 d X X 1 dX^{-1} =-X^{-1}dXX^{-1}
T r ( A B C ) = T r ( B C A ) = T r ( C A B ) Tr(ABC) = Tr(BCA) = Tr(CAB)
d X = t r ( X d X ) = X T r ( X 1 d X ) ( X ) d|X| = tr(X^*dX)=|X|\cdot Tr(X^{-1}dX)(如果X可逆) X X^*是伴随矩阵
直接考虑关于 W W 的梯度过于困难,可以先考虑关于 C C 的梯度:

L C = N 2 C l o g ( C ) + N 2 C T r ( C 1 S ) \frac{\partial \mathcal {L}}{\partial C} =\frac{N}{2}\cdot \frac{\partial }{\partial C} log(|C|)+\frac{N}{2}\cdot \frac{\partial }{\partial C} Tr(C^{-1}S) S = i = 1 n ( x n μ ) ( x n μ ) T S = \sum_{i = 1}^{n}(x_n-\mu)(x_n-\mu)^T

d ( l o g ( C ) ) = 1 C d C = T r ( C 1 d C ) d(log(|C|) )= \frac{1}{C}\cdot d|C| = Tr(C^{-1}dC)
d T r ( C 1 S ) = T r ( d C 1 S ) = T r ( C 1 d C C 1 S ) = T r ( C 1 S C 1 d C ) dTr(C^{-1}S) = Tr(dC^{-1}\cdot S) = Tr(-C^{-1}\cdot dC\cdot C^{-1}S) = Tr(-C^{-1}SC^{-1}\cdot dC)

所以,
d L = N 2 T r ( ( C 1 C 1 S C 1 ) d C ) dL = \frac{N}{2}Tr((C^{-1}-C^{-1}SC^{-1})\cdot dC)
根据导数和微分的联系,
L C = C 1 C 1 S C 1 \frac{\partial L}{\partial C} = C^{-1}-C^{-1}SC^{-1}
所以,将其置为0求极值:
S = C S = C
S = W W T + σ 2 I S = WW^T+\sigma^2I
对两边进行SVD,得到
W = U S ( Λ σ 2 I ) 2 R W = U_S(\Lambda-\sigma^2I)^{-2}R
U S U_S S S 的特征向量矩阵, Λ \Lambda S S 的特征值矩阵, R R 是任意正交矩阵(一般取 S S 的左奇异矩阵)
之后对这个结果取d-rank approximation即可,d就是你想得到的PC的个数

至此为止,我们通过概率模型得到了我们通过一般PCA得到的结果

4. References

  1. Tipping, M. E., & Bishop, C. M. (1999). Probabilistic principal component analysis
  2. 哈工大2019年秋季机器学习课程slides的ppca部分(p16-p27)
  3. note 10, CS189, UC Berkeley
  4. https://zhuanlan.zhihu.com/p/24709748

这里仅仅是推导,以后如果有时间的话我再深入理解下ppca……

发布了5 篇原创文章 · 获赞 4 · 访问量 1107

猜你喜欢

转载自blog.csdn.net/weixin_42604713/article/details/102994339
PCA
今日推荐