狄利克雷分布

http://blog.sina.com.cn/s/blog_67d185b801018r8l.html

http://www.cnblogs.com/xlhblog/archive/2012/03/27/Statistics.html

Dirichlet分布可以看做是分布之上的分布。如何理解这句话,我们可以先举个例子:假设我们有一个骰子,其有六面,分别为{1,2,3,4,5,6}。现在我们做了10000次投掷的实验,得到的实验结果是六面分别出现了{2000,2000,2000,2000,1000,1000}次,如果用每一面出现的次数与试验总数的比值估计这个面出现的概率,则我们得到六面出现的概率,分别为{0.2,0.2,0.2,0.2,0.1,0.1}。现在,我们还不满足,我们想要做10000次试验,每次试验中我们都投掷骰子10000次。我们想知道,出现这样的情况使得我们认为,骰子六面出现概率为{0.2,0.2,0.2,0.2,0.1,0.1}的概率是多少(说不定下次试验统计得到的概率为{0.1, 0.1, 0.2, 0.2, 0.2, 0.2}这样了)。这样我们就在思考骰子六面出现概率分布这样的分布之上的分布。而这样一个分布就是Dirichlet分布。

首先用上面这一段来点直观印象,然后列一些资料:

          维基里面对于狄利克雷分布貌似介绍的挺复杂,不够基础。我找到了一个CMU的PPT:Dirichlet Distribution, Dirichlet Process and Dirichlet Process Mixture,找到一篇华盛顿大学的《Introduction to the Dirichlet Distribution and Related Processes》介绍。

       发现CMU那个ppt里面讲到,Beta is the conjugate prior of Binomial,有一种原来如此的感觉。嗯,原来贝塔分布是二项分布的共轭先验分布,那么狄利克雷分布就是多元分布的共轭先验分布。所以要看狄利克雷分布,就要先了解多元分布,然后呢,想要了解狄利克雷之于多元的关系,就要先看贝塔分布和二项分布的关系,这个关系在这里(PRML2.1整小章介绍了这个)。

       下面正式进入狄利克雷分布介绍,首先说一下这个多元分布的参数μ。在二项分布里,参数μ就是抛硬币取某一面的概率,因为二项分布的状态空间只有{0,1}。但是在多元分布里,因为状态空间有K个取值,因此μ变成了向量μ⃗ =(μ1, , μk)T。多元分布的likelihood函数形式是k=1Kμmkk,因此就像选择二项分布的共轭先验贝塔函数时那样,狄利克雷分布的函数形式应该如下:

p(μ|α)k=1Kμαk1k  式2.37

上式中,kμk=1α⃗ =(α1, , αk)T是狄利克雷分布的参数。最后把2.37归一化成为真正的狄利克雷分布:

Dir(μ|α)=Γ(α0)Γ(α1)Γ(αk)k=1Kμαk1k

其中α0=k=1Kαk。呵呵,这个函数跟贝塔分布有点像(取K=2时就是Beta分布)。跟多元分布也有点像。和Beta分布一样,狄利克雷分布就是参数μ⃗ 的分布,只不过μ是一个向量,下图是当μ⃗ =(μ1,μ2,μ3)时,即只有三个值时狄利克雷概率密度函数的例子。其中中间那个图的三角形表示一个平放的Simplex,三角形三个顶点分别表示μ⃗ =(1,0,0)μ⃗ =(0,1,0)μ⃗ =(0,0,1),因此三角形中间部分的任意一个点就是μ⃗ 的一个取值,纵轴就是这个μ⃗ 的Simplex上的概率密度值(PDF)。

对于参数μ⃗ 的估计时,可知 后验=似然*先验 的函数形式如下:

p(μ|D,α)(D|μ)p(μ|α)k=1Kμαk+mk1k

从这个形式可以看出,后验也是狄利克雷分布。类似于贝塔分布归一化后验的方法,我们把这个后验归一化一下,得到:

p(μ|D,α)=Dir(μ|α+m)=Γ(α0+N)Γ(α1+m1)Γ(αK+mK)k=1Kμαk+mk1k



http://hi.baidu.com/leifenglian/item/636198016851cee7f55ba652


狄克雷分布是一种概率分布,常用于多元变量和概率向量的建模。对于一个具有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、付费专栏及课程。

余额充值