从Beta分布、Dirchlet分布到LDA主题模型

2019-08-21 23:04:19 浏览数 (3)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_27717921/article/details/53290584

数学真心不太好呢,但是自己挖的坑就算是哭着也要填完,就像是双11下的单,吃土也得付款。。

打算从Beta分布开始讲起,大白话开始:

我们反复抛一枚硬币,假设我们不知道出现正面的概率,出现正面的概率记为e,然后根据我们的估计的就能得到下一次为正面的概率,这里用到的是先验概率,可是当我们抛之后有了事实之后就有了后验概率,我们根据经验而来的参数去估计某一个事件发生的概率,然后在根据发生后的事实来修正参数,这就是从先验概率到后验概率,那么Beta分布又起到怎样的作用呢?

我们可以用一个分布来描述参数e的分布情况吧,像硬币一样只会出现正反两种可能性的时候就可以用到Beta分布来描述

x 即为我们描述抛硬币出现正面的可能性,当然也可以认为是出现反面的可能,我们只是借助于Beta分布来描述参数的变化。a,b为已存在的经验,B(a,b)=(a-1)!*(b-1)!Beta分布可以从先验知识跨越到后验知识,当事实发生后,已经的经验发生变化,使得参数值也发生变化,因为参数是服务Beta分布的。虽然参数可以服从其他的分布,但是参数如果服从Beta分布的话,计算更为方便,因为参数e从先验知识跨越到后验知识时都是服从Beta分布的。

但是当我们面对的不是只有正反两种可能性的时候呢?当我们要描述一系列参数的分布的时候就需要用到Dirchlet分布了。

同样的,先验概率下的向量e符合Dirchlet分布,经过观测后的后验概率矫正之后的向量也符合Dirchlet分布

这里放上证明,主要是证明二维的情况。

一枚硬币抛了5次,3次出现了正面,两次出现了反面,这里描述的是出现正面的可能性

第一个式子为参数的分布函数

第二个式子为先验知识,在当前知识下出现事件X的概率大小

第三个式子是在事件X发生后对正面发生可能性的矫正,发现参数在后验知识之后仍然服从Beta分布,只是形状有了些变化

Dirchlet分布被称为是分布上的分布,因此在2003年在机器学习的一个期刊上发表了Latent Dirchelt Alloction文章,因此利用LDA进行主题学习也开始广泛起来,像之前的TF-IDF,主要利用词频和逆文档频率来进行文档分类或者是文档主题挖掘。但是这种方法有严重的缺点,它主要是从文字相似来挖掘相似度高的文章,但是虽然两句话没有任何相似的词但是却仍然表达的是一个意思。因此就有了文章主题的概念。

如果只利用语料库中的单词分布来构造一篇文档,那么是单一的,并且主题是杂乱的无相关的

一篇文档可以有多个主题,每个主题出现的可能是随机的,当某一个主题出现的时候,我们就需要获得当前主题下的单词分布。这样我们才能构造一个多主题的文档。这个时候Dirchlet分布就可以派上用场,用Dirchlet分布来表述主题向量的分布情况,每次以一定概率从主题向量获得一个主题,在当前主题下又存在语料分布,求得一个联合概率分布。在LDA建模时,我们要生成一篇具有特定主体的文档,于是我们需要先确定这篇文档的主题向量都有哪些,p(θ|α)其实就是依据Dirchlet分布选择一个主题向量,一个文本对应一个主题向量的,有了这个主题向量就相当于有了一个骰子,从多面的骰子中选择出一面,就是文档其中的一个主题,这里从主题向量中选择出一个主题服从的是multinomial distribution,这里就涉及到Dirchlet共轭的概念

α是Dirchlet分布中来控制描述θ的情况,而β则是控制用来控制在当前主题zn的条件下,语料的分布情况,其实θ就是来描述主题向量分布的,这个分布服从Dirchlet分布,我们依照这个分布可以从主题向量中选择其中一个zn。有了这个条件,接下来就好办啦。

从上图可以看出,LDA的三个表示层被三种颜色表示出来:

1. corpus-level(红色):α和β表示语料级别的参数,也就是每个文档都一样,因此生成过程只采样一次。

2.document-level(橙色):θ是文档级别的变量,每个文档对应一个θ,也就是每个文档产生各个主题z的概率是不同的,所有生成每个文档采样一次θ。

3. word-level(绿色):z和w都是单词级别变量,z由θ生成,w由z和β共同生成,一个 单词w对应一个主题z。

通过上面对LDA生成模型的讨论,可以知道LDA模型主要是从给定的输入语料中学习训练两个控制参数α和β,学习出了这两个控制参数就确定了模型,便可以用来生成文档。其中α和β分别对应以下各个信息:

α:分布p(θ)需要一个向量参数,即Dirichlet分布的参数,用于生成一个主题θ向量;

β:各个主题对应的单词概率分布矩阵p(w|z)。

把w当做观察变量,θ和z当做隐藏变量,就可以通过EM算法学习出α和β,求解过程中遇到后验概率p(θ,z|w)无法直接求解,需要找一个似然函数下界来近似求解,原文使用基于分解(factorization)假设的变分法(varialtional inference)进行计算,用到了EM算法。每次E-step输入α和β,计算似然函数,M-step最大化这个似然函数,算出α和β,不断迭代直到收敛。

估计出了α和β,就可以就能计算出多个主题文档的概率,也就是说可以利用某几个主题来描述一篇文档,我们再比较两篇文档相似的时候就可以利用他们的主题向量来对比它们的相似性了。

同样的,也可以利用LDA来挖掘用户在轨迹上的行为,或者是挖掘社区主题和行为。同时也可以基于社交软件上用户发布的内容对用户进行聚类。

0 人点赞