← 返回目录

第18章 贝叶斯分类

Bayesian Classification

最大化后验概率,利用花萼长度分类鸢尾花

📜

"我们认为用最简单的假设来解释现象是一个很好的原则。"

"We consider it a good principle to explain the phenomena by the simplest hypothesis possible."

—— 托勒密 (Ptolemy) | 数学家、天文学家、地心说提出者 | 100 ~ 170

🐍 Python工具箱

•
matplotlib.pyplot.fill_between()区域填充颜色
•
seaborn.kdeplot()绘制KDE概率密度估计曲线
•
statsmodels.api.nonparametric.KDEUnivariate()构造一元KDE
•
statsmodels.nonparametric.kde.kernel_switch()更换核函数
•
statsmodels.nonparametric.kernel_density.KDEMultivariate()构造多元KDE
18.1

贝叶斯定理:分类鸢尾花

Bayes Theorem: Classifying Iris Flowers

本章和下一章和读者探讨采用贝叶斯定理对鸢尾花数据分类。 本章采用鸢尾花数据中的花萼长度作为研究对象, 利用KDE生成概率密度函数,预测鸢尾花分类。

📋 使用贝叶斯定理进行分类的一般步骤

1
收集数据,并提取特征
2
计算先验概率 — 对于每个类别,计算其在所有样本中出现的概率
3
计算条件概率 — 对于每个特征,计算它在每个类别下的概率(似然)
4
计算后验概率 — 根据贝叶斯定理,计算给定特征下,每个类别出现的概率
5
判定分类 — 根据后验概率的大小判定分类
实现算法:
具体实现过程中,可以使用不同的算法来计算条件概率和后验概率, 如朴素贝叶斯算法、高斯朴素贝叶斯算法等。 同时,为了避免过拟合和欠拟合问题,我们还需要使用交叉验证、平滑等技术来提高分类器的性能。

🔔 贝叶斯定理

为了帮助大家理解贝叶斯分类,我们首先回忆贝叶斯定理。

大家知道鸢尾花数据分为三类—— setosa、versicolour、virginica。 我们分别用 C₁、C₂、C₃ 作为标签代表这三类鸢尾花。

对于鸢尾花分类问题,贝叶斯定理可以按如下方式表达:

📐 公式1:贝叶斯定理(鸢尾花分类形式)

fY|X(Ck|x) = fX,Y(x,Ck) / fX(x)
或者展开为
fY|X(Ck|x) = [fX|Y(x|Ck) · pY(Ck)] / fX(x)
其中,X代表鸢尾花花萼长度的连续随机变量,
Y代表分类的离散随机变量,Y的取值为 C₁、C₂、C₃。

📚 术语解释

fY|X(Ck|x) — 后验概率 (Posterior)
又叫成员值 (membership score)。
在给定任意花萼长度x的条件下,比较三个后验概率 fY|X(C₁|x)、fY|X(C₂|x)、fY|X(C₃|x) 大小, 可以作为判定鸢尾花分类的依据。
fX|Y(x|Ck) — 似然概率 (Likelihood)
白话解释:给定类别Ck中x出现的可能性。
比如,给定鸢尾花为setosa,花萼长度为10 cm的可能性可以写成 fX|Y(10|Setosa)。
pY(Ck) — 先验概率 (Prior)
表达样本集合中Ck (k=1,2,3) 类样本占比。
注意,pY(Ck)为概率质量函数;这是因为随机变量Y为离散随机变量,取值为 Y=C₁, C₂, C₃。
fX,Y(x,Ck) — 联合概率 (Joint)
也可以记做 fX∩Y(x∩Ck)。
fX(x) — 证据因子 (Evidence)
也叫证据。证据因子和分类无关,仅代表鸢尾花花萼长度X的概率分布情况。
在公式(1)中,证据因子fX(x)对联合概率fX,Y(x,Ck)进行归一化(normalization)处理。
本章假设 fX(x) > 0。

🌸 贝叶斯定理:分类鸢尾花

Bayes Theorem for Iris Classification

分类结果: C₂ (Versicolor)
4.06.08.0

显示选项

公式1:贝叶斯定理
fY|X(Ck|x) = fX,Y(x,Ck) / fX(x)
= [fX|Y(x|Ck) · pY(Ck)] / fX(x)

图1:利用贝叶斯定理分类鸢尾花(花萼长度)

Sepal length, x (cm)Probability Density45678Classes:C₁ SetosaC₂ VersicolorC₃ Virginica
似然 Likelihood
fX|Y(x|Ck)
C₁: 0.3167
C₂: 0.7699
C₃: 0.0565
给定类别Ck,
x出现的可能性
先验 Prior
pY(Ck)
C₁: 1/3 = 0.333
C₂: 1/3 = 0.333
C₃: 1/3 = 0.333
各类样本占比
(50/150 = 1/3)
联合 Joint
fX,Y(x,Ck)
C₁: 0.1056
C₂: 0.2566
C₃: 0.0188
= 似然 × 先验
证据 Evidence
fX(x)
0.3810
= Σ联合概率
归一化因子
后验 Posterior
fY|X(Ck|x)
C₁: 0.2770
C₂: 0.6735
C₃: 0.0494
总和: 1.0000
= 联合 / 证据
成员值(0-1)
核心要点:
  • 后验概率 fY|X(Ck|x) — 分类依据,最大后验→分类结果
  • 似然概率 fX|Y(x|Ck) — 给定类别,x出现的可能性(KDE估计)
  • 先验概率 pY(Ck) — 各类样本占比(1/3)
  • 联合概率 fX,Y(x,Ck) — 似然×先验,也可作为分类依据
  • 证据因子 fX(x) — 归一化因子,与分类无关
  • 核心公式:后验 = (似然 × 先验) / 证据
📊

图1:利用贝叶斯定理,以花萼长度作为特征对鸢尾花进行分类

图1可视化三分类问题中的贝叶斯定理。
下面,我们逐一讲解上述不同的概率,以及它们如何帮助我们完成鸢尾花分类。

🎯 18.1 关键要点

贝叶斯分类流程
• 步骤1:收集数据,提取特征
• 步骤2:计算先验概率
• 步骤3:计算条件概率(似然)
• 步骤4:计算后验概率
• 步骤5:判定分类
五个核心概率
• 后验:分类依据
• 似然:给定类别的可能性
• 先验:类别占比
• 联合:似然×先验
• 证据:归一化因子
💡 核心洞察
• 公式1:贝叶斯定理完整形式
• 图1:三分类问题可视化
• KDE应用:利用第17章的KDE估计似然概率
• 分类标准:最大后验概率→分类结果
• 离散+连续:Y离散(类别),X连续(花萼长度)
✦
18.2

似然概率:给定分类条件下的概率密度

Likelihood: PDF under Given Classification

似然概率 fX|Y(x|Ck) 本身是条件概率, 它描述的是给定类别 Y = Ck 中 X = x 出现的可能性。

注意,本章中 fX|Y(x|Ck) 为概率密度函数 PDF。

📊 图2:三个似然概率 PDF 曲线

图2 (a)、(b)、(c) 分别展示 fX|Y(x|C₁)、fX|Y(x|C₂)、fX|Y(x|C₃) 三个似然概率 PDF 曲线。
KDE估计:这三条概率密度曲线采用高斯 KDE 估计得到。

fX|Y(x|C₁) — Setosa类的似然概率

在鸢尾花数据集所有150个样本数据中,如果我们只分析标签为 C₁ (Setosa) 的50个样本的话,fX|Y(x|C₁)就是这50个样本数据得到花萼长度的概率密度函数 PDF。

fX|Y(x|C₂) — Versicolor类的似然概率

fX|Y(x|C₂) 代表给定鸢尾花分类为 C₂ (Versicolour), 花萼长度的概率密度函数。

fX|Y(x|C₃) — Virginica类的似然概率

同理,fX|Y(x|C₃) 代表给定鸢尾花分类为 C₃ (Virginica), 花萼长度的概率密度函数。

图2 (d) — 三条曲线对比

图2 (d) 比较 fX|Y(x|C₁)、fX|Y(x|C₂)、fX|Y(x|C₃) 三条曲线。
⚠️

重要性质:面积为1

∫-∞+∞ fX|Y(x|Ck)dx = 1
注意,fX|Y(x|Ck) 和横轴包裹的面积为1。
这是因为似然概率是条件概率密度函数,在给定类别的条件下, 所有可能的x值的概率密度积分必须为1。

📊 似然概率:给定分类条件下的概率密度

Likelihood: PDF under Given Classification

带宽 h

0.10.6

显示选项

💡
似然概率 fX|Y(x|Ck)
• 本身是条件概率,描述给定类别 Y=Ck 中 X=x 出现的可能性
• 是概率密度函数 PDF
• 采用高斯KDE估计得到
• 面积为1:∫fX|Y(x|Ck)dx = 1

(a) f_{X|Y}(x|C₁) - Setosa

Sepal length, x (cm)PDF45678Area = 1n = 50

(b) f_{X|Y}(x|C₂) - Versicolor

Sepal length, x (cm)PDF45678Area = 1n = 50

(c) f_{X|Y}(x|C₃) - Virginica

Sepal length, x (cm)PDF45678Area = 1n = 50

图2 (d):比较三个似然概率 PDF 曲线

Sepal length, x (cm)PDF456780.00.51.01.5似然概率:C₁ (Setosa)C₂ (Versicolor)C₃ (Virginica)C₁: 峰值~5.0C₂: 峰值~5.9C₃: 峰值~6.6
理解似然概率
• fX|Y(x|C₁):仅使用C₁类50个样本的KDE估计
• fX|Y(x|C₂):仅使用C₂类50个样本的KDE估计
• fX|Y(x|C₃):仅使用C₃类50个样本的KDE估计
• 每条曲线独立估计,互不影响
曲线特征
• Setosa (C₁):花萼较短,峰值在5.0 cm左右
• Versicolor (C₂):花萼中等,峰值在5.9 cm左右
• Virginica (C₃):花萼较长,峰值在6.6 cm左右
• 三条曲线有重叠→分类有不确定性
📐 关键性质
面积为1:∫-∞+∞ fX|Y(x|Ck)dx = 1
这是因为fX|Y(x|Ck)是条件概率密度函数,
表示在给定类别Ck的条件下,x的概率密度分布。
📈

图2分析:三个似然概率的特征

图2 (a):fX|Y(x|C₁) — Setosa类
• 峰值位于 x ≈ 5.0 cm
• 分布较窄,说明Setosa的花萼长度比较集中
• 主要分布在 4.3 - 5.8 cm 范围
图2 (b):fX|Y(x|C₂) — Versicolor类
• 峰值位于 x ≈ 5.9 cm
• 分布较宽,变异性较大
• 主要分布在 4.9 - 7.0 cm 范围
图2 (c):fX|Y(x|C₃) — Virginica类
• 峰值位于 x ≈ 6.6 cm
• 分布最宽,Virginica花萼长度跨度最大
• 主要分布在 4.9 - 7.9 cm 范围
图2 (d):三条曲线对比
• 三条曲线有明显的分离趋势
• 但也存在重叠区域,这导致分类不确定性
• Setosa与其他两类分离最明显
• Versicolor和Virginica有较大重叠

🔗 与第17章KDE的联系

第17章的KDE技术在这里得到应用!
第17章:KDE原理
• 学习高斯核密度估计
• 带宽h的选择
• 从数据估计PDF
• 非参数方法
第18章:KDE应用
• 对每个类别分别做KDE
• 得到似然概率PDF
• 用于贝叶斯分类
• 实战应用
具体步骤:
1. 将150个样本按类别分成3组(各50个)
2. 对C₁类的50个样本做KDE → fX|Y(x|C₁)
3. 对C₂类的50个样本做KDE → fX|Y(x|C₂)
4. 对C₃类的50个样本做KDE → fX|Y(x|C₃)
5. 三条曲线独立估计,每条面积都为1

🎯 18.2 关键要点

似然概率定义
• 条件概率密度函数
• 给定类别下x的可能性
• 采用KDE估计
• 面积为1
三条曲线特征
• C₁峰值~5.0 cm(最短)
• C₂峰值~5.9 cm(中等)
• C₃峰值~6.6 cm(最长)
• 有重叠→分类不确定性
💡 核心洞察
• 图2 (a)(b)(c):三个类别的似然概率分别展示
• 图2 (d):三条曲线对比,看出分离和重叠
• KDE应用:第17章工具的实战
• 独立估计:每个类别单独做KDE,互不影响
• 分类依据:似然概率是贝叶斯分类的重要组成部分
✦
18.3

先验概率:鸢尾花分类占比

Prior Probability: Class Proportions

先验概率 pY(Ck) 描述的是样本集合中 Ck 类样本占比。

由于 Y 为离散随机变量,因此我们采用概率质量函数。

📐 公式2:先验概率计算公式

pY(Ck) = count(Ck) / count(total), k = 1,2,3
其中:
• count() 为计数运算符
• count(Ck) 计算标签样本空间 Ω 中 Ck 类样本数据数量
• count(total) 为总样本数

🌸 公式3:鸢尾花数据的先验概率

如图3所示,对于鸢尾花数据,每一类标签的样本数据都是50,
因此三类标签的先验概率都是1/3:
pY(Ck) = 50/150 = 1/3, k = 1,2,3
pY(C₁) = 1/3
Setosa: 50/150
pY(C₂) = 1/3
Versicolor: 50/150
pY(C₃) = 1/3
Virginica: 50/150

📊 先验概率:鸢尾花分类占比

Prior Probability: Class Proportions

样本数量调整

总样本数: 150

📐 公式2:先验概率计算

pY(Ck) = count(Ck) / count(total)
C₁
50 / 150
= 0.3333
C₂
50 / 150
= 0.3333
C₃
50 / 150
= 0.3333

频数 (Count)

505050C₁C₂C₃Count0204060

先验概率 pY(Ck)

0.3330.3330.333C₁C₂C₃Probability0.00.20.40.60.81.0
✅

鸢尾花数据集的先验概率

公式3:pY(Ck) = 50/150 = 1/3, k = 1,2,3
对于鸢尾花数据,每一类标签的样本数据都是50,
因此三类标签的先验概率都是1/3 ≈ 0.333。
⚖️

概率和为1

Σ pY(Ck) = 0.3333 + 0.3333 + 0.3333 = 1.0000
✓ 概率和等于1(归一化)
先验概率定义
• 描述:样本集合中Ck类样本占比
• 类型:概率质量函数 PMF(Y是离散随机变量)
• 计算:count(Ck) / count(total)
• 归一化:Σ pY(Ck) = 1
鸢尾花数据
• 总样本:150个
• 每类样本:50个(均衡数据集)
• 先验概率:都是1/3 = 0.333
• 特点:三类样本数量相等,无偏
📊

图3:150个样本数据三类的频数和先验概率

左图:频数(Count)
• C₁ (Setosa):50个样本
• C₂ (Versicolor):50个样本
• C₃ (Virginica):50个样本
• 总计:150个样本
右图:先验概率 pY(Ck)
• C₁:1/3 ≈ 0.333
• C₂:1/3 ≈ 0.333
• C₃:1/3 ≈ 0.333
• 总和:1.0(归一化)

🔍 PMF vs PDF:为什么先验是概率质量函数?

先验概率 pY(Ck)
• 类型:概率质量函数 PMF
• 原因:Y是离散随机变量
• 取值:Y ∈ {C₁, C₂, C₃}
• 性质:Σ pY(Ck) = 1
• 值:概率值,范围[0,1]
似然概率 fX|Y(x|Ck)
• 类型:概率密度函数 PDF
• 原因:X是连续随机变量
• 取值:X ∈ ℝ(花萼长度)
• 性质:∫ fX|Y(x|Ck)dx = 1
• 值:密度值,可以>1
关键区别:
• 先验概率是真正的概率(PMF),因为类别是离散的
• 似然概率是概率密度(PDF),因为花萼长度是连续的
• 两者在贝叶斯公式中相乘得到联合概率密度

⚖️ 均衡数据集 vs 不均衡数据集

鸢尾花数据(均衡)
• C₁: 50样本,p=1/3
• C₂: 50样本,p=1/3
• C₃: 50样本,p=1/3
• 特点:三类样本数相等
• 优点:无偏,公平
假设不均衡数据
• C₁: 100样本,p=0.5
• C₂: 30样本,p=0.15
• C₃: 70样本,p=0.35
• 特点:类别样本数不等
• 影响:先验有偏向
先验概率的作用:
• 反映数据集的类别分布
• 影响分类决策:样本多的类别先验高,更容易被分类为该类
• 均衡数据集:先验对三类一视同仁(都是1/3)
• 不均衡数据集:先验会偏向样本多的类别

🎯 18.3 关键要点

先验概率定义
• 样本集合中类别占比
• 概率质量函数PMF
• Y是离散随机变量
• 计算:count(Ck)/count(total)
鸢尾花数据
• 总样本:150个
• 每类:50个(均衡)
• 先验:都是1/3
• 无偏分类
💡 核心洞察
• 公式2:通用先验概率计算公式
• 公式3:鸢尾花数据的具体值(1/3)
• 图3:频数和先验概率的视觉对比
• PMF vs PDF:离散vs连续的关键区别
• 均衡数据:先验对所有类别一视同仁
• 归一化性质:Σ pY(Ck) = 1
✦
18.4

联合概率:可以作为分类标准

Joint Probability: Can Be Used as Classification Criterion

联合概率 fX,Y(x,Ck) 描述事件Y = Ck 和事件 X = x 同时发生的可能性。

比如,花萼长度为 x = 5.6 cm 且鸢尾花分类为 Y = C₁ (Setosa) 的可能性 可以用 fX,Y(5.6, C₁) 表达。

注意,fX,Y(x,Ck) 也是概率密度函数 PDF,并不是"概率"。

📐 公式4:联合概率计算公式

根据贝叶斯定理,联合概率 fX,Y(x,Ck) 可以通过似然概率 fX|Y(x|Ck) 和 先验概率 pY(Ck)相乘得到:
fX,Y(x,Ck) = fX|Y(x|Ck) × pY(Ck)
简单理解:
• 联合概率 = 似然概率 × 先验概率
• 将似然概率曲线按先验概率缩放
• 对于鸢尾花数据:联合 = 似然 × (1/3)

🔗 联合概率:可以作为分类标准

Joint Probability: Can Be Used as Classification Criterion

花萼长度 x

带宽 h

📐 公式4:联合概率计算

fX,Y(x,Ck) = fX|Y(x|Ck) × pY(Ck)
联合概率 = 似然概率 × 先验概率
C₁
0.351 × 1/3
= 0.1171
C₂
0.791 × 1/3
= 0.2637
C₃
0.033 × 1/3
= 0.0110

图4 (a)(b)(c):从似然概率到联合概率的缩放过程

(a) C₁ (Setosa)

Sepal length, x (cm)45678LikelihoodJointArea = 1/3

(b) C₂ (Versicolor)

Sepal length, x (cm)45678LikelihoodJointArea = 1/3

(c) C₃ (Virginica)

Sepal length, x (cm)45678LikelihoodJointArea = 1/3

图4 (d):比较三个联合概率 PDF 曲线(可作为分类标准)

Sepal length, x (cm)Joint PDF45678联合概率:C₁ (Setosa)C₂ (Versicolor)C₃ (Virginica)x=5.6时,分类为 C₂ (最高联合概率)
面积变化
• 似然概率:面积 = 1
• 联合概率:面积 = pY(Ck) = 1/3
• 缩放因子:先验概率
• 似然×(1/3) = 联合
分类标准
• 比较三条联合概率曲线高低
• 最高的联合概率→分类结果
• 不需要计算证据因子
• 不需要归一化
📊 联合概率特性
1. 是概率密度函数PDF
fX,Y(x,Ck)也是PDF,不是"概率"
2. 面积为先验概率
∫ fX,Y(x,Ck)dx = pY(Ck) = 1/3
3. 可作为分类依据
argmaxk fX,Y(x,Ck) → 分类结果
📊

图4:先验概率和联合概率的关系

图4 (a)(b)(c):分别展示 fX,Y(x,C₁)、fX,Y(x,C₂)、fX,Y(x,C₃) 三个联合概率 PDF 曲线。
这三幅图还展示从似然概率 fX|Y(x|Ck) 到联合概率 fX,Y(x,Ck) 的缩放过程。
图4 (d):比较 fX,Y(x,C₁)、fX,Y(x,C₂)、fX,Y(x,C₃) 三个联合概率 PDF 曲线, 即"似然概率 × 先验概率"。
📐

面积性质对比

似然概率 fX|Y(x|Ck)
∫ fX|Y(x|Ck)dx = 1
面积为1(条件概率密度)
联合概率 fX,Y(x,Ck)
∫ fX,Y(x,Ck)dx = pY(Ck) = 1/3
面积为先验概率(缩放后)
缩放关系:
• 似然概率和横轴包裹的面积为1
• 联合概率和横轴包裹的面积为pY(Ck)
• 对鸢尾花数据:联合概率面积 = 1/3

🎯 联合概率可以作为分类标准

实际上,这三条曲线的高低已经可以用来作为分类标准,这是本章后续要介绍的内容。
分类规则:
ŷ = argmaxk fX,Y(x,Ck)
给定花萼长度x,选择使联合概率最大的类别Ck作为分类结果。
如果 fX,Y(x,C₁) 最大
→ 分类为 C₁ (Setosa)
如果 fX,Y(x,C₂) 最大
→ 分类为 C₂ (Versicolor)
如果 fX,Y(x,C₃) 最大
→ 分类为 C₃ (Virginica)
优势:
• 不需要计算证据因子 fX(x)
• 不需要归一化处理
• 直接比较联合概率的大小即可
• 计算简单,效率高

🔄 缩放过程详解

图4 (a)(b)(c) 展示了从似然概率到联合概率的缩放过程:
步骤1:似然概率
• 每个类别的KDE曲线
• 面积 = 1
• 高度较高
步骤2:乘以先验
• 乘以pY(Ck) = 1/3
• 缩放因子
• 曲线向下压缩
步骤3:联合概率
• 得到联合概率曲线
• 面积 = 1/3
• 高度降低
视觉效果:
在图4 (a)(b)(c)中,可以看到虚线(似然概率)和实线(联合概率)的对比, 实线是虚线按1/3缩放后的结果。

🎯 18.4 关键要点

联合概率定义
• X=x 和 Y=Ck 同时发生
• 也是概率密度函数PDF
• 计算:似然 × 先验
• 面积:pY(Ck) = 1/3
分类标准
• 比较三条联合曲线高低
• argmaxk fX,Y(x,Ck)
• 不需证据因子
• 不需归一化
💡 核心洞察
• 公式4:联合 = 似然 × 先验
• 图4 (a)(b)(c):缩放过程可视化
• 图4 (d):三条联合曲线对比
• 面积变化:从1缩放到1/3
• 分类依据:联合概率可直接用于分类
• 计算优势:跳过归一化步骤