本篇內(nèi)容介紹了“分析LDA在推薦系統(tǒng)上的引用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供扶溝網(wǎng)站建設(shè)、扶溝做網(wǎng)站、扶溝網(wǎng)站設(shè)計、扶溝網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、扶溝企業(yè)網(wǎng)站模板建站服務(wù),十載扶溝做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
導讀
LDA是文檔分類上的經(jīng)典算法,如何應(yīng)用到推薦系統(tǒng)上,大家可以看看。
Latent Dirichlet Allocation(LDA)是一種無監(jiān)督發(fā)現(xiàn)語料庫底層主題的主題建模算法。它已被廣泛應(yīng)用于各種領(lǐng)域,特別是在自然語言處理和推薦系統(tǒng)中。
概要介紹
LDA是語料庫/文檔的生成概率模型。它基于“詞袋”假設(shè),即詞語和文檔是可互換的。也就是說,忽略了文檔中文字的順序,或者忽略了文檔的順序。其基本思想是每個文檔都是由不同的主題組合而成,而每個主題的是通過單詞的分布來描述。
每個文檔都由一個主題分布組成
每個主題都用單詞的分布來表示
LDA假設(shè)單個文檔的生成都是通過從每個文檔中抽取主題,然后從每個抽取的主題中抽取單詞來生成的。為了獲得單詞和主題的適當分布,我們可以使用Gibbs Sampling、Maximum a Posteriori (MAP)或expect Maximization (EM)來訓練LDA。
Plate表示法
為了更深入一點,讓我們討論一下LDA的符號表示法。在貝葉斯推理中,Plate表示法是一種圖形化的表示隨機變量抽樣的重復過程的方法。每個plate可以看作是一個“循環(huán)”,其中plate右下角的變量表示循環(huán)的迭代次數(shù)。下面是LDA的Plate表示法。
LDA plate 表示法
在上面的圖中有兩個組件。上面的plate,有K個主題,這些主題的詞的狄利克雷分布由超參數(shù)β控制。同樣,下面的表格描述了有M個文檔,每個文檔包含N個單詞?;疑膱A圈w是觀察到的單詞,圓圈代表不同的潛在變量。z指的是與w相關(guān)聯(lián)的主題,θ是文檔主題的狄利克雷分布,由另一個超參數(shù)?控制。
生成過程
現(xiàn)在我們大致了解了如何通過plate表示法來生成文檔。讓我們用數(shù)學來表示它。
從狄利克雷分布(θ_i ~ Dir(?),i從1到M)中采樣θ
從另一個狄利克雷分布(φ_k ~ Dir(β) k從1到K)中采樣φ
從z_ij ~ Multinomial(θ_i) 采樣,從w_ij ~ Multinomial(φ_z_ij) 中采樣,i從1到M,j從1到N
以《紐約時報》為例。首先,對于每個新聞文章,我們對整個文檔的主題分布θ_i_進行采樣。對每個主題中詞的分布φ_k_進行采樣。然后,對于每個文檔中的詞j,我們從給定的主題分布Multinomial(θ_i)中得到一個主題z_ij,然后從給定的詞的分布Multinomial(φ_z_ij)中的到w_ij,并基于w_ij采樣得到一個單詞。這個過程通過下面的圖來表示。
生成過程的可視化
狄利克雷分布
我們一直把狄利克雷作為黑盒子,卻沒有給出任何解釋。讓我們簡要地討論一下狄利克雷分布背后的直覺。一個k維狄利克雷分布由一個k維參數(shù)向量控制。下面我們展示一個狄利克雷分布的三維例子?;舅枷胧?,alpha值越大,分布被推到中心的概率越大。這種分布使得確定與主題/文檔相關(guān)聯(lián)的單詞/主題的部分具有很高的靈活性,因為一些主題/文檔可能與一組很大的單詞/主題相關(guān)聯(lián),而其他的可能不相關(guān)聯(lián)。
狄利克雷分布
學習
學習LDA模型的問題稱為“推理”問題。給定觀測變量w,以及超參數(shù)?和β,我們?nèi)绾喂烙嫕撟兞康暮篁灨怕省?/p>
然而,分母中計算的積分在計算上是很麻煩的。
因此,必須使用近似推理。常用的方法是吉布斯抽樣和變分推論。在這篇文章中,我們將重點討論前者。
吉布斯抽樣
利用吉布斯采樣,我們可以避免直接計算棘手的積分?;镜南敕ㄊ?,我們想從p (w |?,β)中采樣來估計這個分布,但我們不能直接這樣做。相反,Gibbs抽樣允許我們迭代地計算一個潛在變量的后驗值,同時固定所有其他變量。通過這種方式,我們可以獲得后驗分布p(θ, z, φ| w, ?, β)。
對于每次迭代,我們交替采樣w,?,β,并固定所有其他變量。算法如下面的偽代碼所示:
For i from 1 to MaxIter:
Sample θ_i} ~p(θz= z_{i-1, φ = φ_{i-1}w, ?, β)
Sample z_i} ~p(zθ =θ_{i, φ = φ_{i-1}w, ?, β)
Sample φ_i} ~p(φθ = θ_{i, z= z_{i}w, ?, β)
由于來自早期迭代的樣本不穩(wěn)定,我們將丟棄樣本的第一個B次迭代,稱為“老化”。
LDA在推薦系統(tǒng)上的應(yīng)用
LDA通常用于兩種情況下的推薦系統(tǒng):
協(xié)同過濾(CF)
基于內(nèi)容的推薦
協(xié)同過濾
當LDA應(yīng)用于基于物品的CF時,物品和用戶類似于我們一直在討論的文檔和單詞(基于用戶的CF正好相反)。換句話說,每個物品都與用戶組(主題)上的分布相關(guān)聯(lián),每個用戶組都是用戶的分布。使用LDA,我們可以發(fā)現(xiàn)用戶和物品之間的隱藏關(guān)系。
基于內(nèi)容的推薦
第二個應(yīng)用是基于內(nèi)容的推薦,非常簡單。我們不只是利用普通的TF-IDF來提取每個物品的文本數(shù)據(jù)的特征向量,而且還通過LDA來對這些文本數(shù)據(jù)的主題進行建模。下面提供了用于訓練LDA和推斷給定文檔主題的示例代碼。
from gensim.test.utils import common_textsfrom gensim.corpora.dictionary import Dictionaryfrom gensim.models import LdaModel# Create a corpus from a list of textscommon_dictionary = Dictionary(common_texts)common_corpus = [common_dictionary.doc2bow(text) for text in common_texts]# Train the model on the corpus.lda = LdaModel(common_corpus, num_topics=10)
訓練LDA
# infer the topic distribution of the second corpus.lda[common_corpus[1]]'''output[(0, 0.014287902), (1, 0.014287437), (2, 0.014287902), (3, 0.014285716), (4, 0.014285716), (5, 0.014285714), (6, 0.014285716), (7, 0.014285716), (8, 0.014289378), (9, 0.87141883)]'''
推斷主題的分布向量
“分析LDA在推薦系統(tǒng)上的引用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!