ML 系列赛: 第 22 节 — 离散概率分布 (Multinoulli Distribution)

一、说明

多重努利分布,也称为分类分布 或伯努利分布对多个类别的泛化,是在随机变量上定义的概率分布函数,该变量可以采用 k 个 不同值之一。每个值代表不同的类别或结果,与每个类别关联的概率之和必须为 1

从本质上讲,Multinoulli 分布将 Bernoulli 分布的概念扩展到存在两种以上可能结果的场景。它通常用于观察结果属于多个离散类别的情况,例如在文本分类的自然语言处理中,单词可以分为不同的类或主题。

二、关于贝努力

如果您执行的实验只能有两个结果(成功或失败),则在成功时取值 1 且在失败时取值 0的随机变量是伯努利随机变量。

如果您执行一个可以有 k 个结果的实验,并且通过X_i一个随机变量来表示,该变量在获得第 i 个 结果时取值 1,否则取 0,则定义为 Multinoulli 随机向量的随机向量 X:

换句话说,当获得第 i 个 结果时,Multinoulli 随机向量 X 的第 i 个条目的值为 1,而所有其他条目都等于 0。这个定义本质上是描述一个独热编码向量,它通常用于表示机器学习和概率论中的分类数据。

在接下来的内容中,k 个可能结果的概率将用 p1、p2、...、pk 表示。

X 是一个向量,有一个等于 1 的条目,表示特定结果的发生,而所有其他条目都等于 0,表示没有这些结果。

设 p1, p2, ..., pk 为 k 个严格正数,使得:

我们说 X 有一个 Multinoulli 分布,概率为 p1, p2, ..., pk

如果其概率质量函数为:

如果您对上述联合 pmf 的定义感到困惑,请注意,当 (x1, x2, ..., xk) ∈ Rx 且 习 = 1 时,因为已获得第 i 个结果,因此所有其他条目都等于 0,并且:

三、另一种公式化的方法:

看起来更复杂但有助于数学运算的公式如下:

**四、例:**对具有多重努利分布的不公平六面骰子进行建模

在此示例中,我们通过对不公平的六面骰子的结果进行建模来探索 Multinoulli 分布的概念。每个结果代表从 1 到 6 的一个数字,为每个结果分配不同的概率。使用 Multinoulli 分布,我们计算观察到每个结果的概率,从而深入了解此不公平骰子的结果分布。

让我们使用我之前提到的 one-hot fashion 方法重新计算概率 P(X = 4):

代入给定的概率:

因此,给定 Multinoulli 分布的概率 PX= 4) 确实是 0.15。

五、期望 (E[X])

假设期望 E[X] 等于概率 p,其中 p 是观察到特定类别的概率,让我们使用提供的概率来计算它:

对于前一个不公平的骰子:

[0.1, 0.2, 0.3, 0.15, 0.1, 0.15 ]

五、方差

要计算表示不公平六面骰子结果的给定 Multinoulli 分布的方差,我们可以使用以下公式:

[0.1*0.9, 0.2*0.8, 0.3*0.7, 0.15*0.85, 0.1*0.9, 0.15*0.85]

在机器学习系列的第 22 天,我们深入研究了 Multinoulli 分布的基础知识,探索了其基础知识和应用。加入我们的第 23 天,我们将深入探讨多项式分布的复杂性。

六、python示例

骰子的 multinoulli 分布表示骰子每个面(1 到 6)的概率。

bb 复制代码
import numpy as np
import matplotlib.pyplot as plt

# Define the probabilities for each face of the dice
faces = np.array([1, 2, 3, 4, 5, 6])
probabilities = np.array([1/6] * 6)  # For a fair dice

# Create the plot
plt.figure(figsize=(8, 5))
plt.bar(faces, probabilities, color='blue', alpha=0.7)

# Add titles and labels
plt.title('Multinoulli Distribution for a Fair Six-Sided Dice')
plt.xlabel('Dice Faces')
plt.ylabel('Probability')

# Adding some space above the bars for better visualization
plt.ylim(0, 1/6 + 0.05)  

# Show the probabilities on top of the bars
for i in range(len(faces)):
    plt.text(faces[i], probabilities[i] + 0.002, f'{probabilities[i]:.2f}', ha='center', va='bottom')

plt.show()

此代码将生成一个条形图,显示骰子每个面的概率。

在机器学习系列的第 22 天,我们探索了 multinoulli 分布,讨论了它在各种分类问题中的属性和应用。

相关推荐
佚名ano1 天前
阻尼Newton方法-数值最优化方法-课程学习笔记-5
笔记·学习·概率论
A Runner for leave3 天前
概率论和数理统计知识点汇总——第二章随机变量的分布与数字特征
概率论
jun7788953 天前
正态分布密度函数的基本概念
概率论
孤单网愈云4 天前
11.13机器学习_贝叶斯和决策树
决策树·机器学习·概率论
颹蕭蕭4 天前
均值方差增量计算
算法·均值算法·概率论
阑梦清川4 天前
概率论之常见分布与matlab绘图
开发语言·matlab·概率论
行码棋5 天前
概率论公式整理
概率论
MarkHD7 天前
第十三天 概率论与统计学
概率论
qzhqbb12 天前
贝叶斯定理
概率论