Math-00.数学分布-15.多项分布

多项分布(Multinomial distribution)是 二项分布$K$ 类 的推广:$n$ 次独立试验中,各类别出现次数 $(X_1,\ldots,X_K)$ 的联合分布,是多分类标签读段类别计数交叉熵损失的概率基础。

段末注释交叉熵(cross-entropy)损失来自分类标签的负对数似然,底层假设常为多分类 Bernoulli/多项。

读前说明:离散多元分布,下文给出 PMF。系列:00 规划 | 前置:10.伯努利11.二项


1. 产生背景与直观

图 1 多项分布直观

抛 $n$ 次 $K$ 面骰子(各面概率 $p_1,\ldots,p_K$),问「各面出现几次」。$K=2$ 时退化为二项;$n=1$ 时退化为分类分布(Categorical)。


2. 定义与参数

$(X_1,\ldots,X_K) \sim \mathrm{Multinomial}(n; p_1,\ldots,p_K)$:

要素 内容
支撑集 ${(x_1,\ldots,x_K): x_i \ge 0,, \sum x_i = n}$
参数 $n \in \mathbb{N}^+$;$p_i \ge 0$,$\sum_{i=1}^K p_i = 1$

3. PMF 与 CDF

图 2 三维单纯形上的概率质量

3.1 PMF

$$
P(X_1=x_1,\ldots,X_K=x_K) = \frac{n!}{x_1!\cdots x_K!}, p_1^{x_1}\cdots p_K^{x_K}
$$

其中 $\sum_i x_i = n$。

3.2 边缘分布

每个 $X_i$ 边缘为 $\mathrm{Binomial}(n, p_i)$。

3.3 CDF

多元 CDF 为 $P(X_1 \le c_1, \ldots, X_K \le c_K)$,实际计算多用边缘二项或模拟。


4. 数字特征

公式
$\mathbb{E}[X_i]$ $np_i$
$\mathrm{Var}(X_i)$ $np_i(1-p_i)$
$\mathrm{Cov}(X_i, X_j)$ $-np_i p_j$($i \ne j$)

各类计数负相关(总和固定为 $n$)。


5. 与其他分布的关系

关系 说明
Binomial $K=2$ 时 $\mathrm{Multinomial}(n;p,1-p)$
Bernoulli / Categorical $n=1$ 时单次多类试验
Dirichlet–Multinomial $p_i$ 随机 → 过度离散
Softmax 回归 $Y_i \sim \mathrm{Categorical}(\mathrm{softmax}(\mathbf{z}_i))$,$n$ 次 i.i.d. → 多项
Poisson 分解 独立 Poisson 计数,条件于总和 $n$ → 多项

6. 前提假设

假设 含义 违背时
$n$ 固定 试验总次数已知 $n$ 随机 → Poisson 分解等
$K$ 类互斥完备 每次试验恰落入一类 多标签/重叠 → 其他模型
$p_i$ 恒定 $\sum_i p_i=1$,各类概率不变 批次偏倚 → Dirichlet–Multinomial
独立试验 各次试验互不影响 读段 overlap → 相关结构

段末注释:$K=2$ 退化为二项;$n=1$ 为分类(Categorical)分布。


7. 适用场景

图 3 适用场景

场景 示例
多分类标签 图像 10 类、氨基酸 20 类 one-hot 聚合
读段分配 $n$ 条 read 分配到 $K$ 个参考序列
投票/民意 $n$ 票中各候选人得票
Softmax 分类器 交叉熵 = 多项负对数似然
RNA 密码子 同义密码子使用频率(固定长度窗口)

8. 局限与误用

图 4 局限

问题 说明
$p_i$ 不恒定 批次、长度偏倚 → Dirichlet-Multinomial
非独立试验 读段 overlap、链式依赖
$n$ 不固定 应用 Poisson 或 NB 模型
稀疏类别 某 $p_i$ 极小,渐近 $\chi^2$ 失效
与多项逻辑回归混淆 后者是 $p_i$ 的函数形式,非分布本身

9. 参数估计与推断

9.1 MLE

观测各类计数 $x_i$,$\sum x_i = n$:

$$
\hat{p}_i = \frac{x_i}{n}
$$

9.2 检验

  • 拟合优度:$\chi^2$ 检验观测频数 vs 期望 $np_i$ → 26.卡方
  • 列联表独立性检验

10. 示例与代码

场景:1000 条 read 比对到 4 个参考,计数 (320, 280, 210, 190),检验是否均匀。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import numpy as np
from scipy import stats

counts = np.array([320, 280, 210, 190])
n = counts.sum()
K = len(counts)
p_hat = counts / n

# PMF at observed counts
log_pmf = stats.multinomial.logpmf(counts, n, p_hat)
print(f"log PMF at observed: {log_pmf:.2f}")

# chi-square goodness-of-fit vs uniform
expected = np.full(K, n / K)
chi2, pval = stats.chisquare(counts, expected)
print(f"chi2 vs uniform: stat={chi2:.2f}, p={pval:.4f}")

# simulate
sim = stats.multinomial.rvs(n, p_hat, size=5000, random_state=42)
print("sim mean counts:", sim.mean(axis=0))
print("theory E:", n * p_hat)

11. 小结

  • Multinomial($n; p_1,\ldots,p_K$):$K$ 类固定次数试验的计数向量。
  • 边缘为二项;与 Softmax + 交叉熵 直接对应。
  • 拟合优度与列联表分析的核心离散模型。

系列导航11.二项 | 25.Beta


参考文献

  1. scipy.stats.multinomial
-------------本文结束感谢您的阅读-------------