机器学习之主题模型

1. 共轭先验分布

1.1 β分布

在进入正题之前,先来了解一下beta分布。

Γ函数 
Γ函数是阶乘在实数上的推广。

机器学习之主题模型

β分布 
Beta分布的概率密度函数为:

f(x) = 机器学习之主题模型

其中系数B为: 
机器学习之主题模型

Γ函数可以堪称是阶乘的实数域推广。 
机器学习之主题模型

Beta分布的期望可以定义为: 
机器学习之主题模型

1.2 共轭先验分布

回顾贝叶斯分类算法,通过先验概率和条件概率去计算求得后验概率。如下公式,如果目的是去找后验概率P(θ|x)最大的类别,而不关心P(θ|x)具体的值,那么可以将分母P(x)省去。 
机器学习之主题模型

在贝叶斯概率理论仲,如果后验概率P(θ|x)和先验概率P(θ)满足同样的分布律,那么,先验分布和后验分布被叫做“共轭分布”,同时,先验分布叫做似然函数的共轭先验分布。

1.3 二项分布与先验

投掷一个非均匀的硬币,可以使用参数为θ的伯努利模型,θ为硬币为正面的改了,那么x的分布形式是: 
机器学习之主题模型 
这是x的极大似然估计。

二项分布的共轭先验是Beta分布,它具有两个参数α和β。 
beta分布的形式为: 
机器学习之主题模型

现在,可以根据以上的似然和先验来计算后验概率。 
后验概率P(θ|x)为: 
机器学习之主题模型

后验概率的形式与先验概率的形式一样,后验概率的参数为(x+α, 1-x+β).即伯努利分布的共轭先验是beta分布。

1.4 伪计数

参数α与β是决定参数θ的参数,称之超参数。

计算得到的后验概率为: 
机器学习之主题模型

在后验概率的最终表达式仲,参数α,β和x一起作为参数θ的指数,后验概率的参数为(x+α, 1-x+β)。 
而这个指数的实践意义是:投币过程中,正面朝上的次数。α和β先验地给出了在没有任何实验的前提下,硬币朝上的概率分配,因此,α和β可称为“伪计数”。

于是看下面的案例: 
在校门口统计一定时间出入的男女生数目分别为NB, NG,从而估计该校男女生比例。

若观察到4个女生,和1个男生,可得出改校女生比例是80%ma ?

用极大似然估计那么的确女生比例是80%: 
机器学习之主题模型

但是这显然好像有失偏颇,所以我们将伪计数考虑进去,得到修正后的公式: 
机器学习之主题模型

1.5 共轭的直接推广:

从2到k 
二项分布–>多项分布 
Beta分布–>Dirichlet分布

以上我们讲了寻找一个二项分布的共轭先验分布为Beta分布的过程。现在衍生到多向分布。 
多项分布的共轭先验分布为Dirichlet分布

2. Dirichlet分布

2.1 Dirichlet分布

再来回顾一下Beta分布: 
机器学习之主题模型

其中:机器学习之主题模型

然后衍生到Dirichlet分布: 
机器学习之主题模型

以上公式间记做: 
机器学习之主题模型

其中:机器学习之主题模型

Beta分布中有两个可能发生的情况x, (1-x),在多项分布中会有多种情况,记为P1,P2,…,Pk。

Beta分布中两个项分别用超参数α,β来表示,在Dirichlet分布中用α1,α2,…αk来表示

2.2 对称Dirichlet分布

当α1=α2=…=αk-1的时候,参数其实就只剩下(k,α)了。这个时候叫做“对称Dirichlet分布”

对称Dirichlet分布: 
机器学习之主题模型

其中:机器学习之主题模型

在对称Dirichlet分布仲, 
当阿尔法=1时,退化为均匀分布;

当α>1时,p1=p2=…=pk的概率增大;

当α<1时,pi=1, 非pi的概率增大。

三种情况画成图: 
机器学习之主题模型

也就是说: 
若α取值过大,则每个主题的概率都趋于同一个值; 
若α取值小,则有一个主题的概率非常大,其他主题概率都很小。

在实践中,我们一般选取α小一点,这样才能突出某些主题。

3. LDA

3.1 LDA的应用方向:

信息提取和搜索(比如语义分析) 
文档分类/聚类,文章摘要,社区挖掘 
基于内容的ti图像聚类,目标识别 
生物信息数据的应用

3.2 LDA逻辑解释

首先假设我们现在手上有一堆文本。共有m篇文章,d1,d2,..dm 
共涉及K个主题, T1,T2,..,Tk

每篇文章的长度,即分词后的词个数为Nm,每篇文章都有可能被分到K个类别中,都会有一个概率,我们称之为每篇文章的主题分布。 
主题分布是多项分布,该多项分布的参数服从Dirichlet分布,该Dirichlet分布的参数设为α。

对于每个主题,都是由词组成,所有每个主题都有各自的次分不,词分布也是多想分布,该多相分布的参数服从Dirichlet分布,该Dirichlet分布的参数设为β。

然后所有的文本分次之后去重就可以组成一个字典,这个字典中有V个不重复的term(也就是词)。

每篇文章的主题分布记为θ,对于第i篇文档di的主题分布是θi=(θi1,θi2,..θiK), 维度为K维 
对于第i篇文档di,在主题分布θ下,可以确定一个具体的主图zij=k 
φK表示第k个主题的词分布,词分布向量的长度为字典的长度V

由zij选择φzij,表示由次分不确定term,即得到观测值wij

过程如图: 
机器学习之主题模型

也就是说,通过α和β的两个分布,要求出文档的主题分布与主题的词分布。写成联合概率如下: 
机器学习之主题模型

可以分别计算这两个因子: 
nz(t)表示词t被观察到分配给主题z的次数 
nm(k)表示主题k分配给文档m的次数 
机器学习之主题模型

机器学习之主题模型

利用gibbs采样: 
机器学习之主题模型

于是词分布与主题分布: 
机器学习之主题模型

3.3 人话解释

公式都是纸老虎,现在我们说回人话来解释一下,如何去把LDA真正得实践出来。

首先准备语料库 
假设现在手头上有m篇文章(d1,d2,..dm),先将这m篇文章处理成每行为一篇文章的格式,即现在有m行的一个数据集D。

然后对这个数据集进行分词,去掉停用词等处理,于是现在我们有m行,每行由一堆逗号隔开的词组成,每行的长度是不一的。好,这是要拿去训练的语料库。

另外,将上面这个语料库的词全部放在一起再去重,就得到了一个大的字典,长度为V。

然后假设现在有t个topic,记为集合T。

LDA开始学习: 
1.先随机地生成两个分布:文章的主题分布θ,主题的词分布φ

2.对每篇文章中的每个词都进行遍历,比如文章ds的词wi,可以通过最新的两个分布求出pj(wi/ds),j属于1到t。也就是可以求出每篇文章仲每个词属于每个主题的概率。

3.经过了第二步,我们得到了ds文档中wi词的主题,如果与原来的不同,根据上面的公式θd和φt就更新了

4.于是我们用新的θd和φt分布去继续第2,3两步,这样进行n次循环迭代之后,就会收敛到LDA所需要的结果了。

3.4 LDA总结

由于在词和文档之间加入了主题的概念,可以较好的解决一词多义和多词一义的问题。

在实践中发现,LDA用于段文本往往效果不明显。

LDA可以和其他算法相结合,首先使用LDA将长度为Ni的文档降维到K维,同时给出每个主题的概率)主题分布),从而可以使用tf-idf继续分析或者直接作为文档的特征进入聚类或者标签传播算法(用于社区发现等)