隐含狄利克雷分布(Latent Dirichlet allocation)是一种生成式统计模型,是泛化的pLSA模型,区别在于LDA假设主题分布是稀疏的Dirichlet prior,即所有文档只覆盖一小部分的主题,且这些主题只频繁地使用一小部分的单词。
LDA是三层贝叶斯模型,基于变分方法的近似推理和经验贝叶斯参数估计的EM算法,使用“先验分布”和“数据对数似然”得出“后验分布”,再用后验分布作为新的先验分布,往复迭代。这就要求先验分布和后验分布具有相同的形式,即二者为共轭分布。
一、相关概念
1、二项分布Binomial distribution
二项分布是重复n次独立的伯努利试验,每次试验只有两种可能的结果,期望为np,方差为np(1-p)。二项分布可以作为LDA中的数据对数似然。
2、Beta分布
Beta分布是一组定义在(0,1)or[0,1]区间的连续概率分布,有两个参数α,β>0,可看做是一系列pattern相似的二项分布(n、p未知),认为α与成功的事件数相关、β与失败的事件数相关:
Beta前面的系数起标准化作用,使得这个分布的概率密度积分为1。除去前面的系数以外,Beta分布和二项分布具有相同的形式,因此可知Beta分布是伯努利分布、二项分布的共轭先验分布的密度函数;若将Beta分布作为先验分布、二项分布作为似然函数,那么后验分布仍是Beta分布:
3、多项分布Multinational distribution
是二项分布的推广,N次试验可能的结果有K种(K≥2),每种数量分别为,,i∈(1,2,...,K);取到每类的概率分别为,。多项分布的期望为,方差为,协方差为。
4、Dirichlet分布
是Beta分布的推广,N次试验可能的结果有K类(K≥2),每种的浓度concentration参数分别为,i∈(1,2,...,K);取到每类的概率分别为,。Dirichlet分布是多项分布的共轭分布:
Dirichlet分布常用作贝叶斯理论中的先验分布,如果没有任何先验信息有利于一个类超过其他类的情况,则一般将所有的浓度参数初始化为相等的值(对称的Dirichlet分布)。可认为浓度参数是样本的集中程度,当ɑ=1时,对称的Dirichlet分布相当于一个均匀分布,在它的support上的所有点都是相等的——扁平的Dirichlet分布;当ɑ>1时,则倾向于密集分布,单个类别内所有值都是相似的;当ɑ<1时,则倾向于稀疏分布,单个类别内所有值都接近于0,大多数样本集中在少数类别中。
二、LDA主题模型
LDA是一种比较常用的主题模型,每篇文档是由一系列潜在主题构成,而每个主题又是一个在词上的多项分布。假设文集/语料库(corpus)D中共有M篇文档,第m个文档有个单词,这些文档一共涉及K个主题,词汇表中所有词总数为V。
1、模型参数解释
(1),为每篇文档主题分布的Dirichlet prior的参数,即一篇文档中主题k的先验权值,一般所有主题的α相等且比较稀疏(e.g. 0.1,每篇文档只有少量主题);
(2),为每个主题单词分布的Dirichlet prior的参数,即一个主题中单词v的先验权值,一般所有单词的β相等且非常稀疏(e.g. 0.001,每个主题只有很少的单词);
(3)为第m篇文档的主题分布,;
(4)为主题k的单词分布,;
(5) 是第m篇文档中第n()个单词所属的主题;
(6) 是根据 选择的单词,用深色表示是因为它是模型中唯一可观测的值。
2、模型生成过程
LDA从生成式模型的角度看待文档和主题,认为语料库中所有文档是隐含主题的随机混合,每个主题是由所有单词分布体现的。文档m的生成过程为:
(1)根据参数为α的Dirichlet分布选择一个主题分布,;
(2)根据参数为η的Dirichlet分布选择一个单词分布,;
(3)按照下列步骤生成文档m中的个单词:
a、根据 指派主题,得到文档m中单词n的主题 ;
b、根据指派的主题 所对应的单词分布 生成单词 。
三、LDA参数估计
给定训练数据,LDA的模型参数可通过极大似然法估计,即寻找α和η最大化对数似然:
求出α和η后,根据词频 推断文集所对应的主题结构,即使用贝叶斯算法估计、、的参数:
由于分母 难以求解,因此可以采用Gibbs采样法或变分法进行近似推断。
scikit-learn API
参考资料
https://en.wikipedia.org/wiki/Latent_Dirichlet_allocation
http://www.cnblogs.com/pinard/p/6831308.html
《机器学习_周志华》