1. 程式人生 > >LDA主題模型評估方法--Perplexity

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的測試集的單詞數量(不排重)