lda算法

http://blog.baifendian.com/?p=1042

個性化推薦引擎:採用一種高效的算法來估計貝葉斯模型中的參數

問題定義:

LDA是一個三層次的貝葉斯模型,沒一個item可以通過一組topic來表示,而每個topic又符合一定的概率分佈。本文的LDA算法應用比較廣泛,可應用於文本建模,文本分類和電影推薦,並且本文采用了一種高效的算法來估計貝葉斯模型中的參數。 

方法:

(1)LDA算法

首先是幾個常見的術語:

11.Words:定義爲一個由“字母”組成的item,其中“字母”由{1,2,…,V}標識,words可以看做是“字母”向量V,如果words含有第v個“字母”,那麼wv=1,否則wv=0;

12.Documents:是由N個words組成,

13.Corpus:是有M個documents組成,

LDA算法的基本思想是,每個documents可以看做是由不同的topic組合而成,而每個topic則是由不同的words組成,如圖1所示。

 

LDA跟LSA、PLSA一樣,是一種主題模型(topic model),可以無監督地對文檔和詞進行分類。相對於LSA和PLSA只能對訓練集中的文檔分類,LDA的好處在於能夠預測非訓練集中的文檔和詞的主題分佈。與一般的機器學習分類算法不同,LDA的預測目標——主題分佈,是訓練集中不能直接觀察到的量,是人(或模型)虛構出來的一個東東,因此稱之爲潛在的(Latent)。也正因爲預測目標是模型自身虛構出來的一個隱變量,而不需要訓練集提供這個量,所以LDA可以實現無監督的學習。

LDA是一種生成模型(generative model),也就是說,與直接根據觀察到的文檔來進行預測不同,LDA首先假設了產生文檔的一個過程,然後根據觀察到文檔,來預測背後的產生過程是怎樣 的。LDA假設所有的文檔存在K個主題(主題其實就是詞的分佈),要生成一篇文檔,首先生成該文檔的一個主題分佈,然後再生成詞的集合;要生成一個詞,需 要根據文檔的主題分佈隨機選擇一個主題,然後根據主題中詞的分佈隨機選擇一個詞。

假設K維向量α是主題的先驗分佈的參數,K×V的矩陣β是主題中詞的分佈的參數(V爲詞的總數),即βij=p(wj|zi)=第i個主題中出現詞wj的概率,那麼生成一個文檔的主題分佈、再生成N個主題、進而得到這篇文檔的N個詞的概率可以表示爲:

其中θ是文檔的主題分佈向量,z是N維的主題向量,w是N個詞組成的向量。由於θ和z是訓練數據中觀察不到的潛在變量,求邊緣分佈將其從左邊消掉:

對含有M篇文檔的語料庫D來說,p(D|α,β)=∏d=1…Mp(wd|α,β),所以

 LDA的訓練過程就是求使得p(D|α,β)最大的參數α和β的值。求得α和β,我們就可以對一篇文檔的主題分佈,以及每個詞所屬的主題進行預測,即求:

但是,這個分佈不能直接計算,分母p(w|α,β)中的積分無法計算其解析表達式,因此需要採用統計估算技術。不管什麼樣的技術,只要能有效率地求出使得p(D|α,β)近似最大的參數α和β的值,以及使得p(θ,z|w,α,β)近似最大的θ和z的 的值,都可以用來訓練LDA模型和進行預測。在LDA的原始論文,採用variational inference算法來估算預測值,利用EM迭代算法來對參數α和β進行估計,Blei和Daichi Mochihashi的實現代碼也是採用這樣的方法,本文就不對定量的數學推導和估算做深入研究了,下面直接以Daichi Mochihashi的實現爲例來講一下訓練和預測算法。

LDA訓練算法:

(1)隨機初始化α和β;
(2)以下步驟迭代直到收斂:
   (2.1)對訓練集中的每篇文檔:
       (2.1.1)利用當前的α和β值計算每篇文檔的主題分佈、每個詞所屬的主題分佈(具體算法見下文);
   (2.2)累積所有文檔中,屬於主題k(k=1…K)的詞的個數,得到向量gammas;以及詞i(i=1…V)屬於主題k的次數,得到矩陣betas;
   (2.3)根據當前的gammas,利用Newton-Raphson迭代方法求得當前的最優α值;
   (2.4)對矩陣betas的列歸一化,直接得到當前的β值,即每個主題的詞的分佈;
(3)輸出達到收斂時的α和β的值。

步驟(2.1.1)的算法與基於訓練好的模型來進行預測的算法是相同的。它也是一個EM迭代算法,具體算法如下:

LDA預測算法:

(1)以平均分佈初始化K維向量nt,ntk是當前文檔中屬於類別k的詞的個數,nt可視爲未歸一化的文檔的主題分佈;
(2)以下步驟迭代直到nt達到穩定:
   (2.1)根據當前的α值(決定主題的先驗分佈),以及當前的nt值(當前文檔的主題分佈),以及當前的β值(主題的詞的分佈),計算文檔中的各個詞的主題分佈,得到矩陣q, qij=文檔中的第i個詞屬於主題k的概率(具體計算方法參考LDA論文以及variational inference方法);
   (2.2)利用矩陣q的值更新向量nt的值。
(3)將nt歸一化作爲文檔的主題分佈,矩陣q則爲文檔中每個詞的主題分佈。

=======================================================================

題目:Latent Dirichlet Allocation

作者:David M. Blei,Andrew Y. Ng and Michael I. Jordan

期刊:Journal of Machine Learning Research 3 (2003) 993-1022

鏈接:http://www.cs.princeton.edu/~blei/papers/BleiNgJordan2003.pdf


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章