在概率论与统计学中,研究者们提出了多种离散型概率分布,以满足不同可数结果的建模需求。这些分布从简单的二分类描述到复杂的多类别计数统计,覆盖了广泛的应用场景。这里我们介绍在人工智能领域的分类预测、结果统计、特征建模等场景使用较为频繁的五种离散分布,分别为伯努利分布、二项分布、类别分布、多项分布和泊松分布。
伯努利分布
伯努利分布(Bernoulli Distribution)描述单次二分类试验的结果,试验仅有两种互斥的输出:正类(记为 1)和负类(记为 0),且两种结果的概率固定不变,它是 AI 二分类任务的概率基础。设随机变量 表示单次二分类结果,核心参数为 (正类发生的概率, ),负类概率为 ,概率质量函数为
随机变量服从伯努利分布记为 。下图展示了不同的参数 下伯努利分布的概率质量函数:
在图像二分类任务中,单张图片经模型预测为猫(正类 )或狗(负类, ),模型通过特征提取与计算输出的概率 正是伯努利分布的核心参数,可直接用于判断图片所属类别。
二项分布
二项分布(Binomial Distribution)是伯努利分布的扩展,描述 次独立重复伯努利试验中,正类结果出现的总次数,常用于二分类模型的批量结果统计与性能评估。设随机变量 表示 次试验中正类出现的次数,核心参数为 (试验总次数)和 (单次试验正类概率),概率质量函数为
其中 为组合数,含义是从 次试验中选 次正类的所有可能情况数,取值范围为 。随机变量服从二项分布记为 。下图展示了不同的参数下二项分布的概率质量函数:
例如用某二分类模型预测 1000 个测试样本,已知模型单次预测正确的概率 ,那么预测正确的样本数 服从二项分布 ,通过该分布可计算正确样本数落在 430~450 之间的概率,以此验证模型性能稳定性。
类别分布
类别分布(Categorical Distribution)描述单次多分类试验的结果,试验有 个互斥的类别,单次试验仅选中一个类别,每个类别的选中概率固定,它是多分类任务的输出层概率基础,伯努利分布是其 时的特例。设随机变量 表示单次多分类结果( 表示选中第 类),核心参数为概率向量 ( 为第 类的选中概率),满足约束条件 ,概率质量函数为
随机变量服从类别分布记为 。 下图展示了不同的参数下类别分布的概率质量函数:
在 MNIST 手写数字识别任务中,单张图片需分类为 0~9 中的某个数字( ),模型输出层通过 Softmax 函数转化得到概率向量 ,该向量正是类别分布的核心参数,最终选择概率最高的类别 1 作为预测结果。
多项分布
多项分布(Multinomial Distribution)是类别分布的扩展,描述 次独立重复类别分布试验中,每个类别被选中的总次数,常用于多分类模型的批量结果统计与类别分布验证。设随机变量 ,其中 表示第 类被选中的次数,核心参数为 (试验总次数)和概率向量 (单次试验的类别概率),满足约束条件 ,概率质量函数为
其中 为第 类的选中次数( 且为整数)。随机变量服从多项分布记为 。下图展示了 , 时,每一类被选中的次数的边缘分布。
例如用情感分析模型处理 1000 条商品评论,类别分为积极、中性、消极( ),单次分类的概率向量为 ,最终统计得到积极评论 710 条、中性 190 条、消极 100 条,通过多项分布可计算该计数结果出现的概率,验证批量预测结果是否符合模型预期。
泊松分布
泊松分布(Poisson Distribution)描述单位时间或空间内,稀有事件发生的总次数,其核心特点是事件发生概率低但试验基数大,仅需一个参数即可描述,广泛应用于 AI 计数型特征建模。设随机变量 表示单位时间 / 空间内事件的发生次数,核心参数为 (单位时间 / 空间内事件的平均发生次数),概率质量函数为
其中 为自然常数,取值范围为 (事件发生次数无上限)。随机变量服从多项分布记为 。下图展示了不同的参数 下,泊松分布的概率质量函数可视化的结果。
在 AI 风控系统中,异常登录检测是核心功能之一。某用户账号在正常情况下,1 天内的异常登录平均次数 (属于稀有事件),通过泊松分布可计算该账号 1 天内出现 2 次及以上异常登录的概率,当该概率超过预设阈值时,系统会触发风控预警,提示用户核实登录行为或采取安全措施。
Python 中离散型分布的实践
在 Python 中伯努利分布、二项分布、类别分布、多项分布、泊松分布,可使用 scipy.stats 库完成概率计算与抽样。scipy.stats 中的对应库有两种通用操作:
-
概率计算:使用方法为
分布类.pmf(取值, 关键参数),用于计算特定取值的概率; -
样本生成:使用方法为
分布类.rvs(关键参数, size=N),用于生成 N 个符合分布的样本。
下面的代码以二项分布为例,演示了使用方法。
# 1. 导入库
from scipy.stats import binom
# 2. 定义参数(10次二分类试验,单次正类概率0.9)
n, p = 10, 0.9
# 3. 概率计算:计算恰好8次正类的概率
prob = binom.pmf(8, n, p)
print(f"10次试验中恰好8次正类的概率:{prob:.4f}")
# 4. 样本生成:生成20组试验的正类计数样本
samples = binom.rvs(n, p, size=20)
print("20组试验的正类计数样本:", samples)
类别分布使用 numpy 库可以完成概率计算和抽样,其中抽样可以使用numpy.random.choice函数。以下代码演示了使用方法:
import numpy as np
# 1. 理论概率(直接用概率向量表示)
p = [0.01, 0.95, 0.04] # 3个类别的概率
print("类别1概率 =", p[0], "类别2概率 =", p[1])
# 2. 抽样模拟(生成20个样本,类别标签为0/1/2)
samples = np.random.choice([0,1,2], size=20, p=p) # 输出:[1,1,0,...,1](多数为类别1)
下面对相关分布的使用函数和核心参数进行了说明。
|
|
|
|
|
|---|---|---|---|
|
|
scipy.stats.bernoulli |
|
|
|
|
scipy.stats.binom |
|
|
|
|
numpy.random.choice |
|
|
|
|
scipy.stats.multinomial |
|
|
|
|
scipy.stats.poisson |
|
|

