核密度估计(KDE)(二)
Author: Rotch
Date: 2025-08-31
Update: 2025-09-04
1. 自适应带宽选择
在前文中,KDE 算法要求各样本点共用同一带宽,即认为各样本点的影响大小、影响范围是一样的. 但在实际生活中,这一假设并不总是成立.
以某一大型区域的便利店服务研究为例:在城市中,人口密集、各类设施丰富,便利店分布较为密集. 但每家便利店主要服务对象仅为周边一小片区域的居民,影响范围小;而在乡村中,人口相对分散,便利店数量较少,一家便利店往往要服务整个村子甚至邻近几个村落的居民,服务范围就大得多. 在这种情况下,位于高密度区域的样本点的影响范围应该更小;位于低密度区域的样本点的影响范围应该更大. 于是我们给出如下自适应修正模型:
对于某一初始带宽 h,计算其密度估计函数:
f^h(x)=n1i=1∑nh1K(hx−x(i)).
在此基础上,引入带宽修正公式:
hi=hf^h(x(i))F ,
其中 F=i=1∏nf\^h(x(i))1/n,最终得到修正后的密度估计函数:
f^(x)=n1i=1∑nhi1K(hix−x(i)).
对于其它问题,可运用此类思想对带宽进行自适应修正.
2. 多元 KDE 算法
2.1 多元 KDE 算法引入
基于一元 KDE 的基本原理,我们可以将 KDE 推广到 d (d∈N+) 元情况.
Def 2.1 多元核函数: 一个多元核函数 K:Rd→[0,+∞) 是一个实值函数,满足以下三条性质:
- 非负性 : K(u)≥0 对任意的 u∈Rd;
- 归一性 : ∫RdK(u)du=1;
- 对称性 : K(−u)=K(u) 对任意的 u∈Rd.
以下给出了常见的多元核函数及其公式:
| 核函数 |
d 元核公式 |
| d 元高斯核 |
K(u)=(2π)d/21exp(−21uTu) |
| d 元 Epanechnikov 核 |
K(u)={2Vdd+2(1−uTu),0,if ∣u∣<1otherwise |
| d 元均匀核 |
K(u)={Vd1,0,if ∣u∣<1otherwise |
其中 Vd=Γ(2d+1)πd/2 是 d 维单位球体积.
根据一元 KDE 的基本思想,我们很容易得到下述公式:
p(x)≈nhdVd1⋅i=1∑n1(h1∣x−x(i)∣≤1)=n1⋅i=1∑ndetH21⋅KH−21(x−x(i))=p^(x),
其中 H=h2Id, Id 是 d 阶单位矩阵, K(u)=Vd11(∥u∥2≤1) 是 d 元均匀核. 容易验证:
∫Rdp^(x)dx=n1i=1∑n∫RddetH21⋅KH−21(x−x(i))dx=1.
若将上式中的 K(x) 替换为其它核函数,得到的 p^(x) 仍为概率密度函数. 下面我们将对 H 进行进一步的讨论:
首先,样本的不同维度的数据规模不同,适用的带宽也不同,因此,我们可以对 H 进行扩展:
H=diag(h12,h22,...,hd2).
这样的 H 是十分容易参与计算的,其几何意义也十分明显:样本点的各维度彼此独立,各自享用自己的带宽. 如果各维度并不彼此独立,则可考虑使用样本的协方差矩阵构建带宽矩阵:
HCov=Σ+εI.
其中参数 ε>0 起微小扰动作用,避免协方差矩阵 Σ 半正定.
2.2 多元 KDE 算法
Algorithm: Multivariate Kernel Density Estimation 设 S=(x(1),x(2),...,x(n)) 是从总体中抽取的一组独立同分布(i.i.d.)样本数据, x(i)∈Rd, K(x) 是给定的 d 元核函数, H∈SPD(R,d) 为给定( d 阶实正定)带宽矩阵,则核密度估计给出的概率密度估计函数为:
f^H(x)=ndetH1/21i=1∑nK(H−1/2(x−x(i)))=n1i=1∑nKH(x−x(i)).
在这里,我们继续引入积核(Product Kernel)的概念:
Def 2.2 积核: 设 K1,K2,...,Kd 是 d 个一元核函数,定义多元核函数 K:Rd→[0,+∞) 满足:
K(u)=k=1∏dKk(uk),
其中 u=(u1,u2,...,ud)T∈Rd,则称 K 为基于 K1,K2,...,Kd 的积核.
显然, d 元 Gauss 核是 d 个一元 Gauss 核函数的积核. 使用积核的一个好处是其支持并行计算;此外,在需要调整带宽、增加估计点时,积核方法的计算复用性显著高于非积核方法.
我们接下来讨论多元 KDE 算法的渐进性质,将原来的三条假设推广至多元:
-
假设 f∈C2(Rd) 且其二阶导数 ∇2f 平方可积,记为 R(∇2f)=∫Rd∇2f(x)2dx;
-
假设核函数 K 二阶矩存在且平方可积,分别记为 μ2(K)=∫RduuTK(u)du, R(K)=∫RdK2(u)du;
-
记 H=Hn,假设 n→∞ 且 H→0+ 时满足 ndetH1/2→+∞.
利用多元 Taylor 定理及一元 KDE 渐进性质的分析思路,我们可以得到(不做证明):
Biasf\^(x)Varf\^(x)=21μ2(K)vec(H\[f(x))]T⋅vec(H)+o(∣vec(H)∣),=ndetH1/2R(K)f(x)+ondetH1/21.
其中 vec(⋅) 表示将目标 n×m 矩阵转换为 nm 阶向量, H(⋅) 表示 Hessian 矩阵.
2.3 带宽选择
带宽选择的基本方法已经在前文叙述,以下仅给出多元情况下的带宽选择公式. 首先我们推广 MSE 和 MISE:
MSEf\^(x)MISEf\^(x)=E(f\^(x)−f(x))2,=∫RdMSEf\^(x)dx
它们的渐进形式为:
AMSEf\^(x)AMISEf\^(x)=ndetH1/2R(K)f(x)+41μ22(K)tr2(HHf(x)),=∫RAMSE(x)dx=41μ22(K)Rtr(HH\[f(x))]+ndetH1/2R(K).
其中用到了一个定理:
Thm 2.4: A,B∈Rn×n, vec(A)Tvec(B)=tr(ATB).
Proof: 设 A=aij, B=bij, C=ATB=cij有:
cij=k=1∑nakibkj.
于是:
trC=i=1∑ncii=i=1∑nk=1∑nakibki=vec(A)Tvec(B).□
于是,渐进意义下的最优带宽为:
Hasym−opt=argH∈SPD(R,d)minAMISEf\^(x)
与一元 KDE 不同,通过上式无法求出 Hasym−opt 的表达式. 但是特别地,若 H=h2Id,则:
R(tr(HHf(x)))=h4R(tr(Hf(x))
将 (29) 带入 (25),对 AMISEf\^(x) 关于 h 求导,得:
∇hAMISEf\^(x)=h3μ22(K)R(tr(Hf(x))−nhd+1dR(K).
令 ∇hAMISEf\^(x)=0,有:
hasym−opt=(μ22(K)R(tr(Hf(x))ndR(K))1/(d+4).
尽管 (34) 依赖于大量化简,但其揭示了一个重要的规律:当 d 增大时,最优带宽 hasym−opt 也会增大. 此外,我们发现 (34) 的计算也面临着和一元 KDE 同样的问题:起计算依赖于关于真实密度函数 f 的泛函. 我们首先采取和 Silverman 方法 一致的思想,用正态分布函数来近似 f,得到(不作具体计算):
HNS=(p+24)2/(p+4)n−2/(p+4)⋅Σ
在前文中,我们还提到了插入法. 对于多元 KDE,其插入法推导思路与一元 KDE 无异,但各阶段最优带宽 G 没有明确的公式,不适合实际计算,这里不再展开. 接下来我们讨论交叉验证法,交叉验证法可以很好地适应多元情况.
留一交叉验证法可以表述为:
LOOCV(H)HLOOCV=∫Rf^H2(x)dx−n2j=1∑nf^H,−j(x(j)),=argH∈SPD(R,d)minLOOCV(H).
有偏交叉验证法可以表述为:
R(∇2f) BCV(H)HBCV=R(∇2f^)−ndetH5/21R(∇2K),=41detH2μ22(K)R(∇2f) +ndetH1/2R(K),=argH∈SPD(R,d)minBCV(H).
2.4 多元 KDE 算法下的导数估计
设 f:Rd→R 是通过 KDE 算法生成的概率密度函数,我们想讨论其导数. 对于一阶和二阶导数,我们分别有:
∇f(x)∇2f(x)=Hf(x)=∂xk∂f(x)k=1,2,...,dT∈Rd,=∂xk∂xl∂2f(x)k,l=1,2,...,dT∈Rd×d.
需要指出的是, (29) 式是矩阵形式,显然不利于推广到高维,我们利用 Kronecker 积将其转换为向量形式:
∇⊗∇f(x)=∇(∂xk∂f(x))k=1,2,...,dT=\[∂xk∂xl∂2f(x)l=1,2,...,dT]k=1,2,...,dT∈Rd2.
我们将上述符号记为 ∇⊗2f(x). 一般地,我们给出 f(x) 的 r 阶导数:
∇⊗rf(x)=∂x1...∂x1∂rf(x),...,∂x1...∂xd∂rf(x),...,∂xd...∂xd∂rf(x)T∈Rdr.
Lem 2.3 多元 Taylor 定理: 设 f:Rp→R, x∈Rp。若 f∈CrB(x,δ),则对任意 ∣h∣<δ,有:
f(x+h)=s=0∑rs!1∇⊗sf(x)Th⊗s+o(∣h∣r).
证明略. 下面给出 f 的导数估计量:
∇^⊗rf=n1i=1∑n(∇⊗rKH)(x−x(i)).
其中:
∇⊗rKH=∣H∣−1/2(H−1/2)⊗r(∇⊗rK)(H−1/2(x−x(i))).
特别地,取 r=1 时,有:
∇^f(x)=ndetH1/2H−1/2i=1∑n(∇K)(H−1/2(x−x(i))).
若定义缩放一阶梯度核函数:
(∇K)H(u)=detH1/21(∇K)(H−1/2(u)),
则一阶导数估计量可写作:
∇^f(x)=n1H−1/2i=1∑n(∇K)H(x−x(i)).
对于 r>1 的讨论我们不多赘述,可根据实际情况进行讨论. 注意到 H−1/2 的存在,这说明了 (37) 的带宽选择不同于 (8) 的带宽选择,我们给出 r 阶导数下 HNS,r 的表达式(对 AMSE 的推广、Silverman 方法的应用不作叙述):
HNS,r=(p+2r+24)2/(p+2r+4)n−2/(p+2r+4)Σ.
当 r=0 时, HNS,0 退化为 HNS. 随着 r 的增大, HNS,r 也会增大,这表明若使用密度估计的最优带宽来估计导数的最优带宽,会导致导数估计出现"欠平滑"现象.
3. 线特征的核密度估计(KDE-Linear, KDE-L)
线特征(如道路、河流、轨迹、等高线等)是地理信息科学(Geographic Information Science, GIS)、计算机视觉、模式识别等领域中常见的空间数据类型. 与点特征的核密度估计(KDE)不同,线特征的核密度估计需考虑线的连续性、长度、方向等几何属性,核心是通过"核函数"将线特征的空间分布"平滑化",最终生成反映线特征空间集聚程度的密度表面,用于识别线特征的密集区域(如城市路网密集区)或稀疏区域.
在这种意义下,我们不再需要保障最终的密度估计函数 f^ 满足 ∫Rdf^(x)dx=1,而仅使用 f^(x) 的大小来判断 x 处的密度高低.
设 l 是一个线特征,为确定 l 的概率影响,我们可以采取采样点的方法. 作划分 T:t0,t1,t2,...,tn,其中 t0 是 l 的起点, tn 是 l 的终点, t0,t1,...,tn 依次位于 l 上, ti−1,ti 表示 ti−1 和 ti 点之间的线段, ∥T∥=i=1,2,...,nmax∣ti−1,ti∣. 任取 si∈ti−1,ti,考虑使用 S={s1,s2,...,sn} 来估计 l 的概率影响,对于任意点 x:
f^T(x)=nh1i=1∑nK(hx−si)=i=1∑nnh1K(hx−si)≈i=1∑n∣t0,tn∣∣ti−1,ti∣⋅h1K(hx−si).
其中 K(⋅) 是选定核函数. 随着划分 T 越来越精细, f^T(x) 越接近真实的密度影响:
f^∗(x)=∥T∥→0+limf^T(x)=h∣t0,tn∣1∫lK(hx−s)ds.
忽略掉系数 (∣t0,tn∣)−1,得到:
f^(x)=h1∫lK(hx−s)ds.
值得指出的是,忽略掉系数 (∣t0,tn∣)−1 是有意义的:一方面,由于不需要进行归一化,忽略该系数不会产生错误;另一方面,由于不同线特征的长度可能不同,若保留该系数,则较长的线特征产生的影响更广,导致其影响强度降低,使得不同线特征之间影响不匹配.
对于带宽 h 的选择,经验法(即:前文所提的直观法)是尤为重要的. 这是因为此类问题通常关注可视化的结果,得到如道路路网密度图等图像,因此视觉上的最优性是选取带宽的第一要素;对于部分问题,还要兼顾其计算复杂性和精度. 此外,自适应的带宽选择方法也会被使用.
4. 网络核密度估计(Network KDE, NKDE)
4.1 网络密度核估计算法
网络核密度估计是传统核密度估计在网络空间中的拓展,核心是解决"空间点事件在网络结构(如道路、河流、管线等线性网络)上的密度分布估计"问题,而非传统 KDE 针对的二维/三维欧氏空间.
在现实场景中,许多事件(如交通事故、店铺分布、犯罪案件)的发生和扩散严格依赖于网络(例如交通事故仅会沿道路分布,而非在道路外的区域),传统 KDE 直接用欧氏距离计算密度会忽略网络拓扑结构(如道路的连通性、弯曲度),导致估计结果失真;而 NKDE 通过将 "欧氏距离" 替换为 "网络距离",并结合网络拓扑特性调整核函数,实现对网络上点事件密度的精准刻画. 同样地,网络和密度估计也不需要进行归一化.
设 G=(V,E) 是有向连通图,其中 V 是顶点集, E 是边集. 我们用 d+(v) 表示顶点 v 的出度, out(v) 表示离开顶点 v 的边的集合. 显然满足: ∣out(v)∣=d+(v).
下面,我们来定义网络:记 N=(G,ω) 称为一个网络 ,其中 G=(V,E) 是有向连通图, ω 是定义在 E 上的函数,用于指明 E 中边 e 的权重(对应现实意义中的:道路权重、河流流量、管道大小等). 称 x∈⋃E 为 N 中的点,对于 N 中的任一点 x1,x2,记 x1 到 x2 的最短路径长度为 dm(x1,x2),经过的顶点的全体构成的集合为 Vm(x1,x2).
设 S=(x(1),x(2),...,x(n)) 是 N 中的样本, K 是取定一元核函数. 对于任意样本点 x(i),不妨设 x(i)∈ei,对于 ei 上任意点 x, x(i) 在 x 处的影响为:
fi(x)=Kh(dm(x(i),x)),x∈ei.
此时的影响衰减函数即为一元 KDE 的影响衰减函数. 下面考虑 x(i) 对位于其它边上的点的影响:设 ej 的起点通过顶点 v 连接到 ei, x∈ej,则可以给出 x(i) 在 x 处的影响:
fi(x)=d+(v)1Kh(dm(x(i),x)),x∈ej.
其直观的实际意义是: x(j) 的影响随着 x 移动到 ej 的终点 v 处而发生了分裂,平均分为 d+ 份,沿着 out(v) 中的每条边继续延申. 如果考虑到 ω 的作用(即:影响的分裂不是均分,而是依权重分裂),则有:
fi(x)=e∈out(v)∑ω(e)ω(ej)Kh(dm(x(i),x)),x∈ej.
据此,对于一般 N 中的点 x, x(i) 对 x 的影响为:
fi(x)=v∈Vm(x(i),x)∏ e∈out(v)∑ω(e)ω(ev) Kh(dm(x(i),x)),x∈⋃E.
(说明:上式实际表示的是 x(i) 对其下游点的影响,若要表示对上游点的影响,只需将 Vm(x(i),x) 改为 Vm(x,x(i)),下同)
其中 ev 表示从 x(i) 到 x 的最短路径中以 v (v∈Vm(x(i),x)) 为起点的边. 尽管这一式子十分复杂,在实际应用中(无论是选取有紧支集的核函数还是 Gauss 核函数),只需考虑带宽范围内的点即可.
最后,基于全部的样本,我们可以给出 N 上的样本密度估计函数:
f(x)=n1i=1∑nfi(x).
4.2 基于线特征的网络核密度估计算法
在某些应用网络密度核估计算法的场景中,样本点不再是点特征,而是线特征,如:出租车的载客点分布(说明:实际应用中,无法获取出租车载客点的实际位置,而是通过连续采样,粗略地认为载客点位于某两采样点间. 而这两个采样点间的道路即为一个线特征). 下面我们将 NKDE 推广至线特征:
先给出线性事件 的定义:记 l=(s,t,p),其中 s∈es, t∈et, ∃es,ep∈E, p 是线性事件的其它额外信息(如起止时间、ID 编号等),不在数学讨论范围中.
设 Slinear=(l(1),l(2),...,l(n)) 是网络 N 中的线特征样本,每个特征的原始影响衰减函数为:
forigin,i(x)=h1∫l(i)K(hdm(s,x))ds.
联合上述分析,得到受网络约束的影响衰减函数:
fi(x)=v∈Vm(s,x),s∈l(i)∏ e∈out(v)∑ω(e)ω(ev) forigin,i(x).
最后,基于全部的样本,我们可以给出 N 上的线特征样本密度估计函数:
f(x)=n1i=1∑nfi(x).
最后,我们指出本节所述仅是一种推广的思想,对于实际问题需要进行具体分析,调整式子,从而给出更优的解答. 例如,在前文所述出租车载客点分布的问题中,我们有时需要分别讨论道路两侧的载客点. 这就需要我们在求平均值时只考虑"同向"线性事件的影响,而忽略"反向"线性事件的影响.