概率潜在语义分析(pLSA) 相关知识
文章目錄
- 生成模型
- 共現模型
- 模型性質
- 共現模型表示
- PLSA算法
概率潛在語義分析(PLSA)是一種利用概率生成模型對文本集合進行話題分析的無監督方法。 PLSA 模型假設每個文本由一個話題分布決定,每個話題由一個單詞分布決定。該模型中的話題是不可直接觀測到的,是潛在的隱變量。整個模型表示文本生成話題,話題生成單詞,從而得到單詞—文本共現數據的過程。
生成模型
假設有M個單詞集合W={w1,w2.…,wM}W=\{w_1,w_2.\ldots,w_M\}W={w1?,w2?.…,wM?},N個文本集合D={d1,d2,…,dN}D=\{d_1,d_2,\ldots,d_N\}D={d1?,d2?,…,dN?},K個話題集合Z={z1,z2,…,zK}Z=\{z_1,z_2,\ldots,z_K\}Z={z1?,z2?,…,zK?}。假設用概率分布P(d)P(d)P(d)表示生成文本ddd 的概率,P(z∣d)P(z|d)P(z∣d) 表示文本ddd生成話題zzz 的概率,P(w∣z)P(w|z)P(w∣z) 表示話題zzz 生成單詞www的概率。
生成模型步驟如下:
(1)依據概率分布P(d)P(d)P(d) ,從文本集合中隨機選取一個文本ddd,共生成NNN個文本。對生成的N個文本都執行下面的操作:
(2)在給定文本 ddd 的條件下,依據條件概率分布P(z∣d)P(z|d)P(z∣d) ,從話題集合中隨機選取一個話題zzz,共生成LLL個話題。對生成的LLL個話題都執行下面的操作:
(3)在給定話題zzz的條件下,依據條件概率分布P(w∣z)P(w|z)P(w∣z) ,從單詞集合中隨機選取一個單詞www。
從數據生成的過程可以推出,單詞—文本共現數據TTT的生成概率為所有的單詞—文本對(w,d)(w,d)(w,d) 的生成概率的乘積:
P(T)=∏w,dP(w,d)n(w,d)P(T) = \prod_{w,d} P(w,d)^{n(w,d)} P(T)=w,d∏?P(w,d)n(w,d)
其中,n(w,d)n(w,d)n(w,d) 表示(w,d)(w,d)(w,d) 出現的次數,而(w,d)(w,d)(w,d) 的生成概率如下:
P(w,d)=P(d)P(w∣d)=P(d)∑zP(w,z∣d)=P(d)∑zP(z∣d)P(w∣z)\begin{aligned} P(w,d) & =P(d)P(w|d) \\ &= P(d)\sum_{z} P(w,z|d) \\ & = P(d)\sum_{z} P(z|d)P(w|z) \end{aligned} P(w,d)?=P(d)P(w∣d)=P(d)z∑?P(w,z∣d)=P(d)z∑?P(z∣d)P(w∣z)?
這就是生成模型的定義。生成模型屬于概覽有向圖模型,可以用下圖表示:
共現模型
除了生成模型,還可以定義與之等價的共現模型,共現模型假設在給定話題zzz的前提下,單詞www和文本ddd 是條件獨立的,即:
P(w,d∣z)=P(w∣z)P(d∣z)P(w,d|z) = P(w|z)P(d|z) P(w,d∣z)=P(w∣z)P(d∣z)
于是單詞—文本對(w,d)(w,d)(w,d) 的生成概率為:
P(w,d)=∑z∈ZP(z)P(w∣z)P(d∣z)P(w,d) = \sum_{z\in Z} P(z)P(w|z)P(d|z) P(w,d)=z∈Z∑?P(z)P(w∣z)P(d∣z)
下圖是共現模型示意圖,其中zzz是隱變量:
生成模型與共現模型具有不同性質,生成模型描述了文本—單詞共現數據的生成過程,共現模型描述文本—單詞共現數據所擁有的模式。
模型性質
如果直接定義單詞與文本的共現概率P(w,d)P(w,d)P(w,d) ,模型的參數個數是O(M?N)O(M\cdot N)O(M?N),其中M表示單詞數,N表示文本數。而PLSA的生成模型或者共現模型的參數個數都是O(M?K+N?K)O(M\cdot K+ N\cdot K)O(M?K+N?K),其中K是話題數,遠小于M,可以極大的減少參數個數。如下圖所示:
共現模型表示
前面提到共現模型為:
P(w,d)=∑z∈ZP(z)P(w∣z)P(d∣z)P(w,d) = \sum_{z\in Z} P(z)P(w|z)P(d|z) P(w,d)=z∈Z∑?P(z)P(w∣z)P(d∣z)
也可以表示為三個矩陣的乘積的形式:
X′=U′Σ′V′TX′=[P(w,d)]M×NU′=[P(w∣z)]M×KΣ′=[P(z)]K×KV′=[P(d∣z)]N×K\begin{aligned} &X' = U'\Sigma' V'^T \\ & X' = [P(w,d)]_{M\times N} \\ & U' = [P(w|z)]_{M\times K}\\ & \Sigma' = [P(z)]_{K\times K}\\ & V' = [P(d|z)]_{N\times K}\\ \end{aligned} ?X′=U′Σ′V′TX′=[P(w,d)]M×N?U′=[P(w∣z)]M×K?Σ′=[P(z)]K×K?V′=[P(d∣z)]N×K??
其中,矩陣U′,V′U',V'U′,V′是非負的、規范的,表示條件概率分布。
PLSA算法
PLSA是含有隱變量的模型,通常使用EM算法完成參數的優化。
假設單詞集合W={w1,w2.…,wM}W=\{w_1,w_2.\ldots,w_M\}W={w1?,w2?.…,wM?},文本集合D={d1,d2,…,dN}D=\{d_1,d_2,\ldots,d_N\}D={d1?,d2?,…,dN?},話題集合Z={z1,z2,…,zK}Z=\{z_1,z_2,\ldots,z_K\}Z={z1?,z2?,…,zK?}。給定單詞—文本共現數據T={n(wi,dj)},i=1,2,…,M;j=1,2,…,NT=\{n(w_i,d_j)\},i=1,2,\ldots,M; j=1,2,\ldots,NT={n(wi?,dj?)},i=1,2,…,M;j=1,2,…,N,目標是估計PLSA(生成模型)的參數,使用極大似然估計,對數似然函數是:
L(θ)=log?∏i=1M∏j=1NP(dj,wi)n(dj,wi)=∑iM∑jNn(dj,wi)log?P(dj,wi)=∑iM∑jNn(dj,wi)log?[∑k=1KP(wi∣zk)P(zk∣dj)]\begin{aligned}L(\theta)&=\log \prod_{i=1}^M\prod_{j=1}^N P(d_j,w_i)^{n(d_j,w_i)}\\ &=\sum_i^M\sum_j^N n(d_j,w_i)\log P(d_j,w_i)\\ &=\sum_i^M\sum_j^N n(d_j,w_i)\log[\sum_{k=1}^K P(w_i|z_k)P(z_k|d_j)]\\ \end{aligned} L(θ)?=logi=1∏M?j=1∏N?P(dj?,wi?)n(dj?,wi?)=i∑M?j∑N?n(dj?,wi?)logP(dj?,wi?)=i∑M?j∑N?n(dj?,wi?)log[k=1∑K?P(wi?∣zk?)P(zk?∣dj?)]?
模型含有隱變量,對數似然函數的優化方法無法用解析方法求解,使用EM算法進行求解。假設有M個單詞集合W={w1,w2.…,wM}W=\{w_1,w_2.\ldots,w_M\}W={w1?,w2?.…,wM?},N個文本集合D={d1,d2,…,dN}D=\{d_1,d_2,\ldots,d_N\}D={d1?,d2?,…,dN?},K個話題集合Z={z1,z2,…,zK}Z=\{z_1,z_2,\ldots,z_K\}Z={z1?,z2?,…,zK?},則具體算法如下:
輸入:單詞—文本共現數據T={n(wi,dj)},i=1,2,…,M;j=1,2,…,NT=\{n(w_i,d_j)\},i=1,2,\ldots,M; j=1,2,\ldots,NT={n(wi?,dj?)},i=1,2,…,M;j=1,2,…,N
輸出:P(wi∣zk),P(zk∣dj)P(w_i|z_k),P(z_k|d_j)P(wi?∣zk?),P(zk?∣dj?)
(1)設置參數P(wi∣zk),P(zk∣dj)P(w_i|z_k),P(z_k|d_j)P(wi?∣zk?),P(zk?∣dj?)的初始值。
(2)迭代執行E步,M步,直到收斂為止:
? E步:
P(zk∣wi,dj)=P(wi∣zk)P(zk∣dj)∑k=1KP(wi∣zk)P(zk∣dj)P(z_k|w_i,d_j) = \frac{P(w_i|z_k)P(z_k|d_j)}{\sum_{k=1}^K P(w_i|z_k)P(z_k|d_j)} P(zk?∣wi?,dj?)=∑k=1K?P(wi?∣zk?)P(zk?∣dj?)P(wi?∣zk?)P(zk?∣dj?)?
? M步:
P(wi∣zk)=∑j=1Nn(wi,dj)P(zk∣wi,dj)∑i=1M∑j=1Nn(wi,dj)P(zk∣wi,dj)P(w_i|z_k) = \frac{\sum_{j=1}^N n(w_i,d_j)P(z_k|w_i,d_j)}{\sum_{i=1}^M\sum_{j=1}^N n(w_i,d_j)P(z_k|w_i,d_j)} P(wi?∣zk?)=∑i=1M?∑j=1N?n(wi?,dj?)P(zk?∣wi?,dj?)∑j=1N?n(wi?,dj?)P(zk?∣wi?,dj?)?
P(zk∣dj)=∑i=1Mn(wi,dj)P(zk∣wi,dj)n(dj)P(z_k|d_j) = \frac{\sum_{i=1}^M n(w_i,d_j)P(z_k|w_i,d_j)}{n(d_j)} P(zk?∣dj?)=n(dj?)∑i=1M?n(wi?,dj?)P(zk?∣wi?,dj?)?
參考文章:
《統計學習方法 第二版》
總結
以上是生活随笔為你收集整理的概率潜在语义分析(pLSA) 相关知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 长颈鹿喝水时通常会采用什么姿势?蚂蚁庄园
- 下一篇: 潜在狄利克雷分布(LDA)初探