前言:本文仅仅作为笔记,里面的内容不一定正确,不建议读者参考
讲LDA的宏观应用比较清晰的一个视频是:【python-sklearn】中文文本 | 主题模型分析-LDA(Latent Dirichlet Allocation)_哔哩哔哩_bilibili
据说这个视频不错:主题模型-潜在狄利克雷分配-Latent Dirichlet Allocation(LDA)_哔哩哔哩_bilibili
这个视频主要介绍了LDA是什么,以及怎么调用sklearn中的LDA模型,对LDA的内在数学原理没有介绍。
想详细深入的理解LDA可以参考《LDA漫游指南》或《LDA数学八卦》。由于过长,我还没看完,没深入去看。
以下是自己的思考:
通过输入多篇训练文章,输入到LDA模型,学习到两个参数,alpha和beta.
可以得到K个主题,每个主题相当于一个聚类,聚类中的每个样本有一个概率分布。
对于新输入的一篇文章,根据文章中的每个单词在所有主题中的概率分布,可以确定这篇文章的主题分布:这篇文章包含哪几个主题,在每个主题上的概率是多少,通常K个主题的概率和为1,概率最大的那个主题是测试文章的主题。
对于新的词汇:有时,测试文章中会出现一些新的词汇,在训练样本中没有出现。
这个词汇对应的特征向量,输入到每个学到的主题的分布函数中,可以得到这个词汇属于每个主题的概率密度。所以,任何一个词汇都会得到一个概率密度,不论新否,之前见过与否。
当是新词汇时,这个词汇在每一个主题的狄利克雷分布中计算得到的分布密度都会比较低。
所以,主题模型可以用于检测异常。
-----------------------------------------------------------
主题模型实际上是实现了一个聚类,把文章的词汇聚类成不同的主题,与k-means聚类不同的是,不同的主题的词汇可能会有重叠。
如何确保新的词汇的分布概率密度就低呢?