beta分布的推导与理解

1.概述

Beta 分布是关于概率的概率分布。例如,我们可以使用它来对概率进行建模:包括但不限于广告的点击率、网站上实际购买的客户的转化率、读者对博客点赞的可能性、候选人竞选成功的概率等等依此类推。本文通过对比贝塔分布与二项分布,详细推导贝塔分布的由来。

2.Beta分布的直观解释

因为 Beta 分布对概率进行建模,所以它的定义域应该在0和1之间,它的pdf如下。

                Beta(x|\alpha,\beta) =\frac{1}{B(\alpha,\beta)}x^{\alpha-1}(1-x)^{\beta-1}

                B(\alpha,\beta)= \frac{\Gamma(\alpha) \Gamma(\beta) }{\Gamma(\alpha+\beta)}

在不考虑前置系数的情况下,即忽略系数1/B(α,β),β分布的pdf后置项与二项分布有明显的相似性。因为前置项只是使函数积分为 1 的归一化常数。如果以二项分布的角度来看它时,对beta分布的直觉就会发挥作用。直观对两者进行对比如下:

​由上可知,对于两个概率分布 X ~ Bin(n, p) 与 X ~ Beta(α, β) ,二项分布和 beta 的区别在于前者对次数建模,是离散型概率分布,模拟成功的次数 (x),而后者对概率建模,是连续性概率分布,模拟成功的概率 (p)。 换句话说,概率是二项分布的恒定参数,但在Beta分布中,概率是一个随机变量。

 

参数α、β的解释:

1)可以将α-1 视为成功的次数,将β -1 视为失败的次数,就像二项中的 x 和 n-x 项一样。

2)在确定的情况下,可以根据实际需要灵活的选择 α 和 β 参数。比如认为成功的概率非常高,假设为 90%,则将 α 设置为 90,将β 设置为 10。反之,β 为 90,α 为 10。

3)随着α变大(更成功的事件),大部分概率分布将向右移动,而β的增加使分布向左移动(更多失败)。

4)此外,如果α和β都增加,分布将变窄,因为此时事件发生的更具有确定性,方差更小。

3. 概率的概率举例

        假定某人与一位女士约会的可能性遵循 \alpha=2,\beta=8 的 Beta 分布,即

                                     Beta(x|\alpha=2,\beta=8) =\frac{1}{B(2,8)}x(1-x)^7

          那么约会成功的概率大于50%的概率是多少呢?

                                    P(X>0.5) = 1- CDF(0.5) = 0.01953

       由上可知,β分布是典型的对干预概率的概率分布

4. Beta分布的必要性

     如果只是希望概率分布对概率进行建模,那么 (0,1) 上的任意分布都可以。创建一个这样的概率分布应该很容易。只需取任何在 0 和 1 之间不会爆炸并保持正数的函数,然后将其从0 积分到 1,然后简单地相除进行归一化,那么就获得了一个可用于对概率建模的概率分布。在此情况下,为什么还要坚持使用 beta 分布而不是任意概率分布来建模呢?

      在详细说明beta分布的必要性之前,有必要介绍一下 bayes统计的概念。

      贝叶斯统计(推理)中的计算可能非常复杂,有时甚至难以处理。而如果后验分布与先验分布属于同类,例如先验 p( \mathtt { \theta}) \in \mathcal F, 后验 p(\theta|D) \in \mathcal F ,那么此时先验分布与后验分布被称为共轭分布,而先验分布被称为似然函数 p(D|\theta) 的共轭先验(Conjugate prior)。通过使用带有共轭先验的闭式公式,那么计算就变得轻而易举了,具体的解释如下:

首先根据bayes公式:

                                        p(\theta | D) = \frac{p(D | \theta) p(\theta)} {p(D)}= \frac{p(D | \theta) p(\theta)} {\int p(D|\theta') p(\theta') d\theta'}

由于分母p(D)只受数据集影响,是与\theta 无关的常数,视为归一化常数,因此在贝叶斯推断中,上式简化为:

                                                        p(\theta | D) \propto p(D | \theta) p(\theta)

也就是                        

                                        后验概率  = 似然函数 * 先验概率 。

在似然函数已知的情况下,选定什么样的先验就能得到什么样的后验分布。

在上述约会接受/拒绝的举例中,beta 分布是二项似然的共轭先验。如果我们选择使用 beta 分布作为先验,在建模阶段(基于二项似然),由于已经知道后验也将是 beta 分布。因此,在进行了更多的实验(要求更多的人参与约会)之后,就可以简单地通过将接受和拒绝的数量分别添加到现有参数 α 和 β 来计算后验,而不是用基于乘积再进行复杂计算。所有指数族的分布都有共轭先验。

5. Beta分布的特点

        Beta分布的PDF可以是钟形曲线、严格递增或递减甚至是直线以及渐近末端的U形曲线。当改变α或β的取值时,PDF曲线的形状会发生变化,具体分别举例如下。

由上图可知,如果α + β足够大且 α 和 β 大致相等,则 beta 分布的 PDF 近似正态分布。

 调整参数得到的贝塔分布可以是直线,递增或递减或水平线(其中α=1 和 β=1对应水平直线)。

  当α <1,β<1 时 Beta 的 PDF 为 U 形曲线。

上述不同形状背后的直觉解释:

       如果将α-1 视为成功次数,将β -1 视为失败次数,则Beta(2,2)意味着获得了 1 次成功和 1 次失败。因此,成功的概率最高为 0.5 是有道理的。 此外,Beta(1,1)意味着头部为零,尾部为零,对成功概率的猜测在整个 [0,1] 中应该是相同的,水平直线对应的就是均匀分布。 Beta(0.5,0.5)的直觉是什么? 为什么是U型的?可以这样理解,参数α<1β<1时一次成功或失败都未出现过,出现成功或失败的概率是对称的,此时概率密度朝点分布靠拢,极端情况下,\alpha=\beta\rightarrow 0,它是一个两点伯努利分布,在每个Dirac delta函数x=0和x=1结束时,两个点发生的概率都为1/2。此时若按次数α-1 和 β -1 来理解正面和反面发生次数都是-0.5有点晦涩,那就是正面和反面能够确定发生的次数都还不够。  

6.Beta分布详细推导 

假定 X_1 , X_2 , . . . , X_n  是具有 PDF和 CDF 的 iid 随机变量。 以递增的顺序重新排列它们,使X_k是第 k 个最小的 X,称为k-th order statistic,不失一般性, 令X_1 <X_2 < . . . ,<X_n

那么对于最大X_n 的概率密度可计算如下:

 

k 阶统计量的概率密度计算如下:

  注意,上述的计算具有普适性,不需要选择也不需要置换大于x 的Xs 。

  进一步地,可以基于 k 阶统计量能够推导出 Beta 分布的pdf。

     设置X_1,X_2,...,X_n都是作为 iid 的均匀分布,也就是 X_i \sim Uniform(0,1), 1 \leq i \leq n 

   因为 Beta 的定义域是 [0,1], 全部X的取值范围为0-1由此得到:

即通过均匀分布 (0,1) 的 CDF 最终推导得到了Beta 分布的PDF。

7. Beta分布归一化常数

根据Beta 分布的的 PDF 积分为1,同时结合其定义域位于0与1之间,可知 

                \int_{0}^{1}\frac{1}{B(\alpha,\beta)}x^{\alpha-1}{(1-x))}^{\beta-1}dx =1

上式中前置系数是与变量无关的常数,由此得到

                \int_{0}^{1}x^{\alpha-1}{(1-x))}^{\beta-1}dx =B(\alpha,\beta)

B(α,β)是从 0 到 1的 Beta 分布PDF 图形下的面积。

8. Gamma 函数系数推导

Beta函数是每个参数的Gamma函数的乘积除以参数和的Gamma函数的比值。

那么如何证明B(α,β) = Γ(α) * Γ(β) / Γ(α+β) ?

还是以α和β是整数的特殊情况为例,从上面推导出的内容开始。

\begin{align} B(\alpha,\beta) &=\int_{0}^{1}x^{\alpha-1}{(1-x))}^{\beta-1}dx \nonumber \\ &=-x^{\alpha-1}\frac{1}{\beta}(1-x)^{\beta}|_0^1-[-\int_{0}^{1}(\alpha-1)x^{\alpha-2}\frac{1}{\beta}{(1-x)}^{\beta}dx] \nonumber \\ &=0+\int_{0}^{1}(\alpha-1)x^{\alpha-2}\frac{1}{\beta}{(1-x)}^{\beta}dx =\frac{\alpha-1}{\beta}B(\alpha-1,\beta+1) \nonumber \end{align}

由此可得到一个递归关系式的推导如下:

\begin{align} B(\alpha,\beta) & =\frac{\alpha-1}{\beta}B(\alpha-1,\beta+1)\nonumber \\ &=\frac{\alpha-1}{\beta}\cdot \frac{\alpha-2}{\beta+1}B(\alpha-2,\beta+2)\nonumber \\ &=\frac{\alpha-1}{\beta}\cdot \frac{\alpha-2}{\beta+1}\cdot \frac{\alpha-3}{\beta+2}B(\alpha-3,\beta+3) \nonumber \\ &=\frac{\alpha-1}{\beta}\cdot \frac{\alpha-2}{\beta+1}\cdot \frac{\alpha-3}{\beta+2}\begin{matrix}\cdot \cdot \cdot \end{matrix}\frac{1}{\beta+\alpha-2}B(1,\beta+\alpha-1) \nonumber \\ &=\frac{\alpha-1}{\beta}\cdot \frac{\alpha-2}{\beta+1}\cdot \frac{\alpha-3}{\beta+2}\begin{matrix}\cdot \cdot \cdot \end{matrix}\frac{1}{\beta+\alpha-2}\cdot \frac{1}{\beta+\alpha-1} \nonumber \\ &=\frac{(\alpha-1)!}{(\beta + \alpha-1)!/(\beta -1)!}\nonumber \\ &=\frac{(\alpha-1)!(\beta-1)!}{(\alpha + \beta-1)!}=\frac{\Gamma (\alpha)\Gamma (\beta)}{\Gamma (\alpha +\beta)}\nonumber \end{align}

9.代码实现

# -*- coding: utf-8 -*-
"""
Created on Mon May 30 00:07:18 2022

@author: scott
"""

import numpy as np
from scipy.stats import beta
import matplotlib.pyplot as plt
#plt.rcParams['figure.figsize'] = [8, 6]

def beta_Bell_shape():
    x = np.linspace(0, 1, 10000)
    y1 = beta.pdf(x, 2, 8)
    y2 = beta.pdf(x, 5, 5)
    y3 = beta.pdf(x, 8, 2)
    
    plt.figure(figsize=(8,6))
    plt.title("PDF of Beta (Bell-shape)", fontsize=20)
    plt.xlabel("X", fontsize=16)
    plt.ylabel("Probability Density", fontsize=16)
    plt.plot(x, y1, linewidth=3, color='firebrick')
    plt.annotate("Beta(2,8)", xy=(0.15, 3.7), size = 14, ha='center', va='center', color='firebrick')
    plt.plot(x, y2, linewidth=3, color='burlywood')
    plt.annotate("Beta(5,5)", xy=(0.5, 2.6), size = 14, ha='center', va='center', color='burlywood')
    plt.plot(x, y3, linewidth=3, color='dodgerblue')
    plt.annotate("Beta(8,2)", xy=(0.85, 3.7), size = 14, ha='center', va='center', color='dodgerblue')
    plt.ylim([0, 4])
    plt.xlim([0, 1])
    plt.show()

def beta_Straight_lines():
    x = np.linspace(0, 1, 10000)
    y1 = beta.pdf(x, 1, 2)
    y2 = beta.pdf(x, 1, 1)
    y3 = beta.pdf(x, 2, 1)
    
    plt.figure(figsize=(8,6))
    plt.title("PDF of Beta (Straight lines)", fontsize=20)
    plt.xlabel("X", fontsize=16)
    plt.ylabel("Probability Density", fontsize=16)
    plt.plot(x, y1, linewidth=3, color='firebrick')
    plt.annotate("Beta(1,2)", xy=(0.88, 0.45), size = 14, ha='center', va='center', color='firebrick')
    plt.plot(x, y2, linewidth=3, color='burlywood')
    plt.annotate("Beta(1,1)", xy=(0.88, 1.15), size = 14, ha='center', va='center', color='burlywood')
    plt.plot(x, y3, linewidth=3, color='dodgerblue')
    plt.annotate("Beta(2,1)", xy=(0.88, 2.0), size = 14, ha='center', va='center', color='dodgerblue')
    plt.ylim([0, 4])
    plt.xlim([0, 1])
    plt.show()

def beta_U_shape():
    x = np.linspace(0, 1, 10000)
    y1 = beta.pdf(x, 0.2, 0.8)
    y2 = beta.pdf(x, 0.5, 0.5)
    y3 = beta.pdf(x, 0.8, 0.2)
    
    plt.figure(figsize=(8,6))
    plt.title("PDF of Beta (U-shape)", fontsize=12)
    plt.xlabel("X", fontsize=16)
    plt.ylabel("Probability Density", fontsize=12)
    plt.plot(x, y1, linewidth=3, color='green')
    plt.annotate("Beta(0.2,0.8)", xy=(0.85, 0.45), size = 14, ha='center', va='center', color='green')
    plt.plot(x, y2, linewidth=3, color='blue')
    plt.annotate("Beta(0.5,0.5)", xy=(0.5, 0.88), size = 14, ha='center', va='center', color='blue')
    plt.plot(x, y3, linewidth=3, color='m')
    plt.annotate("Beta(0.8,0.2)", xy=(0.15, 0.45), size = 14, ha='center', va='center', color='m')
    plt.ylim([0, 4])
    plt.xlim([0, 1])
    plt.show()
    
if __name__ =='__main__':
    beta_Bell_shape()
    beta_Straight_lines()
    beta_U_shape()
    

  • 4
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scott198512

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值