← 返回目录

第17章 概率密度估计

Probability Density Estimation

核密度估计就是若干概率密度函数加权叠合

💭

大自然是一个无限的球体,其中心无处不在,圆周无处可寻。

Nature is an infinite sphere of which the center is everywhere and the circumference nowhere.

—— 布莱兹·帕斯卡 (Blaise Pascal)
法国哲学家、科学家 | 1623 ~ 1662

🐍 Python工具箱

matplotlib.pyplot.fill_between()

区域填充颜色

seaborn.kdeplot()

绘制KDE概率密度估计曲线

sklearn.neighbors.KernelDensity()

概率密度估计函数

statsmodels.api.nonparametric.KDEUnivariate()

构造一元KDE

statsmodels.nonparametric.kde.kernel_switch()

更换核函数

statsmodels.nonparametric.kernel_density.KDEMultivariate()

构造多元KDE

✦
17.1

概率密度估计:从直方图说起

Probability Density Estimation: Starting from Histogram

简单来说,概率密度估计 (probability density estimation) 就是
寻找合适的随机变量概率密度函数,使其尽量贴合样本数据分布情况。

📊 直方图

直方图实际上是最常用的一种概率密度估计方法。本书第2章介绍过,为了构造直方图:

1. 将样本数据的取值范围分为一系列左右相连等宽度的组 (bin)
2. 统计每个组内样本数据的频数
3. 以组距为底边、以频数为高度,绘制一系列矩形图
图1所示为鸢尾花四个特征上样本数据的频数直方图。
合理地选择组距,让大家一眼能够通过直方图看出样本分布的大致情况。
纵轴的频数,也可以替换成概率、概率密度。
当纵轴为概率密度时,直方图这些矩形面积之和为1,对应概率1。
⚠️ 直方图的缺点:
概率密度估计结果呈现阶梯状,不"平滑"。
很多数据科学、机器学习应用场合,我们需要得到连续平滑的密度估计曲线。

📈 参数估计

本书前文介绍一些常见的概率分布函数,但是它们的形状远远不够描述现实世界采集的分布情况较为复杂的样本数据。

以高斯分布为例,我们可以很容易计算得到样本数据的均值μ和均方差σ,
这样可以直接用正态分布来估计样本数据在某个单一特征上的分布情况:
f(x) = (1/(σ√(2π))) exp[-(x-μ)²/(2σ²)]
估计概率密度时,直接利用均值μ和均方差σ这两个参数,
因此这种方法也被称作参数估计。
如图2所示,高斯分布显然比图1的直方图"平滑"的多。
⚠️ 参数估计的缺陷:
对比图1和图2,容易发现样本分布细节被忽略。
最明显的是鸢尾花花瓣长度(图1(c)、图2(c))、花瓣宽度(图1(d)、图2(d))这两个特征上样本数据的分布。
多数情况,样本数据分布不够"正态",仅仅使用均值μ和均方差σ描述数据不合适。

🌊 核密度估计

下面介绍本章的主角——核密度估计 (Kernel Density Estimation, KDE)。

本书前文很多场合已经用过核密度估计,比如第2、5章中都用高斯核密度估计过:
  • 鸢尾花单一特征概率密度
  • 联合概率密度
核密度估计需要指定一个核函数来描述每一个数据点。
最常见的核函数是高斯核函数,本章还会介绍并比较其他核函数。
图3所示为通过高斯核函数核密度估计得到的平滑曲线。
下面我们聊一聊核密度估计原理。

📊 概率密度估计方法对比

Probability Density Estimation Methods

估计方法

参数设置

直方图特点
• 最常用的密度估计
• 呈现阶梯状
• 不够平滑
• 依赖组距选择

数据信息

• 样本:鸢尾花萼片长度
• 样本量:n = 150
• 范围:[4.5, 7.1]

图1. 直方图估计

萼片长度 (cm)概率密度45678
阶梯状,不够平滑
📊 直方图
优点:
• 简单直观
• 计算快速
缺点:
• 不平滑
• 依赖组距
📈 参数估计
优点:
• 平滑曲线
• 易于理解
缺点:
• 丢失细节
• 分布假设
🌊 核密度估计
优点:
• 平滑曲线
• 保留细节
缺点:
• 需选带宽
• 计算较慢
📐 公式
频数直方图:统计每个bin内的样本数
核心要点:
  • 直方图 — 最简单但不平滑
  • 参数估计 — 平滑但可能丢失分布细节
  • 核密度估计KDE — 平滑且保留细节,是本章重点
  • 鸢尾花数据 — 花瓣长度和宽度分布不够正态
  • 实际应用 — 数据科学、机器学习需要平滑密度曲线
💻 Python代码
Bk5_Ch17_01.py 代码绘制图3。
代码使用 seaborn.kdeplot() 绘制KDE曲线。
本章后续分别介绍几种不同的办法绘制KDE曲线。

🎯 17.1 关键要点

直方图
• 最常用方法
• 阶梯状
• 不够平滑
• 依赖组距选择
参数估计
• 用μ和σ参数
• 平滑曲线
• 丢失细节
• 假设分布形式
核密度估计KDE
• 非参数方法
• 平滑曲线
• 保留细节
• 本章主角
💡 核心洞察
• 密度估计目标:找到贴合样本数据分布的概率密度函数
• 直方图:简单但阶梯状,不平滑
• 参数估计:平滑但可能丢失分布细节(如鸢尾花花瓣数据)
• 核密度估计:平滑+保留细节,是数据科学和机器学习的首选
• 鸢尾花数据:四个特征分布各异,展示了不同方法的优缺点
✦
17.2

核密度估计:若干核函数加权叠合

KDE: Weighted Sum of Kernel Functions

核密度估计其实是对直方图的一个自然拓展。
直方图不够平滑,我们引入合适的核函数得到更加平滑的概率密度估计曲线。
前文说到,核函数种类很多,本节以高斯核函数为例介绍核密度估计原理。

💡 原理

任意一个数据点x(i),都可以用一个函数来描述,这个函数就是核函数。

如图4所示,一共有7个样本点,每一个样本点都用一个高斯核函数描述。
白话说,图4中这7条曲线等权重叠加便得到核密度估计概率密度曲线。

📐 公式2:单个核函数

对于n个样本数据点 {x(1), x(2), ..., x(n)}, 我们可以用n个核函数分别代表每个数据点:
(1/h)K((x - xi)/h)
Shift(平移):
x - xi 代表曲线在水平方向平移
Scale(缩放):
h (h > 0) 是核函数的缩放系数,又叫带宽
重要性质:每个核函数和水平面构成图形的面积为1。

📊 公式3:叠加 → 平均

这n个核函数先叠加,然后再平均,便得到概率密度估计函数:
f̂(x) = (1/n)Σᵢ₌₁ⁿ (1/h)K((x - xᵢ)/h)
上式中,1/n让n个面积为1的函数面积归一化。
也就是说,每个核函数贡献的面积为1/n。

🔔 高斯核函数(公式4)

下面我们以高斯核函数为例,聊聊如何理解公式2。
高斯核函数K(x)的定义:
K(x) = (1/√(2π)) exp(-x²/2)
上述高斯核函数显然和横轴围成的面积为1。

🔄 对称性(公式5)

核函数要求具有对称性,即:
K(x) = K(-x)
显然,公式4定义的高斯核函数满足对称性。
而公式2中x - xi代表曲线在水平方向平移。
由于核函数K(x)关于纵轴对称,因此K(x - xi)关于x = xi对称。

📏 缩放

公式2中的带宽h则代表图像在水平方向的缩放。

大家是否还记得图5?我们在讲解函数图像变换时提过:

原函数f(x)和cf(cx)面积相同,其中c > 0
图5这两幅子图来自《数学要素》第12章。
展示了函数在水平方向、竖直方向伸缩的效果。

📐 面积为1(公式6)

K(x)的重要性质之一是面积为1,也就是K(x)对x在(-∞, +∞)积分为1:
∫₋∞⁺∞ K(x)dx = 1
公式4中高斯核函数显然满足这一条件。
利用换元积分,很容易得到等式,解释了为什么f(x)和cf(cx)面积相同。

🌊 核密度估计原理:若干核函数加权叠合

KDE Principle: Weighted Sum of Kernel Functions

带宽 h

0.32.0
• h适中:平衡

显示选项

数据点

{-3, -2, 0, 2, 2.5, 3, 4}
样本数 n = 7
核函数公式
高斯核
K(x) = (1/√(2π))e^(-x²/2)
缩放平移
(1/h)K((x-xᵢ)/h)
KDE估计
f̂(x) = (1/n)Σᵢ(1/h)K((x-xᵢ)/h)

面积归一化

• 每个核函数面积: 1/n = 0.143
• 总面积: 7 × 0.143 = 1
• 无论h大小,总面积始终为1

图6. 用7个高斯核函数构造的概率密度估计曲线

-3-2022.534x概率密度h = 1.00
彩色细线:各个核函数 紫色粗线:叠加平均后的KDE曲线

对称性(公式5)

K(x) = K(-x)
核函数要求具有对称性,即关于纵轴对称。
因此K(x-xᵢ)关于x=xᵢ对称。

面积为1(公式6)

∫₋∞⁺∞ K(x)dx = 1
K(x)的重要性质之一是面积为1。
利用换元积分,f(x)和cf(cx)面积相同。

📐 缩放(公式2)

平移 (Shift):
K(x - xᵢ)
代表曲线在水平方向平移,关于x=xᵢ对称
缩放 (Scale):
(1/h)K((x-xᵢ)/h)
• 带宽h代表水平方向缩放
• h小 → 核函数细高
• h大 → 核函数矮胖
• 面积始终为1
图5参考:
来自《数学要素》第12章,展示f(x)和cf(cx)面积相同的原理
💡

叠加 → 平均

如图6所示,每个数据点给总的概率密度曲线估计贡献一条曲线。

步骤:
1. 对每个数据点xᵢ,构造核函数(1/h)K((x-xᵢ)/h)
2. 每条曲线和横轴的面积为1/n
3. 叠加n个核函数
4. 平均:乘以1/n
5. 得到的曲面和横轴围成图形的面积为1

公式推导

公式2(单个核函数):
(1/h)K((x-xᵢ)/h)
• 平移:x-xᵢ
• 缩放:除以h
• 归一化:乘以1/h
公式3(KDE估计):
f̂(x) = (1/n)Σᵢ₌₁ⁿ (1/h)K((x-xᵢ)/h)
• n个核函数叠加
• 平均:乘以1/n
• 保证总面积为1
高斯核函数(公式4):
K(x) = (1/√(2π))e^(-x²/2)
标准正态分布的概率密度函数
核心要点:
  • 核函数 — 用来描述每个数据点,最常见的是高斯核
  • 对称性 — K(x) = K(-x),关于纵轴对称
  • 面积为1 — 每个核函数积分为1
  • 带宽h — 控制核函数高矮胖瘦,h小则细高,h大则矮胖
  • 叠加平均 — n个核函数叠加后除以n,保证总面积为1
  • KDE本质 — 直方图的自然拓展,更加平滑
📊

可视化"叠加"

以图4为例,假设7个样本数据构成的集合为 {-3, -2, 0, 2, 2.5, 3, 4}。

如果h = 1,参考公式3,可用高斯核函数构造概率密度估计函数。
如图6所示,每个数据点给总的概率密度曲线估计贡献一条曲线。
每一条曲线和横轴的面积为1/7。
叠加得到的曲面和横轴围成图形的面积为1。
🌸

以鸢尾花数据为例

图7所示为利用statsmodels.api.nonparametric.KDEUnivariate()对象得到的概率密度估计曲线。
也可以通过它获得如图8所示累积概率密度估计曲线。
下一节将讲解带宽h如何影响概率密度估计曲线。
💻 Python代码
Bk5_Ch17_02.py 代码绘制图7和图8。
大家可以自行改变代码中带宽h。

🎯 17.2 关键要点

核函数
• 描述每个数据点
• 高斯核最常见
• 对称性K(x)=K(-x)
• 面积为1
带宽h
• 缩放系数
• 控制高矮胖瘦
• h小→细高
• h大→矮胖
KDE公式
• 叠加n个核函数
• 平均:除以n
• 总面积为1
• 平滑曲线
💡 核心洞察
• KDE本质:直方图的自然拓展,用核函数代替矩形
• 平移x-xᵢ:让核函数中心对准数据点
• 缩放1/h:控制核函数宽度,保持面积为1
• 叠加平均:每个核贡献1/n,总面积为1
• 公式2-6:构成KDE的完整数学基础
• 图6:7个数据点演示KDE叠加原理
✦
17.3

带宽:决定核函数高矮胖瘦

Bandwidth: Determining Kernel Shape

带宽h选取对概率密度估计函数至关重要。
h决定了每一个核函数的高矮胖瘦。

📏 h对高斯核函数形状的影响

图9所示为带宽h对高斯核函数形状影响。
h小
• 核函数细高
• 在数据点附近集中
• 影响范围窄
h大
• 核函数矮胖
• 影响范围广
• 更加平坦

📏 带宽:决定核函数高矮胖瘦

Bandwidth: Determining Kernel Shape

带宽 h

0.12.0

✓ h适中

核函数:平衡
• 平滑且保留细节
• 适当的密度估计
• 理想选择

显示选项

关键要点
• h小 → 核函数细高
• h大 → 核函数矮胖
• 总面积始终为1
• 需要平衡平滑度和细节

面积归一化

无论h的大小,合成得到的概率密度曲线与横轴包裹区域的面积始终保持为1。

图9. 带宽h对高斯核函数形状的影响

0-22h = 1.00h小→细高h大→矮胖
紫色粗线为当前h值,灰色细线为其他h值对比

图10. 核函数带宽对概率密度估计曲线的影响(鸢尾花萼片长度)

萼片长度 (cm)概率密度45678
h略大:较平滑但细节有所丢失

不同带宽对比

h = 0.1
过小:不平滑
h = 0.5
适中:平衡
h = 2.0
过大:丢失细节
💡

实践指南

过小的h:会让概率密度估计曲线不够平滑
• 出现噪声和不必要的波动
• 过拟合数据
太大的h:会让概率密度曲线过于平滑
• 大量有用信息被忽略
• 欠拟合数据
• 如鸢尾花花瓣的双峰分布会被平滑成单峰
图11和图12分别展示h=0.1、1时鸢尾花概率密度估计曲线。
核心要点:
  • 带宽h至关重要 — 决定核函数高矮胖瘦
  • h小 — 核函数细高,曲线不够平滑,过拟合
  • h大 — 核函数矮胖,曲线过度平滑,欠拟合
  • 需要平衡 — 在平滑度和细节保留之间取舍
  • 面积恒定 — 无论h大小,总面积始终为1
  • 实际应用 — 通常通过交叉验证等方法选择最优h
⚠️

过小的h

如图10所示,过小的h,会让概率密度估计曲线不够平滑。
问题:
• 曲线出现噪声和波动
• 对数据中的随机误差过于敏感
• 过拟合:过度拟合样本数据
• 泛化能力差
图11展示h=0.1时鸢尾花四个特征的概率密度估计曲线。
可以看到曲线有明显的锯齿状波动。
⚠️

太大的h

如图10所示,太大的h,会让概率密度曲线过于平滑。
问题:
• 大量有用信息被忽略
• 重要的分布特征(如双峰)被平滑掉
• 欠拟合:模型过于简单
• 无法捕捉数据的真实分布
图12展示h=1时鸢尾花四个特征的概率密度估计曲线。
花瓣长度和宽度的双峰特征被显著平滑。
📐

面积恒定原理

重要性质:
不管h的大小,合成得到的概率密度曲线与横轴包裹区域的面积始终保持为1。
这是因为每个核函数面积为1/n,叠加n个后总面积为1。
缩放系数1/h保证了即使改变带宽,单个核函数的面积仍为1。

图10:三种带宽效果对比

特征h = 0.5h = 1h = 2
核函数形状较细高适中矮胖
平滑度较低适中很高
细节保留较多平衡丢失
拟合状态可能过拟合适当可能欠拟合
适用场景数据量大一般场景粗略估计

🌸 鸢尾花数据示例

图11:h = 0.1
鸢尾花四个特征的概率密度函数曲线
• 曲线不够平滑
• 出现锯齿状波动
• 过度拟合数据点
图12:h = 1
鸢尾花四个特征的概率密度函数曲线
• 曲线较为平滑
• 但花瓣特征的双峰被平滑
• 丢失部分细节信息
🎯

如何选择带宽h?

常用方法:
• 经验法则:Scott's rule, Silverman's rule
• 交叉验证:通过验证集选择最优h
• 网格搜索:在一定范围内尝试多个h值
• 可视化检查:观察不同h下的KDE曲线
平衡原则:
在平滑度(减少噪声)和细节保留(捕捉真实分布)之间取得平衡。

🎯 17.3 关键要点

h过小
• 核函数细高
• 不够平滑
• 噪声波动
• 过拟合风险
h适中
• 形状平衡
• 平滑+细节
• 适当拟合
• 理想选择
h过大
• 核函数矮胖
• 过度平滑
• 丢失细节
• 欠拟合风险
💡 核心洞察
• 带宽h至关重要:直接影响KDE曲线质量
• 图9:展示h对单个核函数形状的影响
• 图10:对比h=0.5, 1, 2三种情况
• 图11和12:鸢尾花数据在h=0.1和h=1下的实际效果
• 面积恒定:无论h大小,总面积始终为1
• 实践建议:使用交叉验证或经验法则选择最优h
✦
17.4

核函数:8种常见核函数

8 Common Kernel Functions

总结来说,核函数需要满足两个重要条件:

📐 公式9:核函数的两个必要条件

1. 对称性
K(x) = K(-x)
核函数关于纵轴对称
2. 面积为1
∫₋∞⁺∞ K(x)dx = 1
核函数在全域的积分为1
用公式表达:
利用换元积分,可以证明:
∫ K(x)dx = h∫ K(x/h)dx = ∫ K(u)du = 1
这也解释了为什么带宽h的缩放不影响总面积。

🔧 核函数:8种常见核函数

8 Common Kernel Functions

选择核函数

当前核函数

名称:Gaussian
代码:gau
公式:
K(x) = (1/√(2π)) exp(-x²/2)
核函数要求(公式9)
1. 对称性
K(x) = K(-x)
2. 面积为1
∫K(x)dx = 1

核函数特点

• 无限支撑 • 最光滑 • 最常用

表1:核函数形状

0-11Gaussian
Gaussian核函数形状(面积为1)

图13:不同核函数的KDE效果(鸢尾花萼片长度)

萼片长度 (cm)概率密度45678Gaussian
使用Gaussian核函数,带宽h=0.5

表1:8种核函数形状对比

(gau) Gaussian
(epa) Epanechnikov
(uni) Uniform
(tri) Triangular
(biw) Biweight
(triw) Triweight
(cos) Cosine
(cos2) Cosine2

核函数特性对比

核函数支撑平滑度计算复杂度常用程度
● Gaussian无限★★★中★★★
● Epanechnikov[-1,1]★★低★★
● Uniform[-1,1]★极低★
● Triangular[-1,1]★★低★
● Biweight[-1,1]★★低★
● Triweight[-1,1]★★★低★
● Cosine[-1,1]★★中★
● Cosine2[-1,1]★★中★
核心要点:
  • 两个必要条件 — 对称性K(x)=K(-x),面积为1
  • Gaussian最常用 — 无限支撑,最光滑
  • Epanechnikov最优 — MSE最小,理论上最佳
  • 有限vs无限支撑 — Gaussian无限,其他7种有限
  • 实际影响有限 — 不同核函数结果相似,带宽h更重要
  • 选择建议 — 实践中Gaussian即可,计算方便

表1:8种常见核函数汇总

核函数代码函数公式支撑
GaussiangauK(x) = (1/√(2π))exp(-x²/2)(-∞,+∞)
EpanechnikovepaK(x) = (3/4)(1-x²), |x|≤1[-1,1]
UniformuniK(x) = 1/2, |x|≤1[-1,1]
TriangulartriK(x) = 1-|x|, |x|≤1[-1,1]
BiweightbiwK(x) = (15/16)(1-x²)², |x|≤1[-1,1]
TriweighttriwK(x) = (35/32)(1-x²)³, |x|≤1[-1,1]
CosinecosK(x) = (π/4)cos(πx/2), |x|≤1[-1,1]
Cosine2cos2K(x) = (1/2)(1+cos(2πx)), |x|≤1[-1,1]
📊

图13:八个不同核函数得到的不同的概率密度估计

表1总结8种满足以上两个条件的常用核函数。
图13所示为这8种不同核函数估计得到的鸢尾花花萼长度概率密度曲线。
通过交互组件可以直观看到:
• 不同核函数形状差异明显
• 但KDE结果相似
• 说明核函数选择的影响相对有限
• 带宽h的选择更为关键
💻 Python代码
Bk5_Ch17_03.py 代码绘制表1和图13。
也请大家学习使用sklearn.neighbors.KernelDensity()函数
获得概率密度估计曲线。

🎯 17.4 关键要点

必要条件
• 对称性:K(x)=K(-x)
• 面积为1:∫K(x)dx=1
• 这两个条件保证概率密度的有效性
8种核函数
• Gaussian:最常用,无限支撑
• Epanechnikov:理论最优
• 其他6种:各有特点
💡 核心洞察
• 核函数分类:有限支撑(7种)vs无限支撑(Gaussian)
• 表1:8种核函数的完整数学定义
• 图13:不同核函数在实际数据上的效果对比
• 实践结论:核函数选择影响相对较小,Gaussian是最常用选择
• 重要性排序:带宽h >> 核函数类型
• Epanechnikov:理论上MSE最小,但实际与Gaussian差异不大
🎯

如何选择核函数?

实践建议:
• 首选Gaussian:计算方便,效果好,最常用
• 追求效率:Epanechnikov理论最优,MSE最小
• 简单快速:Uniform或Triangular,计算量小
• 平滑要求高:Triweight,三次光滑
重要提示:
在大多数应用中,核函数的选择对结果影响不大。
相比之下,带宽h的选择要重要得多。
因此,实践中直接使用Gaussian核函数即可。
✦
17.5

二元KDE:概率密度曲面

Bivariate KDE: Probability Density Surface

二元,乃至多元KDE的原理和前文所述的一元KDE完全相同。

📐 公式10:多元KDE

对于n个多维样本数据点 {x(1), x(2), ..., x(n)},
如下多个核函数叠加、再平均便得到概率密度估计:
f̂(x) = (1/n)Σᵢ₌₁ⁿ K_H(x - xᵢ)
注意:
• 默认x和xi均为列向量
• xi起到平移作用
• 原理和一元KDE完全相同,只是从标量扩展到向量

🔔 高斯核函数(公式11)

高斯核函数KH(x)的定义为:
K_H(x) = det(H)^(-1/2) K(H^(-1/2)x)
带宽的形式为矩阵H,H为正定矩阵。

🌐 二元高斯核函数(公式12)

以二元高斯核函数为例,K(x)定义为:
K(x) = (1/(2πh²)) exp(-||x-xᵢ||²/(2h²))
IID假设:
• H = h²I(单位矩阵)
• 各维度独立同分布
• 简化计算
距离度量:
• ||x-xᵢ||²:欧氏距离平方
• 二维:(x₁-xᵢ₁)² + (x₂-xᵢ₂)²
• 对称分布

🌐 二元KDE:概率密度曲面

Bivariate KDE: Probability Density Surface

带宽 h

0.10.8

显示选项

数据信息

• 鸢尾花数据
• x₁: 萼片长度
• x₂: 萼片宽度
• 样本数: n = 150
公式10:二元KDE
f̂(x) = (1/n)Σᵢ K_H(x - xᵢ)
• x: 二维向量[x₁, x₂]
• H: 带宽矩阵
• K_H: 二元核函数

公式11-12:高斯核

K(x) = (1/(2πh²))exp(-r²/(2h²))
• r²: (x₁-xᵢ₁)² + (x₂-xᵢ₂)²
• IID假设:H = h²I

图16:鸢尾花花萼长度和宽度的KDE曲面等高线图

Sepal length, x₁ (cm)Sepal width, x₂ (cm)45678234Species:SetosaVersicolorVirginica
热力图+等高线展示二元KDE,带宽h=0.30
💡

图14:二元高斯KDE原理

图中,每个样本点都用一个IID二元高斯分布曲面描述。
这些曲面先叠加、再平均便获得二元高斯核KDE估计得到概率密度曲面。
原理完全相同:
• 一元KDE:n条曲线叠加
• 二元KDE:n个曲面叠加
• 多元KDE:n个超曲面叠加
• 数学公式:f̂(x) = (1/n)Σᵢ K_H(x - xᵢ)

图15:鸢尾花花萼长度和宽度的KDE曲面(3D视图)

📊
3D概率密度曲面
图15展示了真正的3D曲面视图,可以看到:
• 高度代表概率密度值
• 峰值对应数据集中区域
• 三个峰对应三个鸢尾花品种
• 平滑曲面展示分布的连续性
(上方等高线图是3D曲面的俯视图)
图15:3D曲面
• 立体视图
• 高度=概率密度
• 直观展示分布形状
• 适合演示和理解
图16:等高线图
• 平面投影
• 等高线=等密度线
• 便于精确读数
• 适合分析和计算
核心要点:
  • 原理相同 — 二元/多元KDE原理和一元KDE完全相同
  • 带宽矩阵 — 一元h标量 → 多元H矩阵(正定)
  • IID假设 — H = h²I,简化为各维度独立同分布
  • 叠加平均 — n个二元高斯曲面叠加后除以n
  • 可视化 — 3D曲面(图15)或2D等高线(图16)
  • 实际应用 — 分类、聚类、异常检测
💡

图14:二元高斯KDE原理

图14所示为高斯核二元KDE原理。
图中,每个样本点都用一个IID二元高斯分布曲面描述。
这些曲面先叠加、再平均便获得二元高斯核KDE估计得到概率密度曲面。
理解关键:
• 一元KDE:n条曲线 → 叠加 → 平均
• 二元KDE:n个曲面 → 叠加 → 平均
• 多元KDE:n个超曲面 → 叠加 → 平均
原理完全相同!

🌸 以鸢尾花数据为例

图15和图16所示为鸢尾花花萼长度和花萼宽度两个特征数据的KDE曲面。
图15:3D曲面视图
• 立体展示概率密度曲面
• 高度代表概率密度
• 峰值对应数据集中区域
• 直观理解分布形状
图16:等高线图
• 平面投影展示
• 等高线代表等密度线
• 便于精确读数
• 适合分析和计算
⚠️

sklearn.neighbors.KernelDensity()注意事项

sklearn.neighbors.KernelDensity()函数也可以用来概率密度估计。
注意:这个函数返回的是对数概率密度 ln(PDF)。
如需实际概率密度,需要对结果取指数:PDF = exp(ln(PDF))
💻 Python代码
Bk5_Ch17_04.py 代码绘制图15和图16。
Bk5_Ch17_05.py 用Seaborn绘制KDE曲面等高线。

🎯 实际应用

在实际应用中,概率密度估计可以用来:
数据分析
• 描述和模拟数据的分布特征
• 探索数据的内在结构
• 发现数据中的模式
数据挖掘
• 分类:基于密度的分类
• 聚类:发现数据簇
• 异常检测:识别低密度区域
模型选择
• 模型选择和评估
• 参数估计
• 模型比较
贝叶斯应用
• 贝叶斯分类中应用
• 后验概率估计
• 下面章节将详细介绍

🎯 17.5 关键要点

多元扩展
• 原理和一元KDE完全相同
• 从标量扩展到向量
• 从曲线扩展到曲面
• 数学公式统一
带宽矩阵
• 一元:h标量
• 多元:H矩阵(正定)
• IID假设:H = h²I
• 简化计算
💡 核心洞察
• 公式10:多元KDE统一公式
• 公式11-12:多元高斯核定义
• 图14:二元KDE原理(曲面叠加)
• 图15-16:鸢尾花数据3D曲面和等高线
• 非参数方法:不假设分布形式,灵活适用
• 务必掌握:高斯核密度估计在贝叶斯分类中的应用

📚 第17章总结

核心方法

直方图估计:最常用但不平滑
参数估计:平滑但可能丢失细节
核密度估计KDE:平滑且保留细节,本章重点

关键公式

• 公式2-3:KDE核心公式
• 公式4-6:高斯核性质
• 公式9:两个必要条件
• 公式10-12:多元KDE

重要结论

✓ 带宽h比核函数类型更重要
✓ Gaussian核最常用,计算方便
✓ 非参数方法,不假设分布形式
✓ 实际应用:分类、聚类、异常检测等
✓ 贝叶斯分类中将大量应用

本章内容到此结束

常见的概率密度估计方法包括核密度估计、直方图估计、参数估计等。
本章主要介绍的是核密度估计。核密度估计是一种非参数方法,
可以用来估计连续随机变量的概率密度函数。
请大家务必掌握高斯核密度估计,
我们会在贝叶斯分类中看到这个工具的应用。

🎯 频率派 → 贝叶斯派

🎊

本书有关频率学派的内容到此结束

前文反复提过,《统计至简》重贝叶斯学派,轻频率学派。
下面连续五章我们将看到贝叶斯定理在
分类、推断两类问题的应用。
频率学派(已完成)
• 第16章:统计推断
• 第17章:概率密度估计
• 参数固定但未知
• 概率=频率
贝叶斯学派(即将开始)
• 第18-22章:贝叶斯方法
• 参数是随机变量
• 先验→后验
• 本书重点!