lda主题模型应用java_主题模型LDA及在推荐系统中的应用
1 關(guān)于主題模型
使用LDA做推薦已經(jīng)有一段時(shí)間了,LDA的推導(dǎo)過(guò)程反復(fù)看過(guò)很多遍,今天有點(diǎn)理順的感覺(jué),就先寫(xiě)一版。隱含狄利克雷分布簡(jiǎn)稱(chēng)LDA(latent dirichlet allocation),是主題模型(topic model)的一種,由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出。 主題模型屬于聚類(lèi)方法,是一種無(wú)監(jiān)督的學(xué)習(xí)方法。
與通常的tf-idf相比,主題模型重在可以在語(yǔ)義上計(jì)算文本內(nèi)容的相關(guān)性。主題模型是一種詞袋模型,即只考慮文本總的詞頻,不考慮順序。
假設(shè)依據(jù)是一篇文本以一定的概率屬于多個(gè)主題(概率相加為1),一個(gè)詞也以一定的概率屬于多個(gè)主題(一個(gè)詞可能以不同的概率屬于不同的主題)。
參數(shù)的先驗(yàn)
topic-word分布受一個(gè)參數(shù)為α的對(duì)稱(chēng)Dirichlet約束
doc-topic分布受一個(gè)參數(shù)為β的對(duì)稱(chēng)Dirichlet約束
2 頻率學(xué)派與貝葉斯學(xué)派
這里簡(jiǎn)單介紹頻率學(xué)派和貝葉斯學(xué)派,因?yàn)镻LSA和LDA分別用的是這兩種學(xué)派的思想。直至今日,關(guān)于統(tǒng)計(jì)推斷的主張和想法,大體可以納入到兩個(gè)體系之內(nèi),其一叫頻率學(xué)派,其特征是把需要推斷的參數(shù)θ視作固定且未知的常數(shù),而樣本X是隨機(jī)的,其著眼點(diǎn)在樣本空間,有關(guān)的概率計(jì)算都是針對(duì)X的分布。另一派叫做貝葉斯學(xué)派,他們把參數(shù)θ視作隨機(jī)變量,而樣本X是固定的,其著眼點(diǎn)在參數(shù)空間,重視參數(shù)θ的分布,固定的操作模式是通過(guò)參數(shù)的先驗(yàn)分布結(jié)合樣本信息得到參數(shù)的后驗(yàn)分布。
以?huà)佊矌艦槔?#xff0c;正面朝上的概率是待求的參數(shù)。往小處說(shuō),頻率派認(rèn)為參數(shù)是客觀存在,不會(huì)改變,雖然未知,但卻是固定值;貝葉斯派則認(rèn)為參數(shù)是隨機(jī)值,因?yàn)闆](méi)有觀察到,那么和是一個(gè)隨機(jī)數(shù)也沒(méi)有什么區(qū)別,因此參數(shù)也可以有分布。
往大處說(shuō),頻率派最常關(guān)心的是似然函數(shù),而貝葉斯派最常關(guān)心的是后驗(yàn)分布。我們會(huì)發(fā)現(xiàn),后驗(yàn)分布其實(shí)就是似然函數(shù)乘以先驗(yàn)分布再normalize一下使其積分到1。因此兩者的很多方法都是相通的。貝葉斯派因?yàn)樗械膮?shù)都是隨機(jī)變量,都有分布,因此可以使用一些基于采樣的方法(如MCMC)使得我們更容易構(gòu)建復(fù)雜模型。頻率派的優(yōu)點(diǎn)則是沒(méi)有假設(shè)一個(gè)先驗(yàn)分布,因此更加客觀,也更加無(wú)偏。
例如,概率學(xué)派可能任務(wù)拋硬幣證明朝上的概率就是0.5;而貝葉斯學(xué)派先取得一個(gè)先驗(yàn)概率,在通過(guò)做試驗(yàn)觀察,結(jié)合先驗(yàn)概率和觀察結(jié)果得出一個(gè)后驗(yàn)概率,這個(gè)后驗(yàn)概率才是硬幣證明朝上的概率,后驗(yàn)概率本身也符合某種分布。
LDA是三層貝葉斯模型。 簡(jiǎn)單的說(shuō),一篇文章可以以不同的概率屬于多個(gè)主題,但分別以多大的概率屬于這些主題呢?例如文章A可以是{‘科技’:0.5, ‘體育’:0.2, ‘財(cái)經(jīng)’:0.3}這種分布, 也可能是{‘科技’:0.4, ‘體育’:0.4, ‘財(cái)經(jīng)’:0.2}這種分布. 貝葉斯學(xué)派認(rèn)為這個(gè)分布也服從一定分布,這里用的就是狄利克雷分布,即它在LDA中其實(shí)是一個(gè)分布的分布。并且,LDA用到兩次Dilichlet:一個(gè)主題中詞的概率分布也服從狄利克雷分布。
3 PLSA與LDA
介紹PLSA和LDA兩種生產(chǎn)模型。
3.1 PLSA
3.1.1 舉個(gè)生成文本的例子
一篇文章往往有多個(gè)主題,只是這多個(gè)主題各自在文檔中出現(xiàn)的概率大小不一樣。比如介紹一個(gè)國(guó)家的文檔中,往往會(huì)分別從教育、經(jīng)濟(jì)、交通等多個(gè)主題進(jìn)行介紹。那么在pLSA中,文檔是怎樣被生成的呢?
假設(shè)你要寫(xiě)M篇文檔,由于一篇文檔由各個(gè)不同的詞組成,所以你需要確定每篇文檔里每個(gè)位置上的詞。
再假定你一共有K個(gè)可選的主題,有V個(gè)可選的詞,咱們來(lái)玩一個(gè)扔骰子的游戲。假設(shè)你每寫(xiě)一篇文檔會(huì)制作一顆K面的“文檔-主題”骰子(扔此骰子能得到K個(gè)主題中的任意一個(gè)),和K個(gè)V面的“主題-詞項(xiàng)” 骰子(每個(gè)骰子對(duì)應(yīng)一個(gè)主題,K個(gè)骰子對(duì)應(yīng)之前的K個(gè)主題,且骰子的每一面對(duì)應(yīng)要選擇的詞項(xiàng),V個(gè)面對(duì)應(yīng)著V個(gè)可選的詞)。
比如可令K=3,即制作1個(gè)含有3個(gè)主題的“文檔-主題”骰子,這3個(gè)主題可以是:教育、經(jīng)濟(jì)、交通。然后令V = 3,制作3個(gè)有著3面的“主題-詞項(xiàng)”骰子,其中,教育主題骰子的3個(gè)面上的詞可以是:大學(xué)、老師、課程,經(jīng)濟(jì)主題骰子的3個(gè)面上的詞可以是:市場(chǎng)、企業(yè)、金融,交通主題骰子的3個(gè)面上的詞可以是:高鐵、汽車(chē)、飛機(jī)。
每寫(xiě)一個(gè)詞,先扔該“文檔-主題”骰子選擇主題,得到主題的結(jié)果后,使用和主題結(jié)果對(duì)應(yīng)的那顆“主題-詞項(xiàng)”骰子,扔該骰子選擇要寫(xiě)的詞。
先扔“文檔-主題”的骰子,假設(shè)(以一定的概率)得到的主題是教育,所以下一步便是扔教育主題篩子,(以一定的概率)得到教育主題篩子對(duì)應(yīng)的某個(gè)詞:大學(xué)。
上面這個(gè)投骰子產(chǎn)生詞的過(guò)程簡(jiǎn)化下便是:“先以一定的概率選取主題,再以一定的概率選取詞”。事實(shí)上,一開(kāi)始可供選擇的主題有3個(gè):教育、經(jīng)濟(jì)、交通,那為何偏偏選取教育這個(gè)主題呢?其實(shí)是隨機(jī)選取的,只是這個(gè)隨機(jī)遵循一定的概率分布。比如可能選取教育主題的概率是0.5,選取經(jīng)濟(jì)主題的概率是0.3,選取交通主題的概率是0.2,那么這3個(gè)主題的概率分布便是{教育:0.5,經(jīng)濟(jì):0.3,交通:0.2},我們把各個(gè)主題z在文檔d中出現(xiàn)的概率分布稱(chēng)之為主題分布,且是一個(gè)多項(xiàng)分布。
同樣的,從主題分布中隨機(jī)抽取出教育主題后,依然面對(duì)著3個(gè)詞:大學(xué)、老師、課程,這3個(gè)詞都可能被選中,但它們被選中的概率也是不一樣的。比如大學(xué)這個(gè)詞被選中的概率是0.5,老師這個(gè)詞被選中的概率是0.3,課程被選中的概率是0.2,那么這3個(gè)詞的概率分布便是{大學(xué):0.5,老師:0.3,課程:0.2},我們把各個(gè)詞語(yǔ)w在主題z下出現(xiàn)的概率分布稱(chēng)之為詞分布,這個(gè)詞分布也是一個(gè)多項(xiàng)分布。
所以,選主題和選詞都是兩個(gè)隨機(jī)的過(guò)程,先從主題分布{教育:0.5,經(jīng)濟(jì):0.3,交通:0.2}中抽取出主題:教育,然后從該主題對(duì)應(yīng)的詞分布{大學(xué):0.5,老師:0.3,課程:0.2}中抽取出詞:大學(xué)。
最后,你不停的重復(fù)扔“文檔-主題”骰子和”主題-詞項(xiàng)“骰子,重復(fù)N次(產(chǎn)生N個(gè)詞),完成一篇文檔,重復(fù)這產(chǎn)生一篇文檔的方法M次,則完成M篇文檔。
3.1.2 流程總結(jié)
pLSA中生成文檔的整個(gè)過(guò)程便是選定文檔生成主題,確定主題生成詞:
按照概率
選擇一篇文檔
選定文檔
后,從主題分布中按照概率
選擇一個(gè)隱含的主題類(lèi)別
選定后,從詞分布中按照概率
選擇一個(gè)詞
如下圖所示(圖中被涂色的d、w表示可觀測(cè)變量,未被涂色的z表示未知的隱變量,N表示一篇文檔中總共N個(gè)單詞,M表示M篇文檔):
上圖中,文檔d和詞w是我們得到的樣本(樣本隨機(jī),參數(shù)雖未知但固定,所以pLSA屬于頻率派思想。區(qū)別于下文要介紹的LDA中:樣本固定,參數(shù)未知但不固定,是個(gè)隨機(jī)變量,服從一定的分布,所以L(fǎng)DA屬于貝葉斯派思想),可觀測(cè)得到,所以對(duì)于任意一篇文檔,其
是已知的。
從而可以根據(jù)大量已知的文檔-詞項(xiàng)
信息,訓(xùn)練出文檔-主題
和主題-詞項(xiàng)
,如下公式所示:?
?
故得到文檔中每個(gè)詞的生成概率為:
?
由于可事先計(jì)算求出
,而
和
未知,所以就是我們要估計(jì)的
參數(shù)(值),通俗點(diǎn)說(shuō),就是要最大化這個(gè)θ。
用什么方法進(jìn)行估計(jì)呢,常用的參數(shù)估計(jì)方法有極大似然估計(jì)MLE、最大后驗(yàn)證估計(jì)MAP、貝葉斯估計(jì)等等。因?yàn)樵摯烙?jì)的參數(shù)中含有隱變量z,所以我們可以考慮EM算法。 本文不展開(kāi)介紹。
3.2 LDA
LDA就是在pLSA的基礎(chǔ)上加層貝葉斯框架。pLSA樣本隨機(jī),參數(shù)雖未知但固定,屬于頻率派思想;而LDA樣本固定,參數(shù)未知但不固定,是個(gè)隨機(jī)變量,服從一定的分布,LDA屬于貝葉斯派思想。 這里的參數(shù)是指文檔的主題分布、主題的詞分布。
3.2.1 LDA流程
從上圖可以看出,lda中,依據(jù)Dirichlet采樣到了不同的文檔-主題分布和主題-詞分布。1
2
Boxed:?
K is the number of topics
N is the number of words in the document
M is the number of documents to analyse
α is the Dirichlet-prior concentration parameter of the per-document topic distribution
β is the same parameter of the per-topic word distribution
φ(k) is the word distribution for topic k
θ(i) is the topic distribution for document i
z(i,j) is the topic assignment for w(i,j)
w(i,j) is the j-th word in the i-th document
φ and θ are Dirichlet distributions, z and w are multinomials.
生成文本的過(guò)程:
LDA模型中一篇文檔生成的方式:按照先驗(yàn)概率
選擇一篇文檔
從狄利克雷分布α中取樣生成文檔
的主題分布
,換言之,主題分布
由超參數(shù)為α的Dirichlet分布生成
從主題的多項(xiàng)式分布
中取樣生成文檔
第 j 個(gè)詞的主題
從狄利克雷分布(即Dirichlet分布)β中取樣生成主題
?
對(duì)應(yīng)的詞語(yǔ)分布
,換言之,詞語(yǔ)分布
由參數(shù)為β的Dirichlet分布生成
從詞語(yǔ)的多項(xiàng)式分布
中采樣最終生成詞語(yǔ)?
3.2.2 Gibbs LDA
前面已經(jīng)介紹了LDA流程,最終的目標(biāo)函數(shù)是個(gè)聯(lián)合概率。待求的doc-topic和topic-word兩個(gè)矩陣,是借助上述流程中的
求得的。gibbs sample就是用來(lái)求這個(gè)兩個(gè)概率矩陣的方法。 具體步驟再另一篇介紹采樣和變分的文章中再做介紹。
4 在推薦算法中的應(yīng)用
步驟:
1. 離線(xiàn)求的模型
2. 用模型對(duì)新文本預(yù)測(cè)topic,取topic概率帶到閾值(例如0.2)且topN個(gè)topic,例如doc1 :topic1:0.5, topic2:0.2
3. 用戶(hù)點(diǎn)擊doc1,就說(shuō)明用戶(hù)對(duì)topic1和topic2感興趣,保存用戶(hù)新聞分析結(jié)果,以待推薦
總結(jié)
以上是生活随笔為你收集整理的lda主题模型应用java_主题模型LDA及在推荐系统中的应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: contains java_Java C
- 下一篇: crmeb单商户java版安装_前端配置