首先給出一些參考網址:
http://www.52nlp.cn/lda-math-lda-%E6%96%87%E6%9C%AC%E5%BB%BA%E6%A8%A1
http://www.xperseverance.net/blogs/tag/gibbs-sampling/
第一個講的很仔細了
這裡我主要是對自己理解的一個總結:
LDA是什麼,其實就是一個簡單的model。
他能用來幹什麼呢?他可以用來提取主題,例如我們有一堆的文本或者文檔,我們希望得到這些文檔包含了那些主題,這個時候我們可以去用LDA模型
我們可以規定提取幾個主題和每個主題都包括多少個word,這個是lda可以實現的。
LDA涉及到什麼知識:
Direchle Process,吉布斯採樣,Gamma分布等等,
但是我們不能被這個嚇住了,看LDA的paper也覺得很困難,公式一大堆對吧
其實說白了一直是在找一個公式去計算word-topic,topic-document 和document-word的機率嗎
我們先不管這些東西怎麼算:
我告訴大家這個東西:
在初始化的時候我們有了alpha和beta,這兩個參數就已經告訴了我們topic-document和topic-word的機率了
因為這兩個參數告訴了我們topic-document和topic-word的direchlet分布。
那麼大家一定覺得這個計算完了,既然已經知道了分布,那就結束了啊
但是我們知道了分布,但是我們不知道如何去分布每個topic中的單詞
這個問題如何解決?
於是大家用到了吉布斯採樣,也有用用EM演算法,當然,都是在求一個最有解而已。
吉布斯採樣是MCMC的一個特殊情況。
吉布斯參與的目的是什麼呢?
我們用吉布斯參與去更新每一個單詞的topic分布,從而達到一個穩定值
這個過程
http://www.xperseverance.net/blogs/tag/gibbs-sampling/
這個bolg裡面的代碼是LDA的一個java代碼
http://www.arbylon.net/projects/LdaGibbsSampler.java
代碼很簡單,也方便大家的理解。
如果那裡寫的不對,希望大家指出,互相學習。