潜在的Dirichlet分配(LDA)分层迪里奇特过程(HDP) 都是主题建模过程。主要区别是LDA需要规格的主题数,而HDP则不需要。为什么呢?两种主题建模方法的差异,优缺点是什么?

有帮助吗?

解决方案

HDP是LDA的扩展,旨在解决混合组件数量(文档模型术语中的“主题”的数量)的情况。这就是为什么有区别的原因。

使用LDA进行文档建模,将每个“主题”视为某些已知词汇中单词的分布。对于每个文档,主题的混合物都是从Dirichlet分布中汲取的,然后文档中的每个单词都是从该混合物中的独立绘制(也就是说,选择一个主题然后使用它来生成一个单词)。

对于HDP(应用于文档建模),还使用Dirichlet过程来捕获主题数量的不确定性。因此,选择了一个共同的基本分布,该分布代表了该语料库的一组可能的主题集,然后从此基础分布中对每个文档的有限分布进行了有限分布。

就利弊而言,HDP具有一个优势,即可以从数据中无限制和学到的最大主题数量,而不是事先指定。我想,实施更为复杂,并且在有限数量的主题可以接受的情况下不必要。

其他提示

有趣的是,层次LDA的输出给我留下了深刻的印象。似乎没有找到最佳的粒度水平来选择主题数量。我通过运行一些常规LDA的迭代,手动检查其产生的主题,决定是否增加或减少主题的数量,并继续迭代,直到我要寻找的粒度为止。

请记住:分层LDA无法阅读您的思想...它不知道您实际使用主题建模的意图。就像K-Means聚类一样,您应该选择对用例最有意义的K。

我想指出的是,由于这是Google最热门的主题之一,因此潜在的dirichlet分配(LDA),层次结构dirichlet流程(HDP), 分层潜在的Dirichlet分配(HLDA)都是不同的模型。

LDA模型将文档作为固定数量的主题的dirichlet混合物 - 用户选择作为模型的参数,这又是单词的dirichlet混合物。这将对术语和文档中的术语进行平坦,软概率的聚类生成主题。

HDP模型主题是单词的混合物,就像LDA一样,但是文档不是固定数量的主题的混合物,而是由Dirichlet过程生成的主题数,导致主题的数量也是随机变量。该名称的“分层”部分是指另一个正在添加到生成模型中(产生主题数的dirichlet过程),而不是主题本身 - 主题仍然是平坦的群集。

另一方面,HLDA是LDA的改编 分布 而不是处理。它仍然将主题的数量视为与数据无关的超参数,即IE。不同之处在于,聚类现在是层次结构 - 它学习了第一组主题本身的聚类,从而在主题(因此,单词和文档)之间提供了更一般的抽象关系。将其视为将堆栈交换聚类为数学,科学,编程,历史等,而不是将数据科学和交叉验证分为抽象统计和编程主题,该主题与软件工程共享一些概念,但是软件工程交换与计算机科学交换更加具体的水平,并且所有提到的交换之间的相似性在集群的上层之前才出现那么多。

我的情况与LDA相比,HDP效果很好。我有大约16000个文档属于各种类。由于我不知道每个班级可以收集多少个不同的主题,因此在这种情况下,HDP确实很有帮助。

许可以下: CC-BY-SA归因
scroll top