LDA简介
在老师讲主题模型的时候看到这个LDA,刹时觉得很熟悉,在机器学习中,其实有两个LDA,一个是平时接触比较多的Linear Discriminant Analysis即线性判别分析,另一个便是这篇文章的主角Latent Dirichlet Allocation即隐含狄利克雷分布。
提出目的
用于推测文档(document)的主题分布,以及主题(topic)的词(word)分布;换个角度来说其实这个模型解决了文档和词汇的软聚类,即文档的主题分布概率可以当作文档聚类的指标,而词汇则归属于其隶属的主题而达到软聚类的效果。
从而用于大量文档没有人力分类的情况。
LDA模型的核心思想
引入
人们在写一篇文章时,肯定不是随意单词或语句的堆砌,而是有一个或多个核心主题,这也是主题模型的基本思想,即一个document并不是直接和word相关,而是一篇document有一个或多个topic,每个topic具有对应的主题单词分布(如凸优化topic,凸函数、凸集等单词分布较多),然后从这些分布中抽取单词形成一篇document,也就是说是这么的一个过程:
topic->word->document
生成文档
下面详细解释下LDA模型生成文档的过程:假设m篇文档,对应单词数n,主题数k(在训练过程中需提前制定,本文先不介绍训练过程,只介绍思想)
符号 | 含义 |
文档-主题分布的超参数 | |
文档m的主题分布 | |
文档m第n个词的主题 | |
文档m第n个词 | |
主题-词语分布的超参数 | |
主题k的词分布 |
LDA采用的是贝叶斯派的思想,即认为主题分布和词分布都不是确定的,它们本身也服从一个分布。
具体语言描述步骤如下:
1.选择文档;
2.以为超参数的Dirichlet分布采样生成文档的主题分布;
3.多项式主题分布生成文档m第n个词的主题;
4.以为超参数的Dirichlet分布采样生成主题的词语分布;
5.多项式分布采样生成文档m第n个词;
需要注意的是,本篇文章讲述的是LDA正向生成文档的思想过程,是理解LDA模型训练的前提,笔者感觉训练的过程还是挺难的,如果只是想要了解的同学看本篇就好,想要深究的可以移步参考的文章。
LDA&矩阵分解
其中矩阵X,m行d列,每行为一篇文章,列代表单词;
矩阵S可以视为样本的新表示,每一行视为对应topic的系数;
矩阵T可以视为空间变换函数,每行视为一个topic;
等式右边的矩阵乘法即可以理解为一片文章是不同topic的线性组合,矩阵乘法相当于实现了k个topic线性组合的效果。
以这种角度,可以将topic模型视为对样本的学习和新表示,也可以视为一种降维。
参考:详解LDA