【机器学习】LDA算法 (主题模型算法)
隨著互聯(lián)網(wǎng)的發(fā)展,文本分析越來(lái)越受到重視。由于文本格式的復(fù)雜性,人們往往很難直接利用文本進(jìn)行分析。因此一些將文本數(shù)值化的方法就出現(xiàn)了。LDA就是其中一種很NB的方法。 LDA有著很完美的理論支撐,而且有著維度小等一系列優(yōu)點(diǎn)。本文對(duì)LDA算法進(jìn)行介紹,歡迎批評(píng)指正。
?
本文目錄:
1、Gamma函數(shù)
2、Dirichlet分布
3、LDA文本建模
4、吉普斯抽樣概率公式推導(dǎo)
5、使用LDA
?
?
1、Gamma函數(shù)
T(x)=?∫ tx-1?e-tdt ? ?T(x+1) = xT(x)
若x為整數(shù),則有 T(n) = (n-1)!
?
2、Dirichlet分布
這里拋出兩個(gè)問(wèn)題:
問(wèn)題1: (1) X1, X2......Xn 服從Uniform(0,1)
? ? ? ? ? ? (2) 排序后的順序統(tǒng)計(jì)量為X(1), X(2), X(3)......X(n)
(3) 問(wèn)X(k1)和X(k1+k2)的聯(lián)合分布式什么
把整個(gè)概率區(qū)間分成[0,X1) , ?[X1, X1+Δ), ? [X1+Δ, X1+X2), ? ?[X1+X2, X1+X2+Δ), ? ? [X1+X2+Δ,1]
X(k1) 在區(qū)間[X1, X1+Δ), X(k1+k2) 在區(qū)間[X1+X2, X1+X2+Δ)。 我們另X3 = 1-X1-X2.
則,
? ? ? ? ? ? ? ? ? ? ? ? ?? ?
即Dir(x1, x2, x3| k1, k2, n-k1-k2+1)
問(wèn)題2:?(1) X1, X2......Xn 服從Uniform(0,1),?排序后的順序統(tǒng)計(jì)量為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]的數(shù)目分別是m1, m2, m3
? ? ? ? ? ?(4) 問(wèn)后驗(yàn)概率 p(p1,p2,p3|Y1,Y2,....Ym)的分布。
其實(shí)這個(gè)問(wèn)題和問(wèn)題1很像,只是在同樣的范圍內(nèi)多了一些點(diǎn)而已。 因此這個(gè)概率分布為 Dir(x1,x2,x3| k1+m1, k2+m2, n-k1-k2+1+m3)。
我們發(fā)現(xiàn)這么一個(gè)規(guī)律 ? ? Dir(p|k) + multCount(m) = Dir(p|k+m)。 即狄利克雷分布是多項(xiàng)分布的共軛分布。
狄利克雷分布有這么一個(gè)性質(zhì):如果則,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
3、 LDA文本建模
?首先我們想一篇文章是如何形成的:作者在寫一篇文章的時(shí)候首先會(huì)想這個(gè)文章需要包含什么主題呢。比如在寫武俠小說(shuō)的時(shí)候,首先會(huì)想小說(shuō)里邊需要包含武俠、愛(ài)情、親情、搞笑四個(gè)主題。并且給這四個(gè)主題分配一定的比例(如武俠0.4,愛(ài)情0.3,親情0.2,搞笑0.1)。每個(gè)主題會(huì)包含一些word,不同word的概率也是不一樣的。 因此我們上帝在生成一篇文章的時(shí)候流程是這個(gè)樣子的:
(1)上帝有兩個(gè)壇子的骰子,第一個(gè)壇子裝的是doc-topic骰子,第二個(gè)壇子裝的是topic-wod骰子。
(2)上帝隨機(jī)的從二個(gè)壇子中獨(dú)立抽取了k個(gè)topic-doc骰子,編號(hào)1-K。
(3)每次生成一篇新的文檔前,上帝先從第一個(gè)壇子中隨機(jī)抽取一個(gè)doc-topic骰子,然后重復(fù)如下過(guò)程生成文檔中的詞。
? ? ? ? <1>、投擲這個(gè)doc-topic骰子,得到一個(gè)topic的編號(hào)z。
? ? ? ? <2>、選擇K個(gè)topic-word骰子中編號(hào)為z的的那個(gè),投擲這個(gè)骰子, 于是就得到了這個(gè)詞。
假設(shè)語(yǔ)料庫(kù)中有M篇文章, 所有的word和對(duì)應(yīng)的topic如下表示:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
我們可以用下圖來(lái)解釋這個(gè)過(guò)程: ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
一共兩個(gè)物理過(guò)程:
第一個(gè)過(guò)程:?,這個(gè)過(guò)程分兩個(gè)階段。第一個(gè)階段是上帝在生成一篇文檔之前,先抽出一個(gè)主題分布的骰子,這個(gè)分布選擇了狄利克雷分布(狄利克雷分布是多項(xiàng)分布的共軛分布)。 第二個(gè)階段根據(jù)來(lái)抽樣得到每個(gè)單詞的topic。這是一個(gè)多項(xiàng)分布。 整個(gè)過(guò)程是符合狄利克雷分布的。
第二個(gè)過(guò)程:,這個(gè)過(guò)程也分兩個(gè)階段。第一個(gè)階段是對(duì)每個(gè)主題,生成word對(duì)應(yīng)的概率,即選取的骰子,這個(gè)分布也是選擇了狄利克雷分布。 第二個(gè)階段是根據(jù),對(duì)于確定的主題選擇對(duì)應(yīng)的word,這是一個(gè)多項(xiàng)分布。因此,整個(gè)過(guò)程是狄利克雷分布。
?
4、吉普斯抽樣概率公式推導(dǎo)
LDA的全概率公式為:?。 由于是觀測(cè)到的已知數(shù)據(jù),只有是隱含的變量,所以我們需要關(guān)注的分布為:。 我們利用Gibbs Sampling進(jìn)行抽樣。 我們要求的某個(gè)位置i(m,n)對(duì)應(yīng)的條件分布為?。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??是一個(gè)定值,因此原公式成立。
下邊是公式的推導(dǎo):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
又由于根據(jù)狄利克雷分布的特性:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
抽樣的時(shí)候,首先隨機(jī)給每個(gè)單詞一個(gè)主題,然后用和進(jìn)行Gibbs抽樣,抽樣后更新這兩個(gè)值,一直迭代到收斂(EM過(guò)程)。
至此抽樣就結(jié)束了。
?
?
5、使用LDA
抽樣結(jié)束后,我們可以統(tǒng)計(jì)和來(lái)得到和。
對(duì)于LDA我們的目標(biāo)有兩個(gè):
(1)得到文章庫(kù)中每篇文章的主題分布
? ? ? (2)對(duì)于一篇新來(lái)的文章,能得到它的主題分布。
第一個(gè)目標(biāo)很容易就能達(dá)到。下面主要介紹如果計(jì)算 一篇新文章的主題分布。這里我們假設(shè)是不會(huì)變化的。因此對(duì)于一篇新文章到來(lái)之后,我們直接用Gibbs Sampling得到新文章的就好了。 具體抽樣過(guò)程同上。
由于工程上對(duì)于計(jì)算新的文章沒(méi)有作用,因此往往只會(huì)保存。
總結(jié)
以上是生活随笔為你收集整理的【机器学习】LDA算法 (主题模型算法)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JDK 下载与安装
- 下一篇: 安装程序遇到错误0x80240037