lda主題模型是乙個數學知識非常複雜的模型
可以rickjin的lda數學八卦了解狄利克雷共軛分布,伽馬函式->beta分布->狄利克雷共軛分布。
想要了解lda模型必須先知道plsa模型,plsa模型中需要em演算法,em演算法的學習見李航的統計學習方法。
lda通俗解釋
學習資料《lda數學八卦》
sklearn有lda演算法的實現,但是不是通過吉布斯取樣來做的,而是通過em演算法來做的。
from sklearn.feature_extraction.text import countvectorizer
from sklearn.decomposition import latentdirichletallocation
import jieba
file=open("path/post_data.txt","r",encoding="utf8")
dict={}
texts=
ont_words=set()
for line in file:
text=line.strip().split("\t")
if len(text)<2:
continue
words=list(jieba.cut(text[-1]))
dict[text[0]]=words
ont_words=ont_words|set(words)
print(len(ont_words))
cntvector = countvectorizer()
cnttf = cntvector.fit_transform(texts)
lda = latentdirichletallocation(n_topics=2,learning_offset=50.,random_state=0)
docres = lda.fit_transform(cnttf)
print(docres)
print(lda.components_.shape)
docres是每乙個文件對應的主題的概率。
lda.components_.
是每乙個詞對每乙個主題的貢獻。
lda的sklearn的官網
調參經驗
sklearn學習鏈結
lda主題模型的思考:
lda主題模型跟plsa的區別
plsa也是doc-top-word
但是doc-top 和top-word是類似多項分布,引數是沒有分布的。
而lda是上面引數也用分布表示的,詳見攜程機器學習書籍裡面的beta分布是二項分布的分布
所以lda求解的目標是求出這兩個引數。
lda最終效果是,對文件求出topic的分布,並且每個文件的詞也是滿足topic-word分布,並且分布的達到最大值。
也就是文件主題和文件詞滿足得到的分布的最優分布。
使用吉布斯取樣,先隨機生成topic,然後根據樣本迭代求出最優的引數。
LDA主題模型
先定義一些字母的含義 lda以文件集合d作為輸入 會有切詞,去停用詞,取詞幹等常見的預處理,略去不表 希望訓練出的兩個結果向量 設聚成k個topic,voc中共包含m個詞 lda的核心公式如下 p w d p w t p t d 直觀的看這個公式,就是以topic作為中間層,可以通過當前的 d和 t...
主題模型LDA
某隨機實驗如果有k個可能結局a1 a2 ak,分別將他們的出現次數記為隨機變數x1 x2 xk,它們的概率分布分別是p1,p2,pk,那麼在n次取樣的總結果中,a1出現n1次 a2出現n2次 ak出現nk次的這種事件的出現概率p有下面公式 p x1 n 1,xk nk n n1 nk pn1 1.p...
LDA主題模型
最近看了一下lda的文章,寫個小結,理解正確與否有待驗證.latent dirichlet allocation lda 是三層的層次概率貝葉斯模型 生成模型 用於處理離散資料,比如文字資料.假設一共有 v 個單詞,則第 j 個單詞表示為 w 0,cdots,0,1,0,cdots,0 text 假...