【机器学习】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得到新文章的就好了。 具體抽樣過程同上。
由于工程上對于計算新的文章沒有作用,因此往往只會保存。
總結
以上是生活随笔為你收集整理的【机器学习】LDA算法 (主题模型算法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JDK 下载与安装
- 下一篇: 安装程序遇到错误0x80240037