LDA主題模型的學習路線

2021-08-20 10:07:39 字數 1576 閱讀 2383

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 假...