1. 程式人生 > >文字主題模型之LDA(二) LDA求解之Gibbs取樣演算法

文字主題模型之LDA(二) LDA求解之Gibbs取樣演算法

 本文是LDA主題模型的第二篇,讀這一篇之前建議先讀文字主題模型之LDA(一) LDA基礎,同時由於使用了基於MCMC的Gibbs取樣演算法,如果你對MCMC和Gibbs取樣不熟悉,建議閱讀之前寫的MCMC系列MCMC(四)Gibbs取樣

 

1. Gibbs取樣演算法求解LDA的思路

    首先,回顧LDA的模型圖如下:

    在Gibbs取樣演算法求解LDA的方法中,我們的α,ηα,η是已知的先驗輸入,我們的目標是得到各個zdn,wknzdn,wkn對應的整體

→">z⃗ ,w⃗ z→,w→的概率分佈,即文件主題的分佈和主題詞的分佈。由於我們是採用Gibbs取樣法,則對於要求的目標分佈,我們需要得到對應分佈各個特徵維度的條件概率分佈。

    具體到我們的問題,我們的所有文件聯合起來形成的詞向量w⃗ w→是已知的資料,不知道的是語料庫主題z⃗ z→的分佈。假如我們可以先求出w,zw,z的聯合分佈p(w⃗ ,z⃗ )p(w→,z→),進而可以求出某一個詞

wi">wiwi對應主題特徵zizi的條件概率分佈p(zi=k|w⃗ ,z⃗ ¬i)p(zi=k|w→,z→¬i)。其中,z⃗ ¬iz→¬i代表去掉下標為ii的詞後的主題分佈。有了條件概率分佈p(zi=k|w⃗ ,z⃗ ¬i)p(zi=k|w→,z→¬i),我們就可以進行Gibbs取樣,最終在Gibbs取樣收斂後得到第
i">ii個詞的主題。

    如果我們通過取樣得到了所有詞的主題,那麼通過統計所有詞的主題計數,就可以得到各個主題的詞分佈。接著統計各個文件對應詞的主題計數,就可以得到各個文件的主題分佈。

    以上就是Gibbs取樣演算法求解LDA的思路。

2. 主題和詞的聯合分佈與條件分佈的求解

    從上一節可以發現,要使用Gibbs取樣求解LDA,關鍵是得到條件概率p(zi=k|w⃗ ,z⃗ ¬i)p(zi=k|w→,z→¬i)的表示式。那麼這一節我們的目標就是求出這個表示式供Gibbs取樣使用。

    首先我們簡化下Dirichlet分佈的表示式,其中(α)△(α)是歸一化引數:

Dirichlet(p⃗ |α⃗ )=Γ(k=1Kαk)Kk=1Γ(αk)k=1Kpαk1k=1(α⃗ )k=1Kpαk1kDirichlet(p→|α→)=Γ(∑k=1Kαk)∏k=1KΓ(αk)∏k=1Kpkαk−1=1△(α→)∏k=1Kpkαk−1

 

    現在我們先計算下第d個文件的主題的條件分佈p(z⃗ d|α)p(z→d|α),在上一篇中我們講到αθdz⃗ dα→θd→z→d組成了Dirichlet-multi共軛,利用這組分佈,計算p(z⃗ d|α⃗ )p(z→d|α→)如下:

p(z⃗ d|α⃗ )=p(z⃗ d|θ⃗ d)p(θd|α⃗ )dθ⃗ d=k=1Kpn(k)dkDirichlet(α⃗ )dθ⃗ d=k=1Kpn(k)dk1(α⃗ )k=1Kpαk1kdθ⃗ d=1(α⃗ )k=1Kpn(k)d+αk1kdθ⃗ d=(n⃗ d+α⃗ )(α⃗ )(1)(2)(3)(4)(5)(1)p(z→d|α→)=∫p(z→d|θ→d)p(θd|α→)dθ→d(2)=∫∏k=1Kpknd(k)Dirichlet(α→)dθ→d(3)=∫∏k=1Kpknd(k)1△(α→)∏k=1Kpkαk−1dθ→d(4)=1△(α→)∫∏k=1Kpknd(k)+αk−1dθ→d(5)=△(n→d+α→)△(α→)

 

    其中,在第d個文件中,第k個主題的詞的個數表示為:n(k)dnd(k), 對應的多項分佈的計數可以表示為

n⃗ d=(n(1)d,n(2)d,...n(K)d)n→d=(nd(1),nd(2),...nd(K))

 

    有了單一一個文件的主題條件分佈,則可以得到所有文件的主題條件分佈為:

p(z⃗ |α⃗ )=d=1Mp(z⃗ d|α⃗ )=d=1M(n⃗ d+α⃗ )(α⃗ )p(z→|α→)=∏d=1Mp(z→d|α→)=∏d=1M△(n→d+α→)△(α→)

 

    同樣的方法,可以得到,第k個主題對應的詞的條件分佈p(w⃗ |z⃗ ,η⃗ )p(w→|z→,η→)為:

p(w

相關推薦

文字主題模型LDA() LDA求解Gibbs取樣演算法

 本文是LDA主題模型的第二篇,讀這一篇之前建議先讀文字主題模型之LDA(一) LDA基礎,同時由於使用了基於MCMC的Gibbs取樣演算法,如果你對MCMC和Gibbs取樣不熟悉,建議閱讀之前寫的MCMC系列MCMC(四)Gibbs取樣。   1. Gibbs取樣演算法求解LDA的思

文字主題模型潛在語義分析(LDA:Latent Dirichlet Allocation)

1、LDA作用 傳統判斷兩個文件相似性的方法是通過檢視兩個文件共同出現的單詞的多少,如TF-IDF等,這種方法沒有考慮到文字背後的語義關聯,可能在兩個文件共同出現的單詞很少甚至沒有,但兩個文件是相似的。 舉個例子,有兩個

文字主題模型LDA(一) LDA基礎

在前面我們講到了基於矩陣分解的LSI和NMF主題模型,這裡我們開始討論被廣泛使用的主題模型:隱含狄利克雷分佈(Latent Dirichlet Allocation,以下簡稱LDA)。注意機器學習還有一個LDA,即線性判別分析,主要是用於降維和分類的,如果大家需要了解這個LD

文字主題模型非負矩陣分解(NMF)

在文字主題模型之潛在語義索引(LSI)中,我們講到LSI主題模型使用了奇異值分解,面臨著高維度計算量太大的問題。這裡我們就介紹另一種基於矩陣分解的主題模型:非負矩陣分解(NMF),它同樣使用了矩陣分解,但是計算量和處理速度則比LSI快,它是怎麼做到的呢? 1. 非負矩陣分解(NMF)概述    

我是這樣一步步理解--主題模型(Topic Model)、LDA(案例程式碼)

1. LDA模型是什麼 LDA可以分為以下5個步驟: 一個函式:gamma函式。 四個分佈:二項分佈、多項分佈、beta分佈、Dirichlet分佈。 一個概念和一個理念:共軛先驗和貝葉斯框架。 兩個模型:pLSA、LDA。 一個取樣:Gibbs取樣 關於LDA有兩種含義,一種是線性判別分析(Linear

gensim文字主題模型推薦

用gensim包做中文文字的推薦 一、gensim是generate similar的簡寫,叫做普遍相似。對於gensim這個包建議新手直接使用anaconda工具進行集中安裝 二、gensim

[算法系列]字串匹配蠻力匹配

引言 字串匹配是資料庫開發和文書處理軟體的關鍵。幸運的是所有現代程式語言和字串庫函式,幫助我們的日常工作。不過理解他們的原理還是比較重要的。 字串演算法主要可以分為幾類。字串匹配就是其中之一。當我們提到字串匹配演算法,最基本的方法就是所謂的蠻力解法,這意味著

Kaggle學習路() —— Digit Recognizer問題分析

Digit Recognizer是數字手寫體識別。 Kirill Kliavin基於TensorFlow 框架與深度學習演算法,給出了準確率高達0.99的解決方法,值得我們學習。 閱讀本篇的先決條件:需要有一定python基礎,一些線性代數的理論基礎,

機器學習主題模型LDA引數求解——Gibbs取樣

LDA引數推導的Gibbs取樣方法基於馬爾科夫鏈蒙特卡洛方法,因此首先學習MCMC方法。 一、馬爾科夫鏈蒙特卡洛方法 MCMC(Markov Chain Monte Carlo)方法是構造適合的馬爾科夫鏈,使其平穩分佈為待估引數的後驗分佈,抽樣並使用蒙特卡洛方法進行積

機器學習LDA主題模型演算法

1、知道LDA的特點和應用方向 1.1、特點 知道LDA說的降維代表什麼含義:將一篇分詞後的文章降維為一個主題分佈(即如20個特徵向量主題)。 根據對應的特徵向量中的相關主題概率(20個主題的概率相加為1即為主題分佈)得到對應的文件主題,屬於無監督學習(你沒有

NLP:主題模型LDA+SVM進行文字分類

參考:http://www.cnblogs.com/pinard/p/6908150.htmlhttp://blog.csdn.net/TiffanyRabbit/article/details/764

Spark:聚類演算法LDA主題模型演算法

Spark上實現LDA原理LDA主題模型演算法Spark實現LDA的GraphX基礎在Spark 1.3中,MLlib現在支援最成功的主題模型之一,隱含狄利克雷分佈(LDA)。LDA也是基於GraphX上構建的第一個MLlib演算法,GraphX是實現它最自然的方式。有許多演

文字主題抽取:用gensim訓練LDA模型

得知李航老師的《統計學習方法》出了第二版,我第一時間就買了。看了這本書的目錄,非常高興,好傢伙,居然把主題模型都寫了,還有pagerank。一路看到了馬爾科夫蒙特卡羅方法和LDA主題模型這裡,被打擊到了,滿滿都是數學公式。LDA是目前為止我見過最複雜的模型了。 找了培訓班的視訊看,對LDA模型有了大致的認識

用scikit-learn學習LDA主題模型

大小 href 房子 鏈接 size 目標 文本 訓練樣本 papers     在LDA模型原理篇我們總結了LDA主題模型的原理,這裏我們就從應用的角度來使用scikit-learn來學習LDA主題模型。除了scikit-learn, 還有spark MLlib和gen

初試主題模型LDA-基於python的gensim包

rpo nco reload tps 代碼 list sdn str height http://blog.csdn.net/a_step_further/article/details/51176959 LDA是文本挖掘中常用的主題模型,用來從大量文檔中提取出最能表達各個

Spark機器學習(8):LDA主題模型算法

算法 ets 思想 dir 骰子 cati em算法 第一個 不同 1. LDA基礎知識 LDA(Latent Dirichlet Allocation)是一種主題模型。LDA一個三層貝葉斯概率模型,包含詞、主題和文檔三層結構。 LDA是一個生成模型,可以用來生成一篇文

LDA主題模型

.com img png src 技術 nbsp ima blog com LDA主題模型

LDA主題模型三連擊-入門/理論/代碼

矩陣 ota 函數 dom 主題模型 估計 chart news span 本文將從三個方面介紹LDA主題模型——整體概況、數學推導、動手實現。 關於LDA的文章網上已經有很多了,大多都是從經典的《LDA 數學八卦》中引出來的,原創性不太多。 本文將用盡量少的公式,跳過不

在PYTHON中使用TMTOOLKIT進行主題模型LDA評估

統一 進行 常量 註意 參數 cti 8.0 數列 ng- 主題建模的英文一種在大量文檔中查找抽象藝術主題藝術的方法。有了它,就有可能發現隱藏或“潛在”主題的混合,這些主題因給定語料庫中的文檔而異。一種作為監督無的機器學習方法,主題模型不容易評估,因為沒有標記的“基礎事實”

LDA 主題模型 通俗簡單講解

https://algobeans.com/2015/06/21/laymans-explanation-of-topic-modeling-with-lda-2/ http://blog.echen.me/2011/08/22/introduction-to-latent-dirich