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;
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