伯克利的机器学习课的note当中简要介绍了一下PPCA, 但是我看了感觉没写什么东西。Yu姐上PPCA那节课我翘了,导致我对于PPCA几乎是一无所知。碰巧翻了一下工大自己的机器学习课的ppt,翻到了关于PPCA的内容,所以就结合CS189的note了解了一下PPCA。
1. Key assumptions
PPCA假设所有的样本点都取样于某个分布
x∈Rd,对于每个点
xi,都有一个
zi与之对应,取样于某个分布
z∈Rk, 满足以下条件:
x=Wz+μ+ϵ,W∈Rd×k,μ∈Rd,ϵ∈Rd,ϵ∼N(0,σ2I)
其中
W,μ都是常数,
ϵ是
iid 的 noise
这个
z 被称为latent variable
关于latent variable,可以简单的理解为我们看不见(观测不到)的变量,是我们希望从可观测到的变量推断的一个变量。
因为高斯分布的条件分布、联合分布都是高斯分布,所以,我们可以得到:
E[x]=E[μ+Wz+ϵ]=μ
C=Cov[x]=E[(μ+Wz+ϵ−μ)(μ+Wz+ϵ−μ)T]=E[(Wz+ϵ)(Wz+ϵ)T]=WWT+σ2I
所以,
p(x∣θ)∼N(μ,WWT+σ2I)
2. Maximum Likelihood Estimation
对于一个概率分布模型,我们常用的手段是 MLE :
L(θ;X)=i=1∑Nlog(p(xi∣θ))=−2Nlog(∣C∣)−21i=1∑n(xn−μ)TC−1(xn−μ)
最终我们得到:
L(θ;X)=−2Nlog(∣C∣)−21Tr(C−1i=1∑n(xn−μ)(xn−μ)T)
argmaxL(θ;X)=argmin−L(θ;X)=argmin {2Nlog(∣C∣)+21Tr(C−1i=1∑n(xn−μ)(xn−μ)T)}
3.Optimize over the object function
首先先贴几个公式:
dtr(X)=tr(dX)
dX−1=−X−1dXX−1
Tr(ABC)=Tr(BCA)=Tr(CAB)
d∣X∣=tr(X∗dX)=∣X∣⋅Tr(X−1dX)(如果X可逆),
X∗是伴随矩阵
直接考虑关于
W的梯度过于困难,可以先考虑关于
C的梯度:
∂C∂L=2N⋅∂C∂log(∣C∣)+2N⋅∂C∂Tr(C−1S)
S=i=1∑n(xn−μ)(xn−μ)T
d(log(∣C∣))=C1⋅d∣C∣=Tr(C−1dC)
dTr(C−1S)=Tr(dC−1⋅S)=Tr(−C−1⋅dC⋅C−1S)=Tr(−C−1SC−1⋅dC)
所以,
dL=2NTr((C−1−C−1SC−1)⋅dC)
根据导数和微分的联系,
∂C∂L=C−1−C−1SC−1
所以,将其置为0求极值:
S=C
S=WWT+σ2I
对两边进行SVD,得到
W=US(Λ−σ2I)−2R
US是
S的特征向量矩阵,
Λ 是
S的特征值矩阵,
R是任意正交矩阵(一般取
S的左奇异矩阵)
之后对这个结果取d-rank approximation即可,d就是你想得到的PC的个数
至此为止,我们通过概率模型得到了我们通过一般PCA得到的结果
4. References
- Tipping, M. E., & Bishop, C. M. (1999). Probabilistic principal component analysis
- 哈工大2019年秋季机器学习课程slides的ppca部分(p16-p27)
- note 10, CS189, UC Berkeley
- https://zhuanlan.zhihu.com/p/24709748
这里仅仅是推导,以后如果有时间的话我再深入理解下ppca……