一、簡介
https://cloud.tencent.com/developer/article/1058777
1、LDA是一種主題模型
作用:可以將每篇文檔的主題以概率分布的形式給出【給定一篇文檔,推測其主題分布】。我們的目標是找到每一篇文檔的主題分布和每一個主題中詞的分布。
從而通過分析一些文檔抽取出它們的主題(分布)出來后,便可以根據主題(分布)進行主題聚類或文本分類。
2、同時,它是一種典型的詞袋模型
即一篇文檔是由一組詞構成,詞與詞之間沒有先后順序的關系。
此外,一篇文檔可以包含多個主題,文檔中每一個詞都由其中的一個主題生成。
3、理解LDA,可以分為下述5個步驟:
- 一個函數:gamma函數
- 四個分布:二項分布、多項分布、beta分布、Dirichlet分布
- 一個概念和一個理念:共軛先驗和貝葉斯框架
- 兩個模型:pLSA、LDA(在本文第4 部分闡述)
- 一個采樣:Gibbs采樣
二、LDA模型
比如假設事先給定了這幾個主題:Arts、Budgets、Children、Education,然后通過學習的方式,獲取每個主題Topic對應的詞語。如下圖所示:
然后以一定的概率選取上述某個主題,再以一定的概率選取那個主題下的某個單詞,不斷的重復這兩步,最終生成如下圖所示的一篇文章(其中不同顏色的詞語分別對應上圖中不同主題下的詞):
而當我們看到一篇文章后,往往喜歡推測這篇文章是如何生成的,我們可能會認為作者先確定這篇文章的幾個主題,然后圍繞這幾個主題遣詞造句,表達成文。LDA就是要干這事:根據給定的一篇文檔,推測其主題分布。
LDA的圖模型:
共有M篇文檔,每個文檔有Nm個單詞,一共涉及到K個主題;
每篇文檔都有各自的主題,主題分布是多項式分布,該多項式分布的參數服從Dirichlet分布,該Dirichlet分布的參數為α;
每個主題都有各自的詞分布,詞分布為為多項式分布,該多項式分布的參數服從Dirichlet分布,該Dirichlet分布的參數為β;
對於某篇文檔d中的第n個詞,首先從該文檔的主題分布中采用一個主題,然后再這個主題對應的詞分布中采用一個詞,不斷重復該操作,直到m篇文檔全部完成上述過程。
LDA用生成式模型的角度來看待文檔和主題。
假設每篇文檔包含了多個主題,
用θd表示文檔t每個話題所占比例,
θd,k表示文檔t中包含主題d所占用的比例,繼而通過如下過程生成文檔d。
(1)根據參數為α的狄利克雷分布,隨機采樣一個話題分布θd;
(2)按照如下步驟生成文中的N個詞:
根據θd進行話指派,得到文檔d中詞n的話題
根據指派話題所對應的詞頻βk進行采樣隨機生成詞
三、兩個模型:PLSA、LDA
我們來看一個例子,如圖所示:
上圖中有三個主題,在PLSA中,我們會以固定的概率來抽取一個主題詞,比如0.5的概率抽取教育這個主題詞,然后根據抽取出來的主題詞,找其對應的詞分布,再根據詞分布,抽取一個詞匯。由此,可以看出PLSA中,主題分布和詞分布都是唯一確定的。但是,在LDA中,主題分布和詞分布是不確定的,LDA的作者們采用的是貝葉斯派的思想,認為它們應該服從一個分布,主題分布和詞分布都是多項式分布,因為多項式分布和狄利克雷分布是共軛結構,在LDA中主題分布和詞分布使用了Dirichlet分布作為它們的共軛先驗分布。所以,也就有了一句廣為流傳的話 -- LDA 就是 PLSA 的貝葉斯化版本。下面兩張圖片很好的體現了兩者的區別:
四、模型生成過程:
https://www.cnblogs.com/pinard/p/6831308.html
https://blog.csdn.net/liuy9803/article/details/81091022
LDA從生成式模型的角度看待文檔和主題,認為語料庫中所有文檔是隱含主題的隨機混合,每個主題是由所有單詞分布體現的。文檔m的生成過程為:
(1)根據參數為α的Dirichlet分布選擇一個主題分布,\theta _{m}\sim Dir(\alpha );
(2)根據參數為η的Dirichlet分布選擇一個單詞分布,\beta _{k}\sim Dir(\eta );
(3)按照下列步驟生成文檔m中的N_{m}個單詞:
a、根據\theta _{m} 指派主題,得到文檔m中單詞n的主題 z_{mn}\sim Multinomial(\theta _{m});
b、根據指派的主題z_{mn} 所對應的單詞分布\beta _{k} 生成單詞 w_{mn}\sim Multinomial(\beta _{z_{mn}})。