LDA 主题模型效果度量
2017-05-08 本文已影响106人
风驰电掣一瓜牛
度量方法:
- 在测试集或训练集上计算困惑度
- 在具体应用中看效果,如分类
这里主要说说如何计算困惑度。
计算方法为:
- 计算每篇文档的概率p(d),
- 除以所有文档词的总数(不排重),乘以-1,求指数
难点在于计算每篇文档的概率 参考1 参考2, 在Blei原始论文中并没有详说。
一种方法是计算一篇文档所有词的概率和,即似然性,然后取log,这也是gensim和sklearn的做法。
一个词的概率:
p(w) = sigma p(z,w) = sigma p(z)p(w|z)
一篇文档概率
p(d) = log (p(w1)p(w2)...) = sigma log(p(w))
详细公式推导见参考3
具体实现可参考类 gensim.models.ldamodel.LdaModel的成员方法 log_perplexity(),结果只输出到日志中,但是调用成员方法bound()可以自己计算得到,该函数返回的是语料似然值,假设为L,则语料困惑度为exp(-L)
也可以参考类 sklearn.decomposition.LatentDirichletAllocation 的成员方法perplexity(), 该函数直接返回困惑度。
在实践中,困惑度主要用来观察模型收敛情况,可以在训练集上进行,也可以在held-out数据集上。
其他参考