潜在狄利克雷分配与分层狄利克雷过程

数据挖掘 nlp 主题模型 低密度脂蛋白
2021-10-08 20:09:32

潜在狄利克雷分配(LDA)分层狄利克雷过程(HDP)都是主题建模过程。主要区别在于 LDA 需要指定主题数量,而 HDP 不需要。为什么呢?两种主题建模方法的区别、优缺点是什么?

4个回答

HDP 是 LDA 的扩展,旨在解决先验未知混合组件数量(文档建模术语中的“主题”数量)的情况。所以这就是存在差异的原因。

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

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

就优缺点而言,HDP 的优点是最大主题数可以是无限的,可以从数据中学习,而不是预先指定。我想虽然它实现起来更复杂,并且在可以接受有限数量的主题的情况下是不必要的。

有趣的是,我从未对分层 LDA 的输出印象深刻。它似乎没有找到选择主题数量的最佳粒度级别。通过运行常规 LDA 的几次迭代,手动检查它产生的主题,决定是增加还是减少主题的数量,并继续迭代直到我得到我正在寻找的粒度,我已经获得了更好的结果。

请记住:分层 LDA 无法读懂您的想法……它不知道您实际打算将主题建模用于什么目的。就像使用 k-means 聚类一样,您应该选择对您的用例最有意义的 k。

我想指出,由于这是该主题的热门 Google 热门文章之一,因此潜在狄利克雷分配 (LDA)、分层狄利克雷过程 (HDP)分层潜在狄利克雷分配 (hLDA) 都是不同的模型。

LDA 将文档建模为固定数量主题的狄利克雷混合(由用户选择作为模型的参数),而这些主题又是单词的狄利克雷混合。这会生成一个扁平的、软概率聚类的术语到主题和文档到主题。

HDP 将主题建模为单词的混合,很像 LDA,但不是文档是固定数量的主题的混合,而是由狄利克雷过程生成主题的数量,从而导致主题的数量也是一个随机变量。名称的“分层”部分是指添加到生成模型的另一个级别(dirichlet 过程产生主题数量),而不是主题本身 - 主题仍然是平面聚类。

另一方面,hLDA 是 LDA 的改编版,它将主题建模为新的、不同级别的主题的混合,从狄利克雷分布中提取而不是进程。它仍然将主题的数量视为超参数,即独立于数据。不同之处在于聚类现在是分层的——它学习了第一组主题本身的聚类,给出了主题(以及因此,单词和文档)之间更一般、更抽象的关系。可以把它想象成将堆栈交换聚集成数学、科学、编程、历史等,而不是将数据科学和交叉验证聚集成一个抽象的统计和编程主题,它与软件工程等共享一些概念,但软件工程交换与计算机科学交换在更具体的层面上进行了聚类,所有提到的交换之间的相似性直到集群的上层才出现。

实际上 HDP 需要很多隐藏参数,这些参数在代码中。如果你使用这些参数,你会得到不同的结果(不同的主题)。人们通常不会关注这些隐藏的参数,并认为模型能够找到这些参数。这不是真的。用户必须定义​​参数“eta”“gamma”和“alpha”以及主题的最大值。如果您指定最大主题数说大约 23 个主题,那么 youк 模型会在输出中提供 23 个主题。如果您设置了 15 个主题,那么您将在输出中获得 15 个主题……。