當前位置:首頁 » 操作系統 » lda演算法主題模型

lda演算法主題模型

發布時間: 2022-12-08 10:47:25

㈠ 什麼是LDA主題模型

在機器學習領域,LDA是兩個常用模型的簡稱:Linear Discriminant Analysis 和 Latent Dirichlet Allocation。本文的LDA僅指代Latent Dirichlet Allocation. LDA 在主題模型中佔有非常重要的地位,常用來文本分類。
LDA由Blei, David M.、Ng, Andrew Y.、Jordan於2003年提出,用來推測文檔的主題分布。它可以將文檔集中每篇文檔的主題以概率分布的形式給出,從而通過分析一些文檔抽取出它們的主題分布後,便可以根據主題分布進行主題聚類或文本分類。
LDA 模型涉及很多數學知識,這也許是LDA晦澀難懂的主要原因。本小節主要介紹LDA中涉及的數學知識。數學功底比較好的同學可以直接跳過本小節。
LDA涉及到的先驗知識有:二項分布、Gamma函數、Beta分布、多項分布、Dirichlet分布、馬爾科夫鏈、MCMC、Gibs Sampling、EM演算法等。限於篇幅,本文僅會有的放矢的介紹部分概念,不會每個概念都仔細介紹,亦不會涉及到每個概念的數學公式推導。如果每個概念都詳細介紹,估計都可以寫一本百頁的書了。如果你對LDA的理解能達到如數家珍、信手拈來的程度,那麼恭喜你已經掌握了從事機器學習方面的扎實數學基礎。想進一步了解底層的數學公式推導過程,可以參考《數學全書》等資料。

㈡ NLP系列(三)LDA主題模型

LDA模型是NLP中很基礎也是大家廣為熟知的模型,在面試過程也經常遇到。本文簡單講述下其大致流程。

首先,我們來感受下LDA是什麼,

看來,不同人在不同場景下對LDA的認識,那我們看下網路的解釋:

看到這里我們只需要先記住: LDA的目的就是要識別主題,即把文檔—詞彙矩陣變成文檔—主題矩陣(分布)和主題—詞彙矩陣(分布)

對於語料庫中的每篇文檔,LDA定義了如下生成過程(generativeprocess):
1.對每一篇文檔,從主題分布中抽取一個主題;
2.從上述被抽到的主題所對應的單詞分布中抽取一個單詞;
3.重復上述過程直至遍歷文檔中的每一個單詞。

語料庫中的每一篇文檔與T(通過反復試驗等方法事先給定)個主題的一個多項分布 (multinomialdistribution)相對應,將該多項分布記為θ。每個主題又與詞彙表(vocabulary)中的V個單詞的一個多項分布相對應,將這個多項分布記為φ。

LDA的核心公式如下:
p(w|d)=p(w|t)*p(t|d)
直觀的看這個公式,就是以Topic作為中間層,可以通過當前的θd和φt給出了文檔d中出現單詞w的概率。其中p(t|d)利用θd計算得到,p(w|t)利用φt計算得到。
實際上,利用當前的θd和φt,我們可以為一個文檔中的一個單詞計算它對應任意一個Topic時的p(w|d),然後根據這些結果來更新這個詞應該對應的topic。然後,如果這個更新改變了這個單詞所對應的Topic,就會反過來影響θd和φt。

LDA演算法開始時,先隨機地給θd和φt賦值(對所有的d和t)。然後上述過程不斷重復,最終收斂到的結果就是LDA的輸出。再詳細說一下這個迭代的學習過程:
1.針對一個特定的文檔ds中的第i單詞wi,如果令該單詞對應的topic為tj,可以把上述公式改寫為:
pj(wi|ds)=p(wi|tj)*p(tj|ds)
2.現在我們可以枚舉T中的topic,得到所有的pj(wi|ds),其中j取值1~k。然後可以根據這些概率值結果為ds中的第i個單詞wi選擇一個topic。最簡單的想法是取令pj(wi|ds)最大的tj(注意,這個式子里只有j是變數),即argmax[j]pj(wi|ds)
3.然後,如果ds中的第i個單詞wi在這里選擇了一個與原先不同的topic,就會對θd和φt有影響了(根據前面提到過的這兩個向量的計算公式可以很容易知道)。它們的影響又會反過來影響對上面提到的p(w|d)的計算。對D中所有的d中的所有w進行一次p(w|d)的計算並重新選擇topic看作一次迭代。這樣進行n次循環迭代之後,就會收斂到LDA所需要的結果了。

N個文檔組成的語料庫(𝐷 1,𝐷 2,"……" ,𝐷 𝑛),由V個片語成的詞彙表。矩陣中的值表示了詞𝑊𝑗 〖在文檔𝐷〗 𝑖 中出現的頻率,主題用Z表示,下面對語料庫中的每一個word隨機指派一個主題編號𝑍 𝑖,統計每個𝑍_𝑖下出現的word次數,可得一個主題—詞彙矩陣。

統計每個詞代表的主題在每一個文檔中出現的次數,可得出以下矩陣文檔—主題矩陣

以上講了大致LDA的感性認識,如果進行嚴格的數學推導請看這篇文章( https://www.jianshu.com/p/74ec7d5f6821 ),本人認為是看到的不錯的文章。

LDA對自己一直是一個謎,看了網上的很多資料,然後整理了幾篇不錯的,我在這里貼出來。本篇文章主要大致了解了下LDA的大致流程,如果真正搞懂其背後數學原理,還得反復看一下下面的文章:

LDA(LDA文檔主題生成模型)_網路

㈢ 無監督第五節:LDA (Latent Dirichlet Allocation演算法細節)(主題模型)

LDA是生成式概率模型。基本的觀點是一個文檔由多個隱主題生成,每個主題是由單詞的分布式表達。

LDA假設在語料庫D中每個文檔的生成過程如下:

1.主題數量k已知

2.單詞的概率由參數 控制


參數 是一個k 維的向量,並且每個元素大於0, 服從Gamma 分布

已知參數 , 聯合分布主題混合的參數 , 表示主題的參數 z,表示文檔的參數w:

對 積分,並對z求和得到關於文檔的邊緣分布:

所有文檔的邊緣分布相乘,得到整個語料庫的概率:

參數 和參數 是語料庫級別的參數,在生成語料庫的過程中使用。

變數 是文檔級別的參數,每個文檔采樣一次。

變數 和 是單詞級別的參數,每個文檔中每個單詞都采樣一次.

一組隨機變數如果聯合分布和變數的排列順序無關,則稱這組變數是可交換的。

在LDA中,我們假設單詞是由主題生成的,並且這些主題在文檔中是無限可交換的,

其中 是關於主題多項式分布的隨機變數。

通過對隱主題變數z積分。可以得到單詞分布:

這是一個隨機量,因為他依賴於

我們定義接下來的生成過程, 對於一個文檔 w

1.選擇θ∼Dir(α)

2.對於每個N的單詞 :

(a)從 中選擇一個單詞

這個過程定義一篇文檔的邊緣分布看成一個連續的混合分布

inference的關心的問題使用LDA來計算隱變數z的後驗分布:

這個分布通常很難計算。通過normaliza 分布,並且計算邊緣分布。

這個後驗分布很難計算,但是通過一些變分推斷的方法還是可以得到。

基本的觀點是使用jensen's 不等式來獲得一個調整的下界,變分參數通過優化過程來試圖找到最接近的可能的下界。

一個簡單的方式是通過鮮花原始的計算圖,將一些邊和節點移去。在LDA中,原始的圖是左圖,通過把 移去,生成右邊含有自由變分參數的圖。
新的計算圖使用如下變分分布:

是狄利克雷參數,多項式參數(φ1 , . . . , φ N ) 是自由變數參數。

得到簡化的概率分布後,下一步是開始的優化問題是決定變分參數 的值。

優化這個變分參數是通過最小化KL散度來實現,並且吧他們設為0,得到以下的更新參數。

在文本的語言中,優化參數 是文檔制定的。特別的,我們認為狄利克雷參數 是一個文檔的主題表達。

經驗貝葉斯方法來估計LDA中的參數。給定一個語料D,我們希望找到參數 來最大化邊緣似然概率:

計算 比較困難,可以通過變分EM演算法來估計。

1.E step,對於每個文檔,找到最優的變分參數 。

2.M step, 最大化結果的下界。

重復上述幾步直到下界收斂。

㈣ 對比傳統K-Means等聚類演算法,LDA主題模型在文本聚類上有何優缺點

K-means 演算法屬於聚類分析方法中一種基本的且應用最廣泛的劃分演算法,它是一種已知聚類類別數的聚類演算法。指定類別數為K,對樣本集合進行聚類,聚類的結果由K 個聚類中心來表達,基於給定的聚類目標函數(或者說是聚類效果判別准則),演算法採用迭代更新的方法,每一次迭代過程都是向目標函數值減小的方向進行,最終的聚類結果使目標函數值取得極小值,達到較優的聚類效果。使用平均誤差准則函數E作為聚類結果好壞的衡量標准之一,保證了演算法運行結果的可靠性和有效性。
-

熱點內容
探影哪個配置性價比最高 發布:2024-03-29 17:24:08 瀏覽:485
phpmyadminlinux安裝 發布:2024-03-29 17:13:15 瀏覽:792
python中replace 發布:2024-03-29 17:08:17 瀏覽:652
mdb導入sql 發布:2024-03-29 17:07:36 瀏覽:128
java資料庫工具類 發布:2024-03-29 16:31:15 瀏覽:388
安卓機哪裡看型號 發布:2024-03-29 15:59:40 瀏覽:281
cad解壓錯誤 發布:2024-03-29 15:01:45 瀏覽:79
存儲指令集 發布:2024-03-29 14:39:27 瀏覽:649
資料庫表刪除數據 發布:2024-03-29 14:39:26 瀏覽:367
出c語言整除 發布:2024-03-29 14:28:22 瀏覽:572