天天看點

java lda主題模型_主題模型LDA:從入門到放棄

宏觀了解

LDA有兩種含義

線性判别器(Linear Discriminant Analysis)

隐含狄利克雷分布(Latent Dirichlet Allocation,簡稱LDA)

本文講解的是後者,它常常用于淺層語義分析,在文本語義分析中是一個很有用的模型。

LDA模型是一種主題模型,它可以将文檔集中的每篇文檔的主題以機率分布的形式給出,進而通過分析一些文檔抽取出它們的主題(分布)出來後,便可以根據主題(分布)進行主題聚類或文本分類。同時,它是一種典型的詞袋模型,即一篇文檔是由一組詞構成,詞與詞之間沒有先後順序的關系。

上面的大家在任何的地方都能看到一句話,然鵝我在第一看的時候一點都沒有看懂。

如果用通俗的語言來講,假設我們有一個文檔集,裡面有M個文檔,對于第d個文檔中會出現一堆單詞,其中有一個單詞是“周傑倫”,那麼通過這個單詞我們就可以了解為該文檔的主題可能是“娛樂”,但是這個文檔中還出現“姚明”,“孫楊”,“張繼科”這些單詞,此時該文檔為“體育”主題的機率将大大上升,LDA模型就是要根據給定一篇文檔,推斷這個文檔的主題是什麼,并給出各個主題的機率大小是多少。

那麼對于我們剛剛提到的文檔,“周傑倫”,“姚明”,“孫楊”,“張繼科”,為”娛樂“主題的機率為1/4,為“體育”主題的機率為3/4,此時的LDA模型就說這個文檔的主題為"體育"。

這樣一想其實LDA主題模型的想法非常簡單,但是具體到内部的細節,還是會有點懵。

瑣碎但必要的知識

Gamma函數

這個Gamma函數其實是為後面的Beta分布和Dirichlet分布做準備,具體它的數學之美我們就不在本文讨論,隻需要記住以下的東西

Gamma函數定義:

java lda主題模型_主題模型LDA:從入門到放棄

通過分部積分的方法,可以推導出這個函數有如下的遞歸性質:

java lda主題模型_主題模型LDA:從入門到放棄

于是gamma函數可以當成是階乘在實數集上的延展,具有如下性質:

java lda主題模型_主題模型LDA:從入門到放棄

Beta分布

此時我們先引出個數學概念

在貝葉斯流派中,如果先驗分布和後驗分布是同類,則先驗分布和後驗分布被稱為共轭分布,先驗分布被稱為似然函數的共轭先驗

什麼是Beta分布,它是指一組定義在$(0,1)$區間的連續機率分布,有兩個參數$\alpha,\beta>0$,通俗的解釋,beta分布可以看作一個機率的機率分布,當你不知道一個東西的機率是多少,它給你指出了所有可能出現的機率的機率大小,它的機率密度函數為

java lda主題模型_主題模型LDA:從入門到放棄

其中Bete函數為

java lda主題模型_主題模型LDA:從入門到放棄

Beta分布是二項分布的共轭先驗分布,Beta分布描述了二項分布中P取值的可能性,對于Betaf分布的随機變量,其均值可以估計為

java lda主題模型_主題模型LDA:從入門到放棄

Beta-Binomial共轭

首先我們要記住貝葉斯參數估計的基本過程為:

先驗分布+資料的知識=後驗分布

更一般的,對于非負實數$\alpha,\beta$,我們有如下關系:

java lda主題模型_主題模型LDA:從入門到放棄

我們可以看到,參數的先驗分布和後驗分布都能夠保持Beta分布的形式。

Dirichlet分布

狄利克雷分布是一組連續多變量機率分布,是多變量普遍化的Beta分布。

java lda主題模型_主題模型LDA:從入門到放棄

其中$\vec\alpha$是Dirichlet分布的參數。Dirichlet分布是多項式分布的共轭先驗分布。

java lda主題模型_主題模型LDA:從入門到放棄

它的期望為

java lda主題模型_主題模型LDA:從入門到放棄

細緻詳解

java lda主題模型_主題模型LDA:從入門到放棄
java lda主題模型_主題模型LDA:從入門到放棄

LDA假設文檔主題的先驗分布是DIrichlet分布,即對于任一文檔$d$,其主題分布$\theta_d$為:

$$\theta_d = Dirichlet(\vec \alpha)$$

其中,$\alpha$為分布的超參數,是一個$K$維向量。

LDA假設主題中詞的先驗分布是DIrichlet分布,即對于任一主題$k$,其詞分布$\beta_k$為:

$$\beta_k= Dirichlet(\vec \eta)$$

其中,$\eta$為分布的超參數,是一個$V$維向量,$V$代表詞彙表裡所有詞的個數。

對于資料中任一一篇文檔$d$中的第$n$個詞,我們可以從主題分布$\eta_d$中得到它的主題編号$z_{dn}$的分布為:

$$z_{dn}=multi(\theta_d)$$

而對于該主題編号,得到我們看到的詞$w_{dn}$的機率分布為:

$$w_{dn}=multi(\beta_{z_{dn}})$$

了解LDA主題模型的主要任務就是了解上面的這個模型,這個模型,我們有$M$個文檔主題的Dirichlet分布,而對應的資料有$M$個主題編号的多項分布,這樣($\alpha \to \theta_d \to \vec z_{d}$)就組成了Dirichlet-multi共轭,可以使用前面提到的貝葉斯推斷的方法得到基于Dirichlet分布的文檔主題後驗分布。

如果在第$d$個文檔中,第$k$個主題的詞的個數為:$n_d^{(k)}$,則對應的多項分布的計數可以表示為

$$\vec n_d = (n_d^{(1)}, n_d^{(2)},...n_d^{(K)})$$

利用Dirichlet-multi共轭,得到$\theta_d$的後驗分布為:

$$Dirichlet(\theta_d | \vec \alpha + \vec n_d)$$

同樣的道理,對于主題與詞的分布,我們有$K$個主題與詞的Dirichlet的分布,而對應的資料有$K$個主題編号的多項分布,這樣($\eta \to \beta_k \to \vec w_{(k)}$)就組成了組成了Dirichlet-multi共轭,可以使用前面提到的貝葉斯推斷的方法得到基于Dirichlet分布的主題詞的後驗分布。

如果在第k個主題中,第v個詞的個數為:$n_k^{(v)}$,則對應的多項分布的計數可以表示為:

$$\vec n_k = (n_k^{(1)}, n_k^{(2)},...n_k^{(V)})$$

利用Dirichlet-multi共轭,得到$\beta_k$的後驗分布為:

$$Dirichlet(\beta_k | \vec \eta+ \vec n_k)$$

由于主題産生詞不依賴具體某一個文檔,是以文檔主題分布和主題詞分布是獨立的。了解了上面這$M+K$組Dirichlet-multi共轭,就了解了LDA的基本原理了。

參考資料