狄利克雷分布公式_深入机器学习系列11-隐式狄利克雷分布

472b7066666acae56e0e6011e51cab90.png

转载请注明出处,该文章的官方来源:

LDA | Teaching ML

前言

LDA是一种概率主题模型:隐式狄利克雷分布(Latent Dirichlet Allocation,简称LDA)。LDA是2003年提出的一种主题模型,它可以将文档集中每篇文档的主题以概率分布的形式给出。 通过分析一些文档,我们可以抽取出它们的主题(分布),根据主题(分布)进行主题聚类或文本分类。同时,它是一种典型的词袋模型,即一篇文档是由一组词构成,词与词之间没有先后顺序的关系。一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。

举一个简单的例子,比如假设事先给定了这几个主题:Arts、Budgets、Children、Education,然后通过学习的方式,获取每个主题Topic对应的词语,如下图所示:

10ec40867893ed09dc15d4028800e344.png

然后以一定的概率选取上述某个主题,再以一定的概率选取那个主题下的某个单词,不断的重复这两步,最终生成如下图所示的一篇文章(不同颜色的词语分别表示不同主题)。

f35234b4d5c6acbc5939af4ccbb802b0.png

我们看到一篇文章后,往往会推测这篇文章是如何生成的,我们通常认为作者会先确定几个主题,然后围绕这几个主题遣词造句写成全文。LDA要干的事情就是根据给定的文档,判断它的主题分布。在LDA模型中,生成文档的过程有如下几步:

  • 从狄利克雷分布
    中生成文档i的主题分布
  • 从主题的多项式分布
    中取样生成文档i第j个词的主题
  • 从狄利克雷分布
    中取样生成主题
    对应的词语分布
  • 从词语的多项式分布
    中采样最终生成词语
    .

LDA的图模型结构如下图所示:

55dedf8b0cee4fb7ef337fd104bb8411.png

LDA会涉及很多数学知识,后面的章节我会首先介绍LDA涉及的数学知识,然后在这些数学知识的基础上详细讲解LDA的原理。

1 数学预备

1.1 Gamma函数

在高等数学中,有一个长相奇特的Gamma函数

1381d628338cd365d145e059095b3b6e.png

通过分部积分,可以推导gamma函数有如下递归性质

bb94592d440cc84a4b6f3feffb7b14e4.png

通过该递归性质,我们可以很容易证明,gamma函数可以被当成阶乘在实数集上的延拓,具有如下性质

dde1097802aed5d766fa3d010bb2d1e2.png

1.2 Digamma函数

如下函数被称为Digamma函数,它是Gamma函数对数的一阶导数

dadabfa97ae6d38de3d5c9b38973c6b6.png

这是一个很重要的函数,在涉及Dirichlet分布相关的参数的极大似然估计时,往往需要用到这个函数。Digamma函数具有如下一个漂亮的性质

2d1e7d7c81528a0673e0468833def4da.png

1.3 二项分布(Binomial distribution)

二项分布是由伯努利分布推出的。伯努利分布,又称两点分布或0-1分布,是一个离散型的随机分布,其中的随机变量只有两类取值,即0或者1。二项分布是重复n次的伯努利试验。简言之,只做一次实验,是伯努利分布,重复做了n次,是二项分布。二项分布的概率密度函数为:

4717cd4f6ece0484ca0ddc1fe07d9ac0.png

对于k=1,2,...,n,其中C(n,k)是二项式系数(这就是二项分布的名称的由来)

2f65c2e8ef034b3fd1627cd870a358cd.png

1.4 多项分布

多项分布是二项分布扩展到多维的情况。多项分布是指单次试验中的随机变量的取值不再是0-1,而是有多种离散值可能(1,2,3...,k)。比如投掷6个面的骰子实验,N次实验结果服从K=6的多项分布。其中:

2d669e3071ca8e0e5cba168f78db9699.png

多项分布的概率密度函数为:

9f9ff1f1debb690d493f86d2518868b4.png

1.5 Beta分布

1.5.1 Beta分布

首先看下面的问题1(问题1到问题4都取自于文献【1】)。

问题1:

20be6d51692d42352a7650e0bdd1f5f3.png

为解决这个问题,可以尝试计算

落在区间[x,x+delta x]的概率。首先,把[0,1]区间分成三段[0,x),[x,x+delta x],(x+delta x,1],然后考虑下简单的情形:即假设n个数中只有1个落在了区间[x,x+delta x]内,由于这个区间内的数X(k)是第k大的,所以[0,x)中应该有k−1个数,(x+delta x,1]这个区间中应该有n−k个数。 如下图所示:

096e13eb1cf4b5daa9e092c2a7e4d180.png

上述问题可以转换为下述事件E:

0fab63fdb43065e81cd1b20f21632ca8.png

对于上述事件E,有:

b5f6f5160ee11f8307cf0a79cd2d9a67.png

其中,o(delta x)表示delta x的高阶无穷小。显然,由于不同的排列组合,即n个数中有一个落在[x,x+delta x]区间的有n种取法,余下n−1个数中有k−1个落在[0,x)的有C(n-1,k-1)种组合。所以和事件E等价的事件一共有nC(n-1,k-1)个。

文献【1】中证明,只要落在[x,x+delta x]内的数字超过一个,则对应的事件的概率就是o(delta x)。所以

的概率密度函数为:

bfdb4a95af17ed7298df2321d681eb8d.png

利用Gamma函数,我们可以将f(x)表示成如下形式:

5eb2946a547e4427e0591fad4ffd1903.png

在上式中,我们用alpha=k,beta=n-k+1替换,可以得到beta分布的概率密度函数

29926ac69ca9f2b6afa241198dff98eb.png

1.5.2 共轭先验分布

什么是共轭呢?轭的意思是束缚、控制。共轭从字面上理解,则是共同约束,或互相约束。在贝叶斯概率理论中,如果后验概率P(z|x)和先验概率p(z)满足同样的分布,那么,先验分布和后验分布被叫做共轭分布,同时,先验分布叫做似然函数的共轭先验分布。

1.5.3 Beta-Binomial 共轭

我们在问题1的基础上增加一些观测数据,变成问题2

fac3ba39595767afc788ad48d0f794dd.png

第2步的条件可以用另外一句话来表述,即“Yi中有m1个比X(k)小,m2个比X(k)大”,所以X(k)是

中k+m1大的数。

根据1.5.1的介绍,我们知道事件p服从beta分布,它的概率密度函数为:

ed8e9814d69b39f1a5d0daa2d994af4a.png

按照贝叶斯推理的逻辑,把以上过程整理如下:

  • 1、p是我们要猜测的参数,我们推导出p的分布为f(p)=Beta(p|k,n-k+1),称为p的先验分布
  • 2、根据Yi中有m1个比p小,有m2个比p大,Yi相当是做了m次伯努利实验,所以m1服从二项分布B(m,p)
  • 3、在给定了来自数据提供(m1,m2)知识后,p的后验分布变为f(p|m1,m2)=Beta(p|k+m1,n-k+1+m2)

贝叶斯估计的基本过程是:

先验分布 + 数据的知识 = 后验分布

以上贝叶斯分析过程的简单直观的表示就是:

Beta(p|k,n-k+1) + BinomCount(m1,m2) = Beta(p|k+m1,n-k+1+m2)

更一般的,对于非负实数alpha和beta,我们有如下关系

Beta(p|alpha,beta) + BinomCount(m1,m2) = Beta(p|alpha+m1,beta+m2)

针对于这种观测到的数据符合二项分布,参数的先验分布和后验分布都是Beta分布的情况,就是Beta-Binomial共轭。换言之,Beta分布是二项式分布的共轭先验概率分布。二项分布和Beta分布是共轭分布意味着,如果我们为二项分布的参数p选取的先验分布是Beta分布,那么以p为参数的二项分布用贝叶斯估计得到的后验分布仍然服从Beta分布。

1.6 Dirichlet 分布

1.6.1 Dirichlet 分布

Dirichlet分布,是beta分布在高维度上的推广。Dirichlet分布的的密度函数形式跟beta分布的密度函数类似:

b92f3f736e3e2236aa2ae296e67fd4d4.png

其中

d2409dcf68f6624b8f965c67d55a39ad.png

至此,我们可以看到二项分布和多项分布很相似,Beta分布和Dirichlet分布很相似。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
狄克雷分布是一种概率分布,常用于多元变量和概率向量的建模。对于一个具有K个维度的随机向量,狄利克雷分布的参数是一个长度为K的向量α=[α1, α2, ..., αK],其中每个αi>0。狄利克雷分布的概率密度函数定义如下: f(x|α) = (1/B(α)) * ∏(x^αi-1) (0<=xi<=1, ∑xi=1) 其中,B(α)是多元贝塔函数,∏表示对于所有i的连乘。狄利克雷分布的随机变量服从于一个概率向量,在每个维度上的取值范围是0到1之间,并且各维度的取值之和为1。 在Matlab中没有现成的工具函数可以直接使用狄利克雷分布。但是你可以根据引用提供的代码来实现一个狄利克雷分布的随机数生成函数drchrnd(a,n),其中a是参数向量,n是生成样本的数量。这个函数利用了gamma分布和狄利克雷分布之间的关系,通过生成多个gamma随机变量,并按一定的规则进行归一化,实现了狄利克雷分布的随机数生成。 需要注意的是,生成的随机数是符合狄利克雷分布的概率向量,每个维度的取值范围是0到1之间,并且各维度的取值之和为1。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [狄利克雷分布的matlab代码实现和R语言函数调用](https://blog.csdn.net/sacainiao/article/details/54866385)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值