隱含狄利克雷分布 (英語:Latent Dirichlet allocation ,簡稱LDA ),是一種主題模型 ,它可以將文檔集中每篇文檔的主題按照概率分布 的形式給出。同時它是一種無監督學習 算法,在訓練時不需要手工標註的訓練集,需要的僅僅是文檔集以及指定主題的數量k即可。此外LDA的另一個優點則是,對於每一個主題均可找出一些詞語來描述它。
LDA首先由 David M. Blei、吳恩達 和麥可·I·喬丹 於2003年提出[ 1] ,目前在文本挖掘 領域包括文本主題識別、文本分類以及文本相似度計算方面都有應用。
LDA貝斯網絡結構
LDA是一種典型的詞袋模型,即它認為一篇文檔是由一組詞構成的一個集合,詞與詞之間沒有順序以及先後的關係。一篇文檔可以包含多個主題,文檔中每一個詞都由其中的一個主題生成。它以概率分佈的形式揭示每個文檔集的主題,以便在分析一些文檔以提取其主題分佈後,可以根據主題分佈進行主題聚類或使用文本分類。每個主題都用一個詞分佈表示[ 2] 。
另外,正如Beta分布 是二項式分布 的共軛先驗概率 分布,狄利克雷分布作為多項式分布的共軛先驗概率 分布。因此正如LDA貝斯網絡 結構中所描述的,在LDA模型中一篇文檔生成的方式如下:
從狄利克雷分布
α
{\displaystyle \alpha }
中取樣生成文檔
i
{\displaystyle i}
的主題分布
θ
i
{\displaystyle \theta _{i}}
從主題的多項式分布
θ
i
{\displaystyle \theta _{i}}
中取樣生成文檔
i
{\displaystyle i}
中第
j
{\displaystyle j}
個主題
z
i
,
j
{\displaystyle z_{i,j}}
從狄利克雷分布
β
{\displaystyle \beta }
中取樣生成主題
z
i
,
j
{\displaystyle z_{i,j}}
的詞語分布
ϕ
z
i
,
j
{\displaystyle \phi _{z_{i,j}}}
從詞語的多項式分布
ϕ
z
i
,
j
{\displaystyle \phi _{z_{i,j}}}
中採樣最終生成詞語
w
i
,
j
{\displaystyle w_{i,j}}
因此整個模型中所有可見變量以及隱藏變量的聯合分布 是
p
(
w
i
,
z
i
,
θ
i
,
Φ
|
α
,
β
)
=
∏
j
=
1
N
p
(
θ
i
|
α
)
p
(
z
i
,
j
|
θ
i
)
p
(
Φ
|
β
)
p
(
w
i
,
j
|
ϕ
z
i
,
j
)
{\displaystyle p(w_{i},z_{i},\theta _{i},\Phi |\alpha ,\beta )=\prod _{j=1}^{N}p(\theta _{i}|\alpha )p(z_{i,j}|\theta _{i})p(\Phi |\beta )p(w_{i,j}|\phi _{z_{i,j}})}
最終一篇文檔的單詞分布的最大似然估計 可以通過將上式的
θ
i
{\displaystyle \theta _{i}}
以及
Φ
{\displaystyle \Phi }
進行積分和對
z
i
{\displaystyle z_{i}}
進行求和得到
p
(
w
i
|
α
,
β
)
=
∫
θ
i
∫
Φ
∑
z
i
p
(
w
i
,
z
i
,
θ
i
,
Φ
|
α
,
β
)
{\displaystyle p(w_{i}|\alpha ,\beta )=\int _{\theta _{i}}\int _{\Phi }\sum _{z_{i}}p(w_{i},z_{i},\theta _{i},\Phi |\alpha ,\beta )}
根據
p
(
w
i
|
α
,
β
)
{\displaystyle p(w_{i}|\alpha ,\beta )}
的最大似然估計,最終可以通過吉布斯採樣 等方法估計出模型中的參數。
在LDA最初提出的時候,人們使用EM算法進行求解,後來人們普遍開始使用較為簡單的Gibbs Sampling,具體過程如下:
首先對所有文檔中的所有詞遍歷一遍,為其都隨機分配一個主題,即
z
m
,
n
=
k
∼
M
u
l
t
(
1
/
K
)
{\displaystyle z_{m,n}=k\sim Mult(1/K)}
,其中m表示第m篇文檔,n表示文檔中的第n個詞,k表示主題,K表示主題的總數,之後將對應的
n
m
k
+
1
{\displaystyle n_{m}^{k}+1}
,
n
m
+
1
{\displaystyle n_{m}+1}
,
n
k
t
+
1
{\displaystyle n_{k}^{t}+1}
,
n
k
+
1
{\displaystyle n_{k}+1}
,他們分別表示在m文檔中k主題出現的次數,m文檔中主題數量的和,k主題對應的t詞的次數,k主題對應的總詞數。
之後對下述操作進行重複迭代。
對所有文檔中的所有詞進行遍歷,假如當前文檔m的詞t對應主題為k,則
n
m
k
−
1
{\displaystyle n_{m}^{k}-1}
,
n
m
−
1
{\displaystyle n_{m}-1}
,
n
k
t
−
1
{\displaystyle n_{k}^{t}-1}
,
n
k
−
1
{\displaystyle n_{k}-1}
,即先拿出當前詞,之後根據LDA中topic sample的概率分布sample出新的主題,在對應的
n
m
k
{\displaystyle n_{m}^{k}}
,
n
m
{\displaystyle n_{m}}
,
n
k
t
{\displaystyle n_{k}^{t}}
,
n
k
{\displaystyle n_{k}}
上分別+1。
p
(
z
i
=
k
|
z
−
i
,
w
)
{\displaystyle p(z_{i}=k|z_{-i},w)}
∝
(
n
k
,
−
i
(
t
)
+
β
t
)
(
n
m
,
−
i
(
k
)
+
α
k
)
/
(
∑
t
=
1
V
n
k
,
−
i
(
t
)
+
β
t
)
{\displaystyle (n_{k,-i}^{(t)}+\beta _{t})(n_{m,-i}^{(k)}+\alpha _{k})/(\sum _{t=1}^{V}n_{k,-i}^{(t)}+\beta _{t})}
迭代完成後輸出主題-詞參數矩陣φ和文檔-主題矩陣θ
ϕ
k
,
t
=
(
n
k
(
t
)
+
β
t
)
/
(
n
k
+
β
t
)
{\displaystyle \phi _{k,t}=(n_{k}^{(t)}+\beta _{t})/(n_{k}+\beta _{t})}
θ
m
,
k
=
(
n
m
(
k
)
+
α
k
)
/
(
n
m
+
α
k
)
{\displaystyle \theta _{m,k}=(n_{m}^{(k)}+\alpha _{k})/(n_{m}+\alpha _{k})}