隱含狄利克雷分布(英語:Latent Dirichlet allocation,簡稱LDA),是一種主題模型,它可以將文檔集中每篇文檔的主題按照概率分布的形式給出。同時它是一種無監督學習算法,在訓練時不需要手工標註的訓練集,需要的僅僅是文檔集以及指定主題的數量k即可。此外LDA的另一個優點則是,對於每一個主題均可找出一些詞語來描述它。
LDA首先由 David M. Blei、吳恩達和麥可·I·喬丹於2003年提出[1],目前在文本挖掘領域包括文本主題識別、文本分類以及文本相似度計算方面都有應用。
LDA是一種典型的詞袋模型,即它認為一篇文檔是由一組詞構成的一個集合,詞與詞之間沒有順序以及先後的關係。一篇文檔可以包含多個主題,文檔中每一個詞都由其中的一個主題生成。它以概率分佈的形式揭示每個文檔集的主題,以便在分析一些文檔以提取其主題分佈後,可以根據主題分佈進行主題聚類或使用文本分類。每個主題都用一個詞分佈表示[2]。
另外,正如Beta分布是二項式分布的共軛先驗概率分布,狄利克雷分布作為多項式分布的共軛先驗概率分布。因此正如LDA貝斯網絡結構中所描述的,在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。
- ∝
- 迭代完成後輸出主題-詞參數矩陣φ和文檔-主題矩陣θ