引子:
今年上半年,我报名参加了julyEdu的三月份机器学习班,在班上我自告奋勇地分享了下自己对LDA模型中几个重要问题,比如perplexity,likelihood和fold-in
query的理解、相关公式以及实现方案。不过由于最近要写一篇主题模型的文章,我重读了下LDA以及其他一些主题模型的经典文献,发现自己之前理解上存在一些偏差,于是就想写一篇博客,把整个思路重新理顺一下。
(1)Perplexity是什么?
通常用于评价聚类算法好坏的方法有两种,其一是使用带分类标签的测试数据集,然后使用一些算法,比如Normalized
Mutual Information,Variation of Information
distance,来判断聚类结果与真实结果的差距,其二是使用无分类标签的测试数据集,用训练出来的模型来跑测试数据集,然后计算在测试数据集上,所有token似然值几何平均数的倒数,也就是perplexity指标,这个指标可以直观理解为用于生成测试数据集的词表大小的期望值,而这个词表中所有词汇符合平均分布[1]。其公式如下:
(1)
其中,M是指训练好的模型参数,在LDA中是theta和phi或者其等价物,例如collapsed Gibbs
Sampler所获取的状态(w向量,z向量),中间式子中指数-1/N的N指的是Epsilon(Nm),注意这个公式和LDA模型无关,它可以应用于任何聚类模型,当然也包括主题模型。
(2)一些主题模型的perplexity&#x