伯克利的機器學習課的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……