lda数学八卦_【技术博客】文本挖掘之LDA主题模型
作者:鄭培
引言
主題模型是文本挖掘的重要工具,近年來在工業界和學術界都獲得了非常多的關注。在文本挖掘領域,大量的數據都是非結構化的,很難從信息中直接獲取相關和期望的信息,一種文本挖掘的方法:主題模型(Topic Model)能夠識別在文檔里的主題,并且挖掘語料里隱藏信息,并且在主題聚合、從非結構化文本中提取信息、特征選擇等場景有廣泛的用途。Latent Dirichlet Allocation(LDA)是其中最具代表性的模型。LDA由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出,用來推測文檔的主題分布。它可以1)發掘語料庫中英藏的主題模式;2)根據主題對文檔進行標注;3)利用標注對文檔進行組織、整理、歸納和檢索。
1. 什么是主題(topic)?
從詞匯的角度講:使一篇文章或幾篇文章共同的代表、隱藏語義、共同出現詞語的一種模式、共同出現詞語的一種據類、一種弱的分類類表;
從概率分布的角度講:每個主題都是對所有詞的一個概率分布;主體對同時出現的詞賦予較高的概率;同時出現的次互相之間有某種關聯性;
從機器學習的角度來講,主題模型是將層次貝葉斯網絡應用到數據(文檔或者圖像)的典型應用:每篇文檔包含多個主題、隱含變量起到表示文檔間主體結構的作用、主題模型基于bag-of-word或者bag-of-feature假設(所以詞的順序是沒有意義的)。
2. 為什么是隱藏的(latent)?
貝葉斯網絡通過如下幾個方面描述變量之間的關系:
1. 連接節點的邊和邊的指向;
2. 結點的概率分布—先驗分布和后驗分布。
對于無法準確描述的變量關系通過引入隱含節點來解決。在LDA中,通過隱含節點的后驗概率來描述詞的共現現象,并且對其賦予較高的概率,用公式可以表述為:
用以下的盒子結構來表示重復結構:
如圖,其中結點表示變量,邊表示可能的依賴關系。隱含結點為空心,觀測結點為實心,盒子表示重復結構。則可以獲得LDA模型的整體結構:
3. LDA模型的文檔生成過程
在LDA模型中,一篇文檔生成的方式如下:
1. 從dirichlet分布α中取樣生成文檔i的主題分布θi
2. 從主題的多樣是分布θi中取樣生成文檔i的第j個詞的主題Zi,j
3. 從dirichlet分布β中取樣生成主題Zi,j對應的此域分布Фzi,j
4. 從詞語的多項式分布Фzi,j中采樣最終生成詞語ωi,j
上面的LDA的處理過程是拆解成一篇文檔一篇文檔的過程來處理,并不是實際的處理過程。文檔中每個詞的生成都要拋兩次骰子,第一次拋一個doc-topic骰子得到 topic, 第二次拋一個topic-word骰子得到 word,每次生成每篇文檔中的一個詞的時候這兩次拋骰子的動作是緊鄰輪換進行的。如果語料中一共有 N 個詞,則上帝一共要拋 2N次骰子,輪換的拋doc-topic骰子和 topic-word骰子。但實際上有一些拋骰子的順序是可以交換的,我們可以等價的調整2N次拋骰子的次序:前N次只拋doc-topic骰子得到語料中所有詞的 topics,然后基于得到的每個詞的 topic 編號,后N次只拋topic-word骰子生成 N 個word。此時,可以得到:
4. LDA模型的訓練
根據上一小節中的聯合概率分布
, 我們可以使用Gibbs Sampling對其進行采樣。我們得到LDA 模型的 Gibbs Sampling 公式為:
根據公式,我們的目標有兩個:
· 估計模型中的參數
和
;
· 對于新來的一篇文檔,我們能夠計算這篇文檔的 topic 分布
訓練的過程:
1. 對語料庫中的每篇文檔中的每個詞匯
,隨機的賦予一個topic編號z;
2. 重新掃描語料庫,對每個詞
,使用Gibbs Sampling公式對其采樣,求出它的topic,在語料中更新;
3. 重復步驟2,直到Gibbs Sampling收斂;
4. 統計語料庫的topic-word共現頻率矩陣,該矩陣就是LDA的模型;
根據這個topic-word頻率矩陣,我們可以計算每一個p(word|topic)概率,從而算出模型參數
, 這就是那 K 個 topic-word 骰子。而語料庫中的文檔對應的骰子參數
在以上訓練過程中也是可以計算出來的,只要在 Gibbs Sampling 收斂之后,統計每篇文檔中的 topic 的頻率分布,我們就可以計算每一個 p(topic|doc) 概率,于是就可以計算出每一個
。
由于參數
是和訓練語料中的每篇文檔相關的,對于我們理解新的文檔并無用處,所以工程上最終存儲 LDA 模型時候一般沒有必要保留。通常,在 LDA 模型訓練的過程中,我們是取 Gibbs Sampling 收斂之后的 n 個迭代的結果進行平均來做參數估計,這樣模型質量更高。
有了 LDA 的模型,對于新來的文檔 doc, 我們只要認為 Gibbs Sampling 公式中的
部分是穩定不變的,是由訓練語料得到的模型提供的,所以采樣過程中我們只要估計該文檔的 topic 分布
就好了. 具體算法如下:
1. 對當前文檔中的每個單詞
, 隨機初始化一個topic編號z;
2. 使用Gibbs Sampling公式,對每個詞
, 重新采樣其topic;
3. 重復以上過程,知道Gibbs Sampling收斂;
4. 統計文檔中的topic分布,該分布就是
5. 項目實現
項目源碼地址:https://momodel.cn/workspace/5e5e4746b3338581db1dcba9?type=app
6. 參考文獻
[1]Blei D M, Ng A Y, Jordan M I. Latent dirichlet allocation[J]. Journal of machine Learning research, 2003, 3(Jan): 993-1022.
[2]LDA 數學八卦Rickjin
關于我們
Mo(網址:https://momodel.cn) 是一個支持 Python的人工智能在線建模平臺,能幫助你快速開發、訓練并部署模型。
Mo人工智能俱樂部 是由 Mo 的研發與產品團隊發起、致力于降低人工智能開發與使用門檻的俱樂部。團隊具備大數據處理分析、可視化與數據建模經驗,已承擔多領域智能項目,具備從底層到前端的全線設計開發能力。主要研究方向為大數據管理分析與人工智能技術,并以此來促進數據驅動的科學研究。
http://weixin.qq.com/r/By8tNQ-EkVLurUtW93oV (二維碼自動識別)
總結
以上是生活随笔為你收集整理的lda数学八卦_【技术博客】文本挖掘之LDA主题模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker pull php7,Doc
- 下一篇: python第三方模块安装路径_Pyth