1. 程式人生 > >LDA演算法 (主題模型演算法)

LDA演算法 (主題模型演算法)

隨著網際網路的發展,文字分析越來越受到重視。由於文字格式的複雜性,人們往往很難直接利用文字進行分析。因此一些將文字數值化的方法就出現了。LDA就是其中一種很NB的方法。 LDA有著很完美的理論支撐,而且有著維度小等一系列優點。本文對LDA演算法進行介紹,歡迎批評指正。

本文目錄:

1、Gamma函式

2、Dirichlet分佈

3、LDA文字建模

4、吉普斯抽樣概率公式推導

5、使用LDA

1、Gamma函式

T(x)= ∫ tx-1 e-tdt    T(x+1) = xT(x)

若x為整數,則有 T(n) = (n-1)!

2、Dirichlet分佈

這裡丟擲兩個問題:

問題1: (1) X1, X2......Xn 服從Uniform(0,1)

            (2) 排序後的順序統計量為X(1), X(2), X(3)......X(n)

    (3) 問X(k1)和X(k1+k2)的聯合分散式什麼

把整個概率區間分成[0,X1) ,  [X1, X1+Δ),   [X1+Δ, X1+X2),    [X1+X2, X1+X2+Δ),     [X1+X2+Δ,1]

X(k1) 在區間[X1, X1+Δ), X(k1+k2) 在區間[X1+X2, X1+X2+Δ)。 我們另X3 = 1-X1-X2.

則,

                         

   

即Dir(x1, x2, x3| k1, k2, n-k1-k2+1)

問題2: (1) X1, X2......Xn 服從Uniform(0,1), 排序後的順序統計量為X(1), X(2), X(3)......X(n)

    (2) 令p1 = [0, X(k1)], p2 = [X(k1), X(k1+k2)], p3 = 1-p1-p2 

    (3) 另外給出新的資訊, Y1, Y2.....Ym服從Uniform(0, 1), Yi落到[0,X(k1)],  [X(k1), X(k1+k2)], [X(k1+k2), 1]的數目分別是m1, m2, m3

           (4) 問後驗概率 p(p1,p2,p3|Y1,Y2,....Ym)的分佈。

其實這個問題和問題1很像,只是在同樣的範圍內多了一些點而已。 因此這個概率分佈為 Dir(x1,x2,x3| k1+m1, k2+m2, n-k1-k2+1+m3)。

我們發現這麼一個規律     Dir(p|k) + multCount(m) = Dir(p|k+m)。 即狄利克雷分佈是多項分佈的共軛分佈。

狄利克雷分佈有這麼一個性質:如果則,

                                               

3、 LDA文字建模

 首先我們想一篇文章是如何形成的:作者在寫一篇文章的時候首先會想這個文章需要包含什麼主題呢。比如在寫武俠小說的時候,首先會想小說裡邊需要包含武俠、愛情、親情、搞笑四個主題。並且給這四個主題分配一定的比例(如武俠0.4,愛情0.3,親情0.2,搞笑0.1)。每個主題會包含一些word,不同word的概率也是不一樣的。 因此我們上帝在生成一篇文章的時候流程是這個樣子的:

(1)上帝有兩個罈子的骰子,第一個罈子裝的是doc-topic骰子,第二個罈子裝的是topic-wod骰子。

(2)上帝隨機的從二個罈子中獨立抽取了k個topic-doc骰子,編號1-K。

(3)每次生成一篇新的文件前,上帝先從第一個罈子中隨機抽取一個doc-topic骰子,然後重複如下過程生成文件中的詞。

        <1>、投擲這個doc-topic骰子,得到一個topic的編號z。

        <2>、選擇K個topic-word骰子中編號為z的的那個,投擲這個骰子, 於是就得到了這個詞。

假設語料庫中有M篇文章, 所有的word和對應的topic如下表示:

                                                             

我們可以用下圖來解釋這個過程:  

                                          

一共兩個物理過程:

第一個過程: ,這個過程分兩個階段。第一個階段是上帝在生成一篇文件之前,先抽出一個主題分佈的骰子,這個分佈選擇了狄利克雷分佈(狄利克雷分佈是多項分佈的共軛分佈)。 第二個階段根據來抽樣得到每個單詞的topic。這是一個多項分佈。 整個過程是符合狄利克雷分佈的。

第二個過程:,這個過程也分兩個階段。第一個階段是對每個主題,生成word對應的概率,即選取的骰子,這個分佈也是選擇了狄利克雷分佈。 第二個階段是根據,對於確定的主題選擇對應的word,這是一個多項分佈。因此,整個過程是狄利克雷分佈。

4、吉普斯抽樣概率公式推導

LDA的全概率公式為: 。 由於是觀測到的已知資料,只有是隱含的變數,所以我們需要關注的分佈為:。 我們利用Gibbs Sampling進行抽樣。 我們要求的某個位置i(m,n)對應的條件分佈為 

                                                  

                                                                      是一個定值,因此原公式成立。

下邊是公式的推導:

                              

又由於根據狄利克雷分佈的特性:

                               

抽樣的時候,首先隨機給每個單詞一個主題,然後用進行Gibbs抽樣,抽樣後更新這兩個值,一直迭代到收斂(EM過程)。

至此抽樣就結束了。

5、使用LDA

抽樣結束後,我們可以統計來得到

對於LDA我們的目標有兩個:

  (1)得到文章庫中每篇文章的主題分佈

      (2)對於一篇新來的文章,能得到它的主題分佈

第一個目標很容易就能達到。下面主要介紹如果計算 一篇新文章的主題分佈。這裡我們假設是不會變化的。因此對於一篇新文章到來之後,我們直接用Gibbs Sampling得到新文章的就好了。 具體抽樣過程同上。

由於工程上對於計算新的文章沒有作用,因此往往只會儲存