码迷,mamicode.com
首页 > 其他好文 > 详细

LDA主题模型评估

时间:2015-01-06 17:58:56      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:python   lda   

http://blog.csdn.net/pipisorry/article/details/42460023

LDA主题模型好坏的评估,判断改进的参数或者算法的建模能力。

Blei先生在论文《Latent Dirichlet Allocation》实验中用的是Perplexity值作为评判标准。


一、Perplexity定义

http://en.wikipedia.org/wiki/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的测试集的单词数量(不排重)



from:http://blog.csdn.net/pipisorry/article/details/42460023

ref:http://stackoverflow.com/questions/19615951/topic-models-evaluation-in-gensim

http://www.52ml.net/14623.html

Ngram model and perplexity in NLTK

http://www.researchgate.net/publication/221484800_Improving_language_model_perplexity_and_recognition_accuracy_for_medical_dictations_via_within-domain_interpolation_with_literal_and_semi-literal_corpora

Investigating the relationship between language model perplexity and IR precision-recall measures.




LDA主题模型评估

标签:python   lda   

原文地址:http://blog.csdn.net/pipisorry/article/details/42460023

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!