導讀
LDA是文檔分類上的經典算法,如何應用到推薦系統上,大家可以看看。
Latent Dirichlet Allocation(LDA)是一種無監督發現語料庫底層主題的主題建模算法。它已被廣泛應用於各種領域,特別是在自然語言處理和推薦系統中。這篇博文將帶你從LDA的概況介紹到詳細的技術說明,最後我們將討論LDA在推薦系統上的應用!
概要介紹
LDA是語料庫/文檔的生成概率模型。它基於「詞袋」假設,即詞語和文檔是可互換的。也就是說,忽略了文檔中文字的順序,或者忽略了文檔的順序。其基本思想是每個文檔都是由不同的主題組合而成,而每個主題的是通過單詞的分布來描述。
每個文檔都由一個主題分布組成
每個主題都用單詞的分布來表示
LDA假設單個文檔的生成都是通過從每個文檔中抽取主題,然後從每個抽取的主題中抽取單詞來生成的。為了獲得單詞和主題的適當分布,我們可以使用Gibbs Sampling、Maximum a Posteriori (MAP)或expect Maximization (EM)來訓練LDA。
Plate表示法
為了更深入一點,讓我們討論一下LDA的符號表示法。在貝葉斯推理中,Plate表示法是一種圖形化的表示隨機變量抽樣的重複過程的方法。每個plate可以看作是一個「循環」,其中plate右下角的變量表示循環的迭代次數。下面是LDA的Plate表示法。
LDA plate 表示法
在上面的圖中有兩個組件。上面的plate,有K個主題,這些主題的詞的狄利克雷分布由超參數β控制。同樣,下面的表格描述了有M個文檔,每個文檔包含N個單詞。灰色的圓圈w是觀察到的單詞,圓圈代表不同的潛在變量。z指的是與w相關聯的主題,θ是文檔主題的狄利克雷分布,由另一個超參數⍺控制。
生成過程
現在我們大致了解了如何通過plate表示法來生成文檔。讓我們用數學來表示它。
以《紐約時報》為例。首先,對於每個新聞文章,我們對整個文檔的主題分布θ_i_進行採樣。對每個主題中詞的分布φ_k_進行採樣。然後,對於每個文檔中的詞j,我們從給定的主題分布Multinomial(θ_i)中得到一個主題z_ij,然後從給定的詞的分布Multinomial(φ_z_ij)中的到w_ij,並基於w_ij採樣得到一個單詞。這個過程通過下面的圖來表示。
生成過程的可視化
狄利克雷分布
我們一直把狄利克雷作為黑盒子,卻沒有給出任何解釋。讓我們簡要地討論一下狄利克雷分布背後的直覺。一個k維狄利克雷分布由一個k維參數向量控制。下面我們展示一個狄利克雷分布的三維例子。基本思想是,alpha值越大,分布被推到中心的概率越大。這種分布使得確定與主題/文檔相關聯的單詞/主題的部分具有很高的靈活性,因為一些主題/文檔可能與一組很大的單詞/主題相關聯,而其他的可能不相關聯。
狄利克雷分布
學習
學習LDA模型的問題稱為「推理」問題。給定觀測變量w,以及超參數⍺和β,我們如何估計潛變量的後驗概率。
然而,分母中計算的積分在計算上是很麻煩的。
因此,必須使用近似推理。常用的方法是吉布斯抽樣和變分推論。在這篇文章中,我們將重點討論前者。
吉布斯抽樣
利用吉布斯採樣,我們可以避免直接計算棘手的積分。基本的想法是,我們想從p (w |⍺,β)中採樣來估計這個分布,但我們不能直接這樣做。相反,Gibbs抽樣允許我們迭代地計算一個潛在變量的後驗值,同時固定所有其他變量。通過這種方式,我們可以獲得後驗分布p(θ, z, φ| w, ⍺, β)。
對於每次迭代,我們交替採樣w,⍺,β,並固定所有其他變量。算法如下面的偽代碼所示:
For i from 1 to MaxIter:
由於來自早期迭代的樣本不穩定,我們將丟棄樣本的第一個B次迭代,稱為「老化」。
LDA在推薦系統上的應用
LDA通常用於兩種情況下的推薦系統:
協同過濾
當LDA應用於基於物品的CF時,物品和用戶類似於我們一直在討論的文檔和單詞(基於用戶的CF正好相反)。換句話說,每個物品都與用戶組(主題)上的分布相關聯,每個用戶組都是用戶的分布。使用LDA,我們可以發現用戶和物品之間的隱藏關係。
基於內容的推薦
第二個應用是基於內容的推薦,非常簡單。我們不只是利用普通的TF-IDF來提取每個物品的文本數據的特徵向量,而且還通過LDA來對這些文本數據的主題進行建模。下面提供了用於訓練LDA和推斷給定文檔主題的示例代碼。
訓練LDA
推斷主題的分布向量
總結
在這篇博文中,我們討論了LDA從高層到詳細的數學解釋。另外,我們還討論了LDA在推薦系統上的應用,並提供了如何使用的示例代碼。我希望這篇文章對你有幫助,下次再見
【編輯推薦】
【責任編輯:
華軒TEL:(010)68476606】