潜在Dirichlet分配(LDA)和Hierarchical Dirichlet Process(HDP)都是主题建模过程。主要区别在于LDA要求指定主题数,而HDP则不需要。为什么会这样?两种主题建模方法的优缺点是什么?
潜在Dirichlet分配(LDA)和Hierarchical Dirichlet Process(HDP)都是主题建模过程。主要区别在于LDA要求指定主题数,而HDP则不需要。为什么会这样?两种主题建模方法的优缺点是什么?
Answers:
HDP是LDA的扩展,旨在解决先验未知混合成分数量(文档建模术语中“主题”数量)的情况。这就是为什么存在差异的原因。
使用LDA进行文档建模,可以将每个“主题”都视为某些已知词汇中单词的分布。对于每个文档,从Dirichlet分布中抽取出一个主题的混合物,然后文档中的每个单词都是该混合物中的一个独立图纸(即选择一个主题,然后使用它来生成一个单词)。
对于HDP(适用于文档建模),还使用Dirichlet流程来捕获主题数量的不确定性。因此,选择一个公共基本分布,该基本分布表示该语料库的可能主题的数量无限无限的集合,然后从该基本分布中采样每个文档的主题的有限分布。
就优缺点而言,HDP的优势在于最大数量的主题可以不受限制地从数据中学习,而不必事先指定。我认为虽然实现起来比较复杂,但是在可以接受一定数量的主题的情况下就不需要了。
有趣的是,我从未对分层LDA的输出印象深刻。似乎并没有找到选择主题数量的最佳粒度。通过运行常规LDA的几次迭代,手动检查它产生的主题,决定是否增加或减少主题数量,并继续进行迭代,直到获得所需的粒度,我得到了更好的结果。
请记住:分层LDA无法理解您的想法……它不知道您实际上打算将主题建模用于什么目的。就像k均值聚类一样,您应该选择最适合您的用例的k。
我想指出的是,由于这是Google热门话题之一,因此潜在的狄利克雷分配(LDA),分层的狄利克雷过程(HDP)和分层的潜在狄利克雷分配(hLDA)都是截然不同的模型。
LDA将文档建模为固定数量主题的狄利克雷混合(由用户选择作为模型的参数),而主题又是单词的狄利克雷混合。这会生成一个扁平的,软概率的术语集到主题集,文档到主题集。
HDP将主题建模为单词的混合,就像LDA一样,但是主题的数量不是由固定数量的主题混合而成的,而是由狄利克雷过程生成的,主题的数量也是随机变量。名称的“分层”部分是指将另一个级别添加到生成模型中(产生主题数量的dirichlet过程),而不是主题本身-主题仍然是扁平聚类。
另一方面,hLDA是LDA的改编版,该模型将主题建模为从Dirichlet 分布中抽取的新的,不同级别的主题的混合物而不是流程。它将主题的数量仍然视为超参数,即与数据无关。区别在于,聚类现在是分层的,它学习第一组主题本身的聚类,从而在主题(以及单词和文档)之间提供了更一般的抽象关系。可以将其视为将堆栈交换聚集到数学,科学,编程,历史等方面,而不是将数据科学和交叉验证聚集到一个抽象的统计和编程主题中,该主题与软件工程共享一些概念,但是软件工程与计算机科学交换相比,交换在更具体的层次上进行了群集,并且直到群集的上层才出现所有提到的交换之间的相似性。
与LDA相比,HDP的效果很好。我有大约16000个文档属于不同的类别。由于我不知道每个班级可以收集多少个不同的主题,因此HDP在这种情况下确实很有帮助。