概念

统计学中的分布是描述随机变量规律的核心工具,根据随机变量类型的不同,主要分为​​离散型概率分布​​和​​连续型概率分布​​两大类。伯努利分布是最基础但也最重要的概率分布之一,属于离散型概率分布,它描述了那些只有两种可能结果的随机现象。

一个经典的案例就是抛硬币,在抛一次硬币的试验中,若规定正面朝上为“成功”,那么 p=0.5。其方差 p(1-p)在 p=0.5时达到最大,为 0.25,这意味着当成功与失败的概率各占一半时,结果的不确定性最高;当 p接近 0 或 1 时,方差会变小,因为结果几乎可以确定。

特征

描述

​​别名​​

两点分布、0-1分布 

​​核心特征​​

单次随机试验,只有两种互斥结果 

​​随机变量取值​​

通常用 1表示“成功”,0表示“失败” 

​​关键参数​​

​​p​​:表示一次试验中“成功”的概率 (0 ≤ p ≤ 1) 

​​概率质量函数(PMF)​​

P(X=1) = p;P(X=0) = 1 - p

​​数学期望(E[X])​​

p

​​方差(Var[X])​​

p(1-p)

概率质量函数

概率质量函数(PMF)是专门为离散随机变量定制的“概率清单”(例如,还是投硬币,1-6出现的概率分别是 六分之一,依次列出来),它直接给出每个可能取值对应的概率​​。理解PMF是掌握离散概率分布(如伯努利分布、二项分布、泊松分布)的关键一步。

与累积分布函数(CDF)的关系​​:CDF描述的是随机变量取值​​小于等于​​某个数的概率,记作 F(x)。对于离散随机变量,CDF是PMF的累加结果。例如,掷骰子点数小于等于3的概率 F(3),就是点数1、2、3的概率之和(即 PMF(1) + PMF(2) + PMF(3))。由于PMF是不连续的,所以离散随机变量的CDF是一个​​分段函数​​,图形呈阶梯状。

与概率密度函数(PDF)的根本区别​​:有时候与PDF的概念容易混淆。理解的关键在于PMF的函数值​​直接是概率​​,而PDF的函数值​​不是概率​​。对于连续变量,讨论在某一点(例如身高正好是170cm)的概率是没有意义的,概率密度只对一段区间有意义,需要通过计算PDF在该区间下的面积来获得。

与其他分布的关系

伯努利分布是许多复杂分布的基石。​​二项分布​​ 可以理解为将伯努利试验独立重复进行 n次后,总成功次数的分布。当 n=1时,二项分布就是伯努利分布。

应用场景

伯努利分布的应用极其广泛,几乎所有涉及二分类问题的场景都能看到它的身影。

质量控制​​

在生产线上,对单个产品进行检测,其结果可以建模为伯努利分布——产品要么合格(成功),要么不合格(失败)。

​​用户行为分析​​

在互联网领域,用户的很多行为都可以用伯努利试验来建模,一位用户是否点击了某个广告、是否购买了一件商品等。

机器学习基石​​

伯努利分布是逻辑回归、神经网络等模型中输出层设计的理论基础。这些模型最终预测的正是某个类别(如“是垃圾邮件”)的概率 p。

使用注意事项

在使用伯努利分布时,最关键的是要确保试验满足其基本假设:

1.每次试验必须且只能有两种互斥的结果 -- 结果唯一性​​

2.“成功”的概率 p在每次试验中应保持不变 -- 概率稳定性

3.各次试验之间相互独立。如果事件发生多次,独立性是使用二项分布的前提 -- 独立性​​

Python计算

scipy.stats模块中的 bernoulli类是处理伯努利分布的核心工具。

函数名

用途说明

示例代码 (假设 p=0.3)

示例结果 / 含义

​​.pmf(k, p)​​

计算概率质量函数,即事件恰好发生 k 次的概率。

stats.bernoulli.pmf(1, 0.3)

0.3(成功的概率)

​​.rvs(p, size)​​

生成服从伯努利分布的随机样本。

stats.bernoulli.rvs(0.3, size=10)

如 [0 0 1 0 0 1 0 0 0 1]

​​.cdf(k, p)​​

计算累积分布函数,即事件发生次数小于等于 k 的概率。

stats.bernoulli.cdf(0, 0.3)

0.7(失败或0次成功的概率)

假设事件发生的概率 p=0.7,这个伯努利分布的理论概率

from scipy import stats

# 设置成功概率
p = 0.7

# 发生的概率 (X=1)
prob_success = stats.bernoulli.pmf(1, p)
print(f"发生的概率: {prob_success:.2f}")

# 未发生的概率 (X=0)
prob_failure = stats.bernoulli.pmf(0, p)
print(f"未发生的概率: {prob_failure:.2f}")

随机模拟:当理论概率难以直接计算或需要模拟真实过程时,可以采用样本抽样的方式来观察大量试验后的统计规律。

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

# 设置参数
p = 0.3 # 单次成功率
sample_size = 10000 # 模拟试验次数

# 生成随机样本
np.random.seed(63) # 设置随机种子以保证结果可重现
samples = stats.bernoulli.rvs(p, size=sample_size)

# 统计成功次数并计算频率
success_count = np.sum(samples)
simulated_prob = success_count / sample_size

print(f"模拟试验次数: {sample_size}")
print(f"成功次数: {success_count}")
print(f"成功的模拟频率: {simulated_prob:.4f}")
print(f"理论概率 p: {p}")

输出结果:

模拟试验次数: 10000

成功次数: 3024

成功的模拟频率: 0.3024

理论概率 p: 0.3

当模拟次数足够多时,频率会稳定在理论概率附近,也是大数定律的直观表现​​。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐