潜Dirichlet分配(LDA)和分级Dirichlet过程(HDP)都是主题建模过程。主要的区别是LDA要求指定主题的数量,而HDP不需要。为什么会这样?这两种主题建模方法的区别、利弊是什么?
发布于 2014-06-10 21:50:51
HDP是LDA的一个扩展,旨在解决混合成分的数量(文档建模术语中的“主题”的数量)没有先验已知的情况。这就是为什么会有不同的原因。
使用LDA进行文档建模,可以将每个“主题”作为一些已知词汇表中单词的分布。对于每个文档,主题的混合是从Dirichlet分布中提取的,然后文档中的每个单词都是从该混合文档中独立绘制的(也就是说,选择一个主题,然后使用它生成一个单词)。
对于HDP (应用于文档建模),还可以使用Dirichlet过程来捕捉主题数量中的不确定性。因此,选择一个公共的基分布表示语料库的可数-无限可能的主题集,然后从这个基分布中抽样每个文档的主题的有限分布。
就正反两方面而言,HDP的优点是最大的主题数量可以是无限的,可以从数据中学习,而不是事先指定。不过,我认为实现起来比较复杂,而且在有一定数量的主题可以接受的情况下也没有必要。
发布于 2014-06-20 04:27:02
有趣的是,我从来没有对分级LDA的输出印象深刻。它似乎没有找到选择主题数量的最佳粒度级别。通过运行常规LDA的几个迭代,手动检查它产生的主题,决定是增加还是减少主题的数量,并继续迭代直到得到正在寻找的粒度,我获得了更好的结果。
记住:等级LDA不能读懂你的思想..。它不知道您实际打算使用主题建模的目的是什么。就像使用k均值聚类一样,您应该选择对用例最有意义的k。
发布于 2017-08-31 01:02:16
我想指出,因为这是谷歌最热门的话题之一,潜在的Dirichlet分配(LDA)、层次的Dirichlet过程(HDP)和层次的潜在Dirichlet分配(hLDA)都是不同的模型。
LDA模型文档是固定数量的主题的dirichlet混合物--用户选择它作为模型的参数--这反过来又是dirichlet词的混合。这将生成一个平面的、软概率的术语聚类,将术语聚类为主题,文档聚类为主题。
HDP将主题建模为单词的混合,非常类似于LDA,但不是文档是固定主题的混合,而是由dirichlet过程生成的主题数,导致主题的数量也是一个随机变量。名称的“层次”部分指的是在生成模型中添加的另一个级别(产生主题数量的dirichlet过程),而不是主题本身--主题仍然是平面聚类。
另一方面,hLDA是LDA的一种改编,它将主题建模为一个新的、不同级别的主题的混合物,这些主题来自dirichlet发行版,而不是进程。它仍然将主题数量作为一个超参数来处理,即独立于数据。不同之处在于,现在的聚类是分层的--它学习了第一组主题本身的聚类,给出了主题之间更一般、更抽象的关系(因此,单词和文档)。想一想,就像将堆栈交换聚为数学、科学、编程、历史等,而不是将数据科学聚在一起,交叉验证为一个抽象的统计和编程主题,这个主题与软件工程(例如软件工程)有一些相同的概念,但是软件工程交换与计算机科学交换是在一个更具体的层次上聚在一起的,所有这些交换之间的相似性直到集群的上层才会出现。
https://datascience.stackexchange.com/questions/128
复制相似问题