LDA主題模型評估方法--Perplexity
原文出處:http://blog.csdn.net/pirage/article/details/9368535
在LDA主題模型之後,需要對模型的好壞進行評估,以此依據,判斷改進的引數或者演算法的建模能力。
Blei先生在論文《Latent Dirichlet Allocation》實驗中用的是Perplexity值作為評判標準。
一、Perplexity定義
perplexity是一種資訊理論的測量方法,b的perplexity值定義為基於b的熵的能量(b可以是一個概率分佈,或者概率模型),通常用於概率模型的比較
wiki上列舉了三種perplexity的計算:
1.1 概率分佈的perplexity
公式:
其中H(p)就是該概率分佈的熵。當概率P的K平均分佈的時候,帶入上式可以得到P的perplexity值=K。
1.2 概率模型的perplexity
公式:
公式中的Xi為測試局,可以是句子或者文字,N是測試集的大小(用來歸一化),對於未知分佈q,perplexity的值越小,說明模型越好。
指數部分也可以用交叉熵來計算,略過不表。
1.3單詞的perplexity
perplexity經常用於語言模型的評估,物理意義是單詞的編碼大小。例如,如果在某個測試語句上,語言模型的perplexity值為2^190,說明該句子的編碼需要190bits
二、如何對LDA建模的主題模型
Blei先生在論文裡只列出了perplexity的計算公式,並沒有做過多的解釋。
在摸索過得知,M代表測試語料集的文字數量(即多少篇文字),Nd代表第d篇文字的大小(即單詞的個數),P(Wd)代表文字的概率,文字的概率是怎麼算出來的呢?
在解決這個問題的時候,看到rickjin這樣解釋的:
p(z)表示的是文字d在該主題z上的分佈,應該是p(z|d)
這裡有個誤區需要注意:Blei是從每篇文字的角度來計算perplexity的,而rickjin是從單詞的角度計算perplexity的,不要弄混了。
總結一下:
測試文字集中有M篇文字,對詞袋模型裡的任意一個單詞w,P(w)=∑z p(z|d)*p(w|z),即該詞在所有主題分佈值和該詞所在文字的主題分佈乘積。
模型的perplexity就是exp^{ - (∑log(p(w))) / (N) },∑log(p(w))是對所有單詞取log(直接相乘一般都轉化成指數和對數的計算形式),N的測試集的單詞數量(不排重)