我读过LDA,并且我理解在输入文档集合时如何生成主题的数学。
参考文献说LDA是一种算法,在给定文档集合的情况下(不需要监督),可以发现该集合中文档表达的“主题”。因此,通过使用LDA算法和Gibbs采样器(或变分贝叶斯),我可以输入一组文档,作为输出,我可以得到主题。每个主题都是一组具有指定概率的术语。
我不明白的是,如果上述情况属实,那么为什么许多主题建模教程谈论将数据集分成训练和测试集?
有人能解释一下LDA如何用于训练模型的步骤(基本概念),然后可以用它来分析另一个测试数据集吗?
答案 0 :(得分:36)
将数据拆分为训练和测试集是评估学习算法性能的常用步骤。对于有监督的学习更为明确,其中您在训练集上训练模型,然后查看其在测试集上的分类与真实的类标签的匹配程度。对于无监督学习,这种评估有点棘手。在主题建模的情况下,性能的常用度量是perplexity。您在训练集上训练模型(如LDA),然后您会看到模型在测试集上的“困惑”程度。更具体地说,您可以衡量测试文档的字数由主题所代表的单词分布表示的程度。
困惑对于模型或参数设置之间的相对比较是有益的,但它的数值并不真正意义重大。我更喜欢使用以下手动评估过程来评估主题模型:
我意识到这个过程并不像人们想象的那么好和量化,但说实话,主题模型的应用也很少量化。我建议根据您应用的问题评估您的主题模型。
祝你好运!答案 1 :(得分:0)
使用训练数据进行评估可能会过度拟合的一般规则也适用于像LDA这样的无监督学习-尽管它并不那么明显。 LDA优化了一些目标,即。生成概率,取决于训练数据。可能是训练数据中有两个词表示一个话题,例如美国政治上的“白宫”。假设这两个词仅出现一次(在训练数据中)。然后,任何算法都完全依赖于这样的假设,即它们仅表示政治因素,而如果您对训练数据进行评估,那么其他任何事情都不会做得很好。但是,如果还有诸如“体系结构”之类的其他主题,那么您可能会质疑这是否真的是正确的学习方法。拥有测试数据集可以在某种程度上解决此问题: