浅谈狄利克雷分布——Dirichlet Distribution

浅谈狄利克雷分布的概念与简单使用。

定义

首先介绍基本定义。

二项分布(Binomial Distribution)

进行 n n n次独立随机试验,出现结果1的概率是 p p p,如果用随机变量 X X X表示结果 1 1 1出现的次数,那么:
P ( X = m ) = ( n m ) p m ( 1 − p ) n − m , m = 0 , 1 , 2 , … , n P(X=m) = \begin{pmatrix} n \\ m \end{pmatrix}p^{m}(1-p)^{n-m},\quad m = 0,1,2,\dots,n P(X=m)=(nm)pm(1p)nm,m=0,1,2,,n 如果 n = 1 n=1 n=1,那么二项分布等同于伯努利分布(Bernoulli Distribution)。

多项分布(Multinomial Distribution)

下面我们将二项拓展到多项。进行 n n n次独立随机试验,每次实验结果有 k k k种,其中第 i i i种出现的概率为 p i p_{i} pi,第 i i i种出现的次数为 n i n_{i} ni,如果用随机变量 X = { X 1 , X 2 , … , X k } X = \{X_{1},X_{2},\dots,X_{k}\} X={X1,X2,,Xk}表示试验所有可能结果的次数,那么:
P ( X 1 = n 1 , X 2 = n 2 , … , X k = n k ) = n ! n 1 ! n 2 ! ⋯ n k ! p 1 n 1 p 2 n 2 ⋯ p 3 n 3 = n ! ∏ i = 1 k n i ! ∏ i = 1 k p i n i \begin{aligned} P(X_{1}=n_{1},X_{2}=n_{2},\dots,X_{k}=n_{k}) &= \frac{n!}{n_{1}!n_{2}!\cdots n_{k}!}p_{1}^{n_{1}}p_{2}^{n_{2}}\cdots p_{3}^{n_{3}} \\ &=\frac{n!}{\prod_{i=1}^{k}n_{i}!}\prod_{i=1}^{k}p_{i}^{n_{i}} \end{aligned} P(X1=n1,X2=n2,,Xk=nk)=n1!n2!nk!n!p1n1p2n2p3n3=i=1kni!n!i=1kpini 记作 X ∼ M u l t ( n , p ) X\sim\mathrm{Mult}(n,p) XMult(n,p)
如果 n = 1 n=1 n=1,那么多项分布等同于类别分布(Categorical Distribution)。可以看出,二项分布是多项分布的特殊情况,而伯努利分布式类别分布的特殊情况。

贝塔分布(Beta Distribution)

以上均是离散随机变量的概率分布,下面考虑连续随机变量的情况。此时我们需要研究概率密度。设 X X X为连续随机变量,取值范围为 [ 0 , 1 ] [0,1] [0,1],其概率密度函数为:
p ( x ) = { 1 B ( s , t ) x s − 1 ( 1 − x ) t − 1 , 0 ≤ x ≤ 1 0 , otherwise p(x) = \left\{ \begin{aligned} &\frac{1}{B(s,t)}x^{s-1}(1-x)^{t-1}, \quad & 0\leq x\leq 1 \\ &0, & \text{otherwise} \end{aligned} \right. p(x)=B(s,t)1xs1(1x)t1,0,0x1otherwise 其中 s > 0 , t > 0 s>0, t>0 s>0,t>0是参数。贝塔分布表示为 X ∼ B e t a ( s , t ) X\sim\mathrm{Beta}(s,t) XBeta(s,t),概率密度取值如下图所示。
在这里插入图片描述

贝塔分布是均匀分布的更一般形式。
B ( ⋅ ) B(\cdot) B() 是贝塔函数 B ( s , t ) = ∫ 0 1 x s − 1 ( 1 − x ) t − 1 d x = Γ ( s ) Γ ( t ) Γ ( s + t ) , Γ ( s ) ≜ ∫ 0 ∞ x s − 1 e − x d x , s > 0 B(s,t) = \int_{0}^{1}x^{s-1}(1-x)^{t-1}\mathrm{d}x = \frac{\Gamma(s)\Gamma(t)}{\Gamma(s+t)}, \quad \Gamma(s) \triangleq\int_{0}^{\infty}x^{s-1}e^{-x}\mathrm{d}x, s>0 B(s,t)=01xs1(1x)t1dx=Γ(s+t)Γ(s)Γ(t),Γ(s)0xs1exdx,s>0 Γ ( ⋅ ) \Gamma(\cdot) Γ() 是伽马函数。伽马函数具有性质: Γ ( s + 1 ) = s Γ ( s ) \Gamma(s+1) = s\Gamma(s) Γ(s+1)=sΓ(s),且当 s s s是自然数时有: Γ ( s + 1 ) = s ! \Gamma(s+1) = s! Γ(s+1)=s!。此时可以看出,当 s , t s,t s,t是自然数时 B ( s , t ) = ( s − 1 ) ! ( t − 1 ) ! ( s + t − 1 ) ! B(s,t) = \frac{(s-1)!(t-1)!}{(s+t-1)!} B(s,t)=(s+t1)!(s1)!(t1)! 贝塔函数取值分布 如下图所示。
betaFunc

狄利克雷分布(Dirichlet Distribution)

下面我们再扩展到多元连续随机变量。狄利克雷分布是贝塔分布的扩展。定义多元连续随机变量 θ = { θ 1 , θ 2 , … , θ k } \theta = \{\theta_{1},\theta_{2},\dots,\theta_{k}\} θ={θ1,θ2,,θk}的概率密度函数为
p ( θ ∣ α ) = Γ ( ∑ i = 1 k α i ) ∏ i = 1 k Γ ( α i ) ∏ i = 1 k θ i α i − 1 , α i > 0 , i = 1 , 2 , … , k p(\theta|\alpha) = \frac{\Gamma\left( \sum_{i=1}^{k}\alpha_{i} \right)}{\prod_{i=1}^{k}\Gamma(\alpha_{i})}\prod_{i=1}^{k}\theta_{i}^{\alpha_{i}-1},\quad \alpha_{i}>0,\quad i = 1,2,\dots,k p(θα)=i=1kΓ(αi)Γ(i=1kαi)i=1kθiαi1,αi>0,i=1,2,,k 其中 ∑ i = 1 k θ i = 1 , θ i ≥ 0 \sum_{i=1}^{k}\theta_{i} = 1, \theta_{i}\geq 0 i=1kθi=1,θi0,则称随机变量 θ \theta θ 服从参数为 α \alpha α 的狄利克雷分布,记作 θ ∼ D i r ( α ) \theta\sim\mathrm{Dir}(\alpha) θDir(α)
方便起见,我们定义 B ( α ) ≜ ∏ i = 1 k Γ ( α i ) Γ ( ∑ i = 1 k α i ) B(\alpha) \triangleq \frac{\prod_{i=1}^{k}\Gamma(\alpha_{i})}{\Gamma\left( \sum_{i=1}^{k}\alpha_{i} \right)} B(α)Γ(i=1kαi)i=1kΓ(αi) 那么狄利克雷分布的概率密度函数可以表示为 p ( θ ∣ α ) = 1 B ( α ) ∏ i = 1 k θ i α i − 1 p(\theta|\alpha) = \frac{1}{B(\alpha)}\prod_{i=1}^{k}\theta_{i}^{\alpha_{i}-1} p(θα)=B(α)1i=1kθiαi1 B ( α ) B(\alpha) B(α) 又称多元贝塔函数或扩展贝塔函数,其积分表示为 B ( α ) = ∫ ∏ i = 1 k θ i α i − 1 d θ B(\alpha) = \int\prod_{i=1}^{k}\theta_{i}^{\alpha_{i} - 1}\mathrm{d}\theta B(α)=i=1kθiαi1dθ

共轭先验(Conjugate Prior)

共轭分布常在贝叶斯学习中使用,共轭分布的好处是便于从先验分布计算后验分布。如果后验分布与先验分布属于同类,则先验分布于后验分布成为共轭分布,先验分布成为共轭先验。狄利克雷分布属于指数分布族,常作为多项分布的共轭先验分布使用。作为共轭先验的狄利克雷分布的参数被成为超参数

假设随机变量 X X X服从集合 W = { w 1 , w 2 , … , w k } W=\{w_{1},w_{2},\dots,w_{k}\} W={w1,w2,,wk}上的多项分布,即 X ∼ M u l t ( n , θ ) X\sim \mathrm{Mult}(n,\theta) XMult(n,θ)。将样本数据表示为 D D D,目标是计算在样本数据 D D D给定的条件下参数 θ \theta θ的后验概率 p ( θ ∣ D ) p(\theta|D) p(θD)。此时对于给定样本 D D D的似然函数是 p ( D ∣ θ ) = θ 1 n 1 θ 2 n 2 ⋯ θ k n k = ∏ i = 1 k θ i n i p(D|\theta) = \theta_{1}^{n_{1}}\theta_{2}^{n_{2}}\cdots \theta_{k}^{n_{k}} = \prod_{i=1}^{k}\theta_{i}^{n_{i}} p(Dθ)=θ1n1θ2n2θknk=i=1kθini 我们假设随机变量 θ \theta θ 服从狄利克雷分布 p ( θ ∣ α ) p(\theta|\alpha) p(θα),即 θ ∼ D i r ( α ) \theta\sim\mathrm{Dir}(\alpha) θDir(α)。此时随机变量 θ \theta θ 的先验分布为 p ( θ ∣ α ) = 1 B ( α ) ∏ i = 1 k θ i α i − 1 , α i > 0 p(\theta|\alpha) = \frac{1}{B(\alpha)}\prod_{i=1}^{k}\theta_{i}^{\alpha_{i}-1} ,\quad \alpha_{i} > 0 p(θα)=B(α)1i=1kθiαi1,αi>0 根据贝叶斯公式,给定样本数据 D D D的条件下, θ \theta θ的后验分布是 p ( θ ∣ D , α ) = p ( D ∣ θ ) p ( θ ∣ α ) p ( D ∣ α ) = ∏ i = 1 k θ i n i 1 B ( α ) θ i α i − 1 ∫ ∏ i = 1 k θ i n i 1 B ( α ) θ i α i − 1 d θ = 1 B ( α + n ) ∏ i = 1 k θ i α i + n i − 1 = D i r ( θ ∣ α + n ) \begin{aligned} p(\theta|D,\alpha) &= \frac{p(D|\theta)p(\theta|\alpha)}{p(D|\alpha)} \\ &=\frac{\prod_{i=1}^{k}\theta_{i}^{n_{i}}\frac{1}{B(\alpha)}\theta_{i}^{\alpha_{i}-1}}{\int\prod_{i=1}^{k}\theta_{i}^{n_{i}}\frac{1}{B(\alpha)}\theta_{i}^{\alpha_{i}-1} \mathrm{d}\theta} \\ &=\frac{1}{B(\alpha+n)}\prod_{i=1}^{k}\theta_{i}^{\alpha_{i}+n_{i}-1} \\ &=\mathrm{Dir}(\theta|\alpha+n) \end{aligned} p(θD,α)=p(Dα)p(Dθ)p(θα)=i=1kθiniB(α)1θiαi1dθi=1kθiniB(α)1θiαi1=B(α+n)1i=1kθiαi+ni1=Dir(θα+n) 此时 θ \theta θ的后验分布也是狄利克雷分布,所以狄利克雷分布是多项分布的共轭先验。同时,贝塔分布也是二项分布的共轭先验。

狄利克雷过程(Dirichlet Process)

未完待续……


  • 感谢 李航——《统计学习方法》第2版
  • 19
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
狄克雷分布是一种概率分布,常用于多元变量和概率向量的建模。对于一个具有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 ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值