核密度估计(KDE)
Author: Rotch
Date: 2025-08-28
1. 算法简介
1.1 核密度估计算法介绍
设 S=(x(1),x(2),...,x(n)) 是从总体中抽取的一组独立同分布(i.i.d.)样本数据,在统计分析中,我们通常需要通过这组有限样本,推断出总体的概率分布特征,而核密度估计正是实现这一目标的非参数方法.
1.2 核密度估计算法基本思路
核密度估计的核心思想是:每个样本点都会对其周围区域的概率密度产生一定的 "影响",将所有样本点的贡献叠加起来,就能得到整个数据空间的概率密度分布,具体可拆解为以下两个步骤:
-
为每个样本点分配一个"影响衰减函数":它用于描述单个样本点对周围区域密度的"影响范围"和"影响强度". 距离样本点越近的位置受到的影响越强,函数值越大;反之受到的影响越弱,函数值越小.
-
叠加各样本的"影响衰减函数":将每个样本点对应的缩放核函数在整个数据空间中进行叠加,叠加后的结果就是核密度估计得到的总体概率密度函数.
上述"影响衰减函数"通常用核函数来定义,因此本算法称为"核密度估计". 从直观上理解,核密度估计相当于用无数个 "小的概率密度峰"(每个样本点对应的核函数)共同构建出一个 "整体的概率密度山",这个 "山" 的形状完全由样本点的分布和核函数的特性决定,既能避免参数估计对分布假设的依赖,又能有效平滑数据中的噪声.
2. 核函数
2.1 核函数的定义
在介绍核密度估计前我们先引入对核函数的介绍.
Def 2.1 核函数: 一个核函数 K:R→[0,+∞) 是一个实值函数,满足以下三条性质:
- 非负性 : K(u)≥0 对任意的 u∈R;
- 归一性 : ∫RK(u)du=1;
- 对称性 : K(−u)=K(u) 对任意的 u∈R.
非负性确保核函数对周围区域的密度贡献是正向的;归一性保证单个样本点对整体密度的总贡献为 1;对称性则确保样本点对其左侧、右侧区域的密度贡献对称,避免引入方向偏差.
以下给出了常见的核函数及其公式:
| 核函数 |
公式 |
| 高斯核(Gaussian) |
K(u)=2π 1exp(−2u2) |
| Epanechnikov 核 |
K(u)={43(1−u2),0,if ∣u∣<1otherwise |
| 均匀核(Uniform / Rectangular) |
K(u)={21,0,if ∣u∣<1otherwise |
| 三角核(Triangular) |
K(u)={1−∣u∣,0,if ∣u∣<1otherwise |
| 双权核(Biweight / Quartic) |
K(u)={1615(1−u2)2,0,if ∣u∣<1otherwise |
| 三权核(Triweight) |
K(u)={3235(1−u2)3,0,if ∣u∣<1otherwise |
2.2 缩放核函数的定义与应用
在上述核函数中存在带宽的概念. 以 Epanechnikov 核为例,其默认带宽 (bandwidth)为 h=1,即对 ∣u∣<1 的区域产生影响,对 ∣u∣≥1 的区域不产生影响. 这在实际应用中会产生"尺度不匹配"的问题,即样本的分布范围可能与带宽不符.
例如:某身高样本的相邻间隔约为 5(单位:厘米,下同),而 Epanechnikov 核函数的带宽默认为 1,导致核函数的影响范围无法覆盖相邻样本,进而使密度曲线"断裂";为解决这一问题,我们可以缩放带宽至 h=5,将核函数影响范围扩展到 ±5,从而有效衔接相邻样本的贡献.
Def 2.2 缩放核函数: 设 K:R→[0,+∞) 是一给定的核函数,对带宽 h>0,定义其缩放核函数:
Kh(u)=h1K(hu).
显然, ∫RKh(u)du=h1∫RK(hu)du=1,即缩放后的核函数不影响核函数的基本性质.
3. 核密度估计算法
3.1 从直方图估计到核密度估计
对于该类问题,最值观的解法是"直方图法". 例如,设有 n 个 1 维样本点 x(1),x(2),...,x(n), x(i)∈a,b. 作 a,b 的等距分划 T:a=a0<a1<a2<⋯<an=b, ai=a0+ni, ∥T∥=ak−ak−1=nb−a. 则可以估计密度函数:
p^(x)=n∥T∥1i=1∑n1(x(i)∈[ak−1,ak)).
显然,该方法存在以下缺陷:
- 区间的位置和宽度会严重影响估计结果 :例如,改变区间的端点或改变分划 T 都会对结果产生影响;
- 密度函数不连续 : p^(x) 不连续,无法反映数据分布的平滑性;
- 难以推广到高维空间 :当数据维度增加时,区间数量会呈指数级增长;且大多数区间内无样本点,致使其密度估计为 0.
核密度估计正是为解决这些问题而提出的:它将直方图的 "区间贡献" 替换为 "样本点的核函数贡献",用连续的核函数替代离散的区间,从而实现平滑、连续的密度估计.
3.2 核密度估计算法推导
设总体的随机变量为 X,其概率分布函数为 F(x)=P(X≤x),概率密度函数为 p(x),则有:
p(x)=dxdF(x)=2hF(x+h)−F(x−h)+ο(h)=2hP(x−h<X≤x+h)+ο(h). (h→0+)
根据大数定律,当样本空间足够大时,可以用频率近似概率,得到:
P(x−h<X≤x+h)≈n1⋅i=1∑n1(h∣x−x(i)∣≤1)
将 (4) 带入 (3),得:
p(x)≈2nh1⋅i=1∑n1(h∣x−x(i)∣≤1)=n1⋅i=1∑nh1⋅K(hx−x(i)),
其中 K(u)=211(∣u∣≤1),即:均匀核函数. 下面我们验证 p(x) 是概率密度函数,事实上:
∫Rp(x)dx=n1i=1∑n∫Rh1K(hx−x(i))dx=1.
若将上式中的 K(x) 替换为其它核函数,得到的 p(x) 仍为概率密度函数.
3.3 核密度估计算法
Algorithm: Kernel Density Estimation 设 (x(1),x(2),...,x(n)) 是一组给定的独立同分布的简单随机样本, K(x) 是给定的核函数, h>0 为给定带宽,则核密度估计给出的概率密度估计函数为:
p^(x)=nh1i=1∑nK(hx−x(i))=n1i=1∑nKh(x−x(i)).
其中核函数 K(x) 即为样本点的"影响衰减函数",不同样本点的影响衰减函数彼此相同. 通过选取不同的核函数和带宽,可以改变样本点的影响衰减效应,从而改变概率密度估计. 本文剩余内容将介绍如何选取合适的核函数与带宽.
4. 带宽的选择
4.1 评价指标
要选取合适的带宽,首先要给出带宽的评价指标. 我们发现当带宽 h 增大时,影响衰减函数图像越"扁"、曲线越平滑,此时方差减小、偏差增大;反之当带宽 h 减小时,影响衰减函数图像越"尖"、曲线越陡峭,此时方差增大、偏差减小. 因此,要评价带宽,必须给出对方差和偏差的综合评价指标.
Def 4.1 均方误差: 函数 MSE(f^(x))=E(f\^(x)−f(x))2 称为均方误差(Mean Squared Error).
Prop 4.2: MSE(f^(x))=Var(f^(x))+Bias2(f^(x)).
Proof: 易知 Ef\^(x)−E(f\^(x))=0,则有:
MSE(f^(x))=E(f\^(x)−f(x))2=E\[(f\^(x)−E\[f\^(x))+(Ef\^(x)−f(x))]2]=E(f\^(x)−E\[f\^(x))2]+2E(f\^(x)−E\[f\^(x))(Ef\^(x)−f(x))]+E(E\[f\^(x)−f(x))2]=Var(f^(x))+2(Ef\^(x)−f(x))Ef\^(x)−E\[f\^(x)]+(Ef\^(x)−f(x))2=Var(f^(x))+Bias2(f^(x)).□
Def 4.3 均方积分误差: 积分值 MISE(f^(x))=∫RMSE(f^(x))dx 称为均方积分误差(Mean Integrated Squared Error).
最优带宽 hopt 理论上是使均方积分误差最小的带宽,即:
hopt=arghminMISE(f^(x))
4.2 Silverman 方法
Silverman 方法是计算最优带宽的一种简单方法,适用于数据整体近似正态分布的情况,具体公式如下:
hopt=C⋅σ⋅n−1/5.
其中 C 是依赖于核函数的常数; σ 是数据的标准差; n 是样本量.
Silverman 方法的基本思想是通过渐进均方积分误差 代替均方积分误差,进而得到最优带宽. 首先计算 E(f^(x)):
E(f^(x))=Enh1i=1∑nK(hx−x(i))=nh1i=1∑nEK(hx−x(i))=h1∫RK(hx−t)f(t)dt===u=hx−t∫RK(u)f(x−hu)du.
假设真实分布函数 f(x) 二阶可导,对 f(x−hu) 作二阶 Taylor 展开,得:
f(x−hu)=f(x)−huf′(x)+21(hu)2f′′(x)+ο(h2).
将 (12) 带入 (11) 得:
E(f^(x))=∫RK(u)f(x)−huf′(x)+21(hu)2f′′(x)+ο(h2)du=f(x)∫RK(u)du−hf′(x)∫RuK(u)du+21h2f′′(x)∫Ru2K(u)du+ο(h2)=f(x)+21h2f′′(x)μ2(K)+ο(h2).
上式中最后一个等号用到了核函数的归一性和对称性,其中 μ2(K)=∫Ru2K(u)du 是核函数 K 的二阶矩 . 接下来计算 Bias(f^(x)) 渐进等式:
Bias(f^(x))=E(f^(x))−f(x)=21h2f′′(x)μ2(K)+ο(h2).Bias2(f^(x))=41h4f′′(x)2μ22(K)+ο(h4).
再计算 Var(f^(x)) 的渐进等式:
Var(f^(x))=nh21(EK2(hx−x(i))−E2K(hx−x(i)))=nh21h∫RK2(u)f(x−hu)du−(h∫RK(u)f(x−hu)du)2.
这里只对 f(x−hu) Taylor 展开至一阶:
f(x−hu)=f(x)+ο(1).
将 (17) 带入 (16),得:
Var(f^(x))=nh21(hf(x)∫RK2(u)du+ο(h)−h2f2(x)−ο(h2))=nhf(x)R(K)+ο(nh1).
上式中最后一个等号直接将 h2f2(x) 视作 ο(h),其中 R(K)=∫RK2(u)du 是核函数 K 的平方积分 . 于是得到均方误差的渐进形式,即渐进均方误差(Asymptotic MSE):
AMSE(f^(x))=41h4f′′(x)2μ22(K)+nhf(x)R(K).
进而有渐进均方积分误差(Asymptotic MISE):
AMISE(f^(x))=∫RAMSE(x)dx=41h4μ22(K)J(f)+nhR(K).
其中 J(f)=∫Rf′′(x)2dx 是密度函数的二阶导数平方积分 . 对 AMISE(f^(x)) 关于 h 求导,得:
dhdAMISE(f^(x))=h3μ22(K)J(f)−nh2R(K).
令 dhdAMISE(f^(x))=0,有:
hopt=5μ22(K)J(f)R(K)⋅n1 .
假设样本近似服从正态分布 N(μ,σ2),此时可用正态分布密度函数替换 f. 令 f(x)=2π σ1exp(−2σ2(x−μ)2),计算其二阶导数:
f′′(x)=f(x)⋅(σ4(x−μ)2−σ21).
计算 J(f):
J(f)=∫Rf′′(x)2dx=2πσ101∫R(x−μ)4e−σ2(x−μ)2dx−2σ2∫R(x−μ)2e−σ2(x−μ)2dx+σ4∫Re−σ2(x−μ)2dx=2πσ10143π σ5−2⋅2π σ5+π σ5=8π σ53.
记 C=53μ22(K)8π R(K) ,于是有:
hopt=C⋅σ⋅n−1/5.
若选择 Gauss 核,则 CG≈1.06;若选择 Epanechnikov 核,则 CE≈2.34;若选择均匀核,则 CU≈1/36. 具体计算过程略.
4.3 留一交叉验证法(Leave-One-Out CV, LOO-CV)
留一交叉验证法同样使用 MISE 作为最优带宽的选择标准. 不同的是,留一交叉验证法构建了 LOOCV 函数,
首先,回顾 MISE 的公式:
MISE(f^(x))=∫RE(f\^(x)−f(x))2dx=E∫Rf\^2(x)dx−2E∫Rf\^(x)f(x)dx+∫Rf2(x)dx.
其中 ∫Rf2(x)dx 与 h 无关. 因此最小化 MISE 等价于最小化 E∫Rf\^2(x)dx−2E∫Rf\^(x)f(x)dx. 由于 f(x) 未知,无法直接求解. 下面采用 Monte-Carlo 算法的思想,对其进行近似.
对于每个 j=1,2,...,n,作训练集 S−j=S∖{x(j)},利用 S−j 作函数 f^h,−j(x):
f^h,−j(x)=(n−1)h1i=1,i=j∑nK(hx−x(i)).
显然有:
∫Rf^(x)f(x)dx≈n1j=1∑nf^h,−j(x(j))
定义 LOOCV 函数:
LOOCV(h)=∫Rf^2(x)dx−n2j=1∑nf^h,−j(x(j)).
记常数 C=∫Rf2(x)dx,有:
ELOOCV(h)≈MISE(f^(x))+C
对于固定带宽,当样本量足够大时,成立:
LOOCV(h)p ELOOCV(h)
因此最小化 LOOCV(h) 等价于最小化 MISE(f^(x)). 即:
hLOOCV=arghminLOOCV(h).
下面补充 LOOCV 中 ∫Rf^2(x)dx 的计算方法:
∫Rf^h(x)2dx=n2h21i=1∑nj=1∑n∫RK(hx−x(i))K(hx−x(j))dx===u=hx−x(i)n2h21i=1∑nj=1∑n∫RK(u)K(u+hx(i)−x(j))hdu.=n2h1i=1∑nj=1∑n(K∗K)(hx(i)−x(j)).
例如对于 Gauss 核,可直接利用其卷积公式 (KG∗KG)(t)=2π 1e−t2/4 快速计算.
4.4 直观法
直观法是核密度估计中带宽选择的 "经验驱动型方法",核心思路是通过可视化密度曲线形态 和主观判断平滑性与细节的平衡选择带宽,无需复杂的数学推导或迭代计算,适用于对估计精度要求不高、数据结构简单或需快速探索的场景.
直观法一般给出一系列可选择的带宽 H={hk∣k=1,2,...,m},生成多组密度函数,进而选取最优带宽(此处的最优指最适合展示或计算的带宽,非理论最优带宽). 例如,在处理小样本问题过程中,Silverman 方法和 LOO-CV 法都有较大误差. 此时可以使用直观法,确定较为合适的带宽. 此外,在数据分析初期,也可通过直观法生成多组带宽的密度曲线,辅助分析数据分布趋势.
5. 核函数的选择
5.1 Epanechnikov 核:理论最优核
在讨论最优核之前,我们先对核函数补充两个限制:
- 要求任意核函数 K 必须有紧支集 ,即 supp(K)=K−1(R∖{0}) 有界,不妨设 supp(K)=−1,1.
- 核函数连续.
不符合上述两个限制的核包含 Gauss 核及均匀核,我们将在后面进行讨论. 而在选择最优带宽下,满足上述两个限制的最优核函数是 Epanechnikov 核. 我们将继续在最小化 AMISE 下讨论.
重新回顾 Silverman 方法中引入的 AMISE 及 hopt:
AMISE(f^(x))hopt=41h4μ22(K)J(f)+nhR(K),=5μ22(K)J(f)R(K)⋅n1 .
将 (35) 带入 (34),得:
AMISE(f^(x))=45(R4(K)⋅μ22(K)⋅J(f)⋅n−4)1/5.
上式表明在最优化带宽下最小化 AMISE 等价于最小化 R2(K)μ2(K). 接下来我们使用变分法求解.
由于核函数 K 具有紧支集,故对 K 的各种积分的界限都可以改为 −1,1,仍记为原符号. 设 μ2(K)=A,在 μ2(K)=A 及 ∫−1,1K(u)du 的约束下,最小化 R(K),可以建立 Lagrange 函数:
L(K,λ1,λ2)=∫−1,1K2(u)du+λ1(1−∫−1,1K(u)du)+λ2(A−∫−1,1u2K(u)du).
对 L 关于 K 求变分:
δK(u)δL=2K(u)−λ1−λ2u2.
令其泛函导数为 0,解得:
K(u)=21λ1+21λ2u2.
考虑到约束 K(−1)=K(1)=0,得:
λ1=−λ2.
再考虑到 K 的归一性,有:
∫−1,1K(u)du=2λ1∫−1,1(1−u2)du=1,⟹λ1=23, K(u)=43(1−u2).
上式中 K(u) 即为 Epanechnikov 核.
5.2 Gauss 核:实践最优核
Gauss 核因适配多数实践场景需求,被广泛视为'实践最优核".
首先我们讨论 Gauss 核的有效区域. 虽然 Gauss 核不具有紧支集,但是对于 h>0:
- 当 ∣x∣>3h 时, exp(−2h2x2)<exp(−29)≈0.011,贡献已不足 1%;
- 当 ∣x∣>5h 时, exp(−2h2x2)<exp(−225)≈3×10−6,贡献几乎可忽略.
即:Gauss 核的实际有效区域是 −5h,5h,在实际计算中完全可将有效区域外样本的权重视为 0,计算效率与紧支集核几乎无差异. Gauss 核的广泛应用还离不开以下三个个关键特质:
- 无线光滑性 : KG∈C∞(R),其生成的密度函数 f^ 也继承了这一优良数学性质,能完美匹配真实密度的光滑特性. 而其它核(如:Epanechnikov 核)在需要高阶导数条件下(如:峰值分析、梯度分析)表现不佳.
- 抗干扰性:由于 Gauss 核的权重是连续平滑的,且对远离待估计点的 "异常值样本" 赋予极低的权重,因此在数据存在少量噪声或异常值时,Gauss 核的密度估计结果不易被干扰. 而其它核若恰好将异常值纳入支集内,会直接影响局部密度估计,抗干扰性相对较弱.
- 高维稳定性 :高维数据中,"距离" 的定义会因维度灾难导致样本分布稀疏,紧支集核可能因支集内样本过少而无法有效估计密度(甚至支集内无样本,导致估计值为 0). 而 Gauss 核的指数衰减特性能通过带宽调整,灵活适配高维数据的稀疏性------即使局部样本少,也能通过平滑的权重分配维持密度估计的连续性,避免出现 "零密度区域" 的不合理结果.
此外,在其它分析中,Gauss 核还具有严格正定性等优良性质,是核分析中的常用函数.
5.3 均匀核
均匀核既非理论最优核,也没有 Gauss 核的优良数学性质,反而缺点重重. 但是均匀核在特定情况下有其作用. 例如,在认为"某点周围 K 个样本的类别完全同等重要"时,可以使用均匀核. 此外,在一些低计算成本场景下(如:嵌入式开发、实时数据处理),均匀核因其计算简单而受青睐.
总而言之,不同核有其各自的优缺点,实际应用中要根据应用场景的特点,选择合适的核函数.