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