LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题和文档三层结构。所谓生成模型由如下假设而来:一篇文章的每个词都是通过这样的过程生成而来:先按某种概率分布选择某个主题,再从该主题中按某种概率分布选择某个词。 文档到主题服从多项式分布,主题到词服从多项式分布。
LDA是一种非监督式机器学习技术,可用来识别大规模文档集或语料库中潜在的主题信息。其采用词袋的方法,将每一篇文档看成一个词频向量,从而将文本信息转化为数字信息。每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。
LDA生成过程
对于语料库中的每篇文档,其生成过程如下:
- (1) 从文档-主题分布中采样一个主题
- (2) 从被采样到的主题所对应的单词分布中采样一个单词
- (3) 重复(1)、(2),直至遍历文档中的每一个单词
其中每篇文档与(超参数)个主题的多项分布相对应,记为,即文档-主题分布。每个主题与词表中个单词的一个多项分布相对应,记为,即主题-单词分布。
文档-主题分布与主题-单词分布就是LDA模型待学习的模型参数。
LDA整体流程
令文档集合为,主题集合为。中每个文档看作一个单词序列 (该单词序列不考虑词序,即词袋),中的所有单词组成一个大集合,记为。
LDA以文档集合为输入,训练出如下两个结果向量(设共有个主题(topic),中共有个词)作为输出:
-
对中的每个文档,对应到不同主题(topic)的概率分布为,其中表示对应第个topic的概率,且。其中表示文档中属于第个topic的词的数目,表示文档中所有词的总数。
-
对中的每个topic,生成不同单词的概率分布为,其中表示主题生成中第个单词的概率,且。其中表示对应到主题中第个单词的数目,表示对应到主题的所有单词的个数。
由上述生成的两组概率,可反向推出文档的生成过程:
其中由可得;由可得。以主题为中间层,利用和可计算文档中出现单词的概率。