核密度估计(KDE)(二)

221 阅读7分钟

核密度估计(KDE)(二)

Author: Rotch
Date: 2025-08-31
Update: 2025-09-04

1. 自适应带宽选择

在前文中,KDE 算法要求各样本点共用同一带宽,即认为各样本点的影响大小、影响范围是一样的. 但在实际生活中,这一假设并不总是成立.

以某一大型区域的便利店服务研究为例:在城市中,人口密集、各类设施丰富,便利店分布较为密集. 但每家便利店主要服务对象仅为周边一小片区域的居民,影响范围小;而在乡村中,人口相对分散,便利店数量较少,一家便利店往往要服务整个村子甚至邻近几个村落的居民,服务范围就大得多. 在这种情况下,位于高密度区域的样本点的影响范围应该更小;位于低密度区域的样本点的影响范围应该更大. 于是我们给出如下自适应修正模型:

对于某一初始带宽 hh,计算其密度估计函数:

f^h(x)=1ni=1n1hK(xx(i)h).\begin{equation} \hat{f}_h(x) = \frac{1}{n} \sum\limits_{i = 1}^{n} \frac{1}{h} K \left( \frac{x - x^{(i)}}{h} \right). \end{equation}

在此基础上,引入带宽修正公式:

hi=hFf^h(x(i)),\begin{equation} h_i = h \sqrt{\frac{F}{\hat{f}_h(x^{(i)})}}, \end{equation}

其中 F=[i=1nf^h(x(i))]1/nF = \left[ \prod\limits_{i = 1}^{n} \hat{f}_h \left( x^{(i)} \right) \right]^{1 / n},最终得到修正后的密度估计函数:

f^(x)=1ni=1n1hiK(xx(i)hi).\begin{equation} \hat{f}(x) = \frac{1}{n} \sum\limits_{i = 1}^{n} \frac{1}{h_i} K \left( \frac{x - x^{(i)}}{h_i} \right). \end{equation}

对于其它问题,可运用此类思想对带宽进行自适应修正.

2. 多元 KDE 算法

2.1 多元 KDE 算法引入

基于一元 KDE 的基本原理,我们可以将 KDE 推广到 d (dN+)d \space (d \in \mathbb{N}_+) 元情况.

Def 2.1 多元核函数: \color{blue}{\textbf{Def 2.1 多元核函数: }} 一个多元核函数 K:Rd[0,+)K: \mathbb{R}^d \to [0, +\infty) 是一个实值函数,满足以下三条性质:

  1. 非负性K(u)0K(\boldsymbol{u}) \geq 0 对任意的 uRd\boldsymbol{u} \in \mathbb{R}^d
  2. 归一性RdK(u)du=1\int_{\mathbb{R}^d} K(\boldsymbol{u}) \mathrm{d}\boldsymbol{u} = 1
  3. 对称性K(u)=K(u)K(-\boldsymbol{u}) = K(\boldsymbol{u}) 对任意的 uRd\boldsymbol{u} \in \mathbb{R}^d.

以下给出了常见的多元核函数及其公式:

核函数dd 元核公式
dd 元高斯核K(u)=1(2π)d/2exp(12uTu)K(\boldsymbol{u}) = \frac{1}{(2 \pi)^{d / 2}} \exp(-\frac{1}{2} \boldsymbol{u}^\mathrm{T}\boldsymbol{u})
dd 元 Epanechnikov 核K(u)={d+22Vd(1uTu),if u<10,otherwiseK(\boldsymbol{u}) = \begin{cases} \frac{d + 2}{2 V_d}(1 - \boldsymbol{u}^\mathrm{T}\boldsymbol{u}), & \text{if } \vert \boldsymbol{u} \vert < 1 \\ 0, & \text{otherwise}\end{cases}
dd 元均匀核K(u)={1Vd,if u<10,otherwiseK(\boldsymbol{u}) = \begin{cases} \frac{1}{V_d}, & \text{if } \vert \boldsymbol{u} \vert < 1 \\ 0, & \text{otherwise}\end{cases}

其中 Vd=πd/2Γ(d2+1)V_d = \frac{\pi^{d/2}}{\Gamma(\frac{d}{2} + 1)}dd 维单位球体积.

根据一元 KDE 的基本思想,我们很容易得到下述公式:

p(x)1nhdVdi=1n1(1hxx(i)1)=1ni=1ndetH12K[H12(xx(i))]=p^(x),\begin{align} p(\boldsymbol{x}) &\approx \frac{1}{n h^d V_d} \cdot \sum\limits_{i = 1}^{n} \mathbb{1} \left( \frac{1}{h} \vert \boldsymbol{x} - \boldsymbol{x}^{(i)} \vert \leq 1 \right) \nonumber \\ &= \frac{1}{n} \cdot \sum\limits_{i = 1}^{n} \det \boldsymbol{H}^{\frac{1}{2}} \cdot K \left[ \boldsymbol{H}^{-\frac{1}{2}} \left(\boldsymbol{x} - \boldsymbol{x}^{(i)} \right) \right] = \hat{p}(\boldsymbol{x}), \end{align}

其中 H=h2Id\boldsymbol{H} = h^2 \boldsymbol{I}_dId\boldsymbol{I}_ddd 阶单位矩阵,K(u)=1Vd1(u21)K(\boldsymbol{u}) = \frac{1}{V_d} \mathbb{1} \left( \parallel \boldsymbol{u} \parallel_2 \leq 1 \right)dd 元均匀核. 容易验证:

Rdp^(x)dx=1ni=1nRddetH12K[H12(xx(i))]dx=1.\begin{equation} \int_\mathbb{R^d} \hat{p}(\boldsymbol{x}) \mathrm{d}\boldsymbol{x} = \frac{1}{n} \sum\limits_{i = 1}^{n} \int_\mathbb{R^d} \det \boldsymbol{H}^{\frac{1}{2}} \cdot K \left[ \boldsymbol{H}^{-\frac{1}{2}} \left(\boldsymbol{x} - \boldsymbol{x}^{(i)} \right) \right] \mathrm{d}\boldsymbol{x} = 1. \end{equation}

若将上式中的 K(x)K(x) 替换为其它核函数,得到的 p^(x)\hat{p}(\boldsymbol{x}) 仍为概率密度函数. 下面我们将对 H\boldsymbol{H} 进行进一步的讨论:

首先,样本的不同维度的数据规模不同,适用的带宽也不同,因此,我们可以对 H\boldsymbol{H} 进行扩展:

H=diag(h12,h22,,hd2).\begin{equation} \boldsymbol{H} = \mathrm{diag}(h_1^2, h_2^2, \dots, h_d^2). \end{equation}

这样的 H\boldsymbol{H} 是十分容易参与计算的,其几何意义也十分明显:样本点的各维度彼此独立,各自享用自己的带宽. 如果各维度并不彼此独立,则可考虑使用样本的协方差矩阵构建带宽矩阵:

HCov=Σ+εI.\begin{equation} \boldsymbol{H}_{\mathrm{Cov}} = \boldsymbol{\Sigma} + \varepsilon \boldsymbol{I}. \end{equation}

其中参数 ε>0\varepsilon > 0 起微小扰动作用,避免协方差矩阵 Σ\boldsymbol{\Sigma} 半正定.

2.2 多元 KDE 算法

Algorithm: Multivariate Kernel Density Estimation\color{blue}{\textbf{Algorithm: Multivariate Kernel Density Estimation}}S=(x(1),x(2),...,x(n))\mathcal{S} = (\boldsymbol{x}^{(1)}, \boldsymbol{x}^{(2)}, ..., \boldsymbol{x}^{(n)}) 是从总体中抽取的一组独立同分布(i.i.d.)样本数据,x(i)Rd\boldsymbol{x}^{(i)} \in \mathbb{R}^dK(x)K(\boldsymbol{x}) 是给定的 dd 元核函数,HSPD(R,d)\boldsymbol{H} \in \mathrm{SPD}(\mathbb{R}, d) 为给定(dd 阶实正定)带宽矩阵,则核密度估计给出的概率密度估计函数为:

f^H(x)=1ndetH1/2i=1nK(H1/2(xx(i)))=1ni=1nKH(xx(i)).\begin{equation} \hat{f}_{\boldsymbol{H}}(\boldsymbol{x}) = \frac{1}{n \det \boldsymbol{H}^{1/2}} \sum\limits_{i = 1}^{n} K \left( \boldsymbol{H}^{-1/2} (\boldsymbol{x} - \boldsymbol{x}^{(i)}) \right) = \frac{1}{n} \sum\limits_{i = 1}^{n} K_{\boldsymbol{H}}(\boldsymbol{x} - \boldsymbol{x}^{(i)}). \end{equation}

在这里,我们继续引入积核(Product Kernel)的概念:

Def 2.2 积核: \color{blue}{\textbf{Def 2.2 积核: }}K1,K2,,KdK_1, K_2, \dots, K_ddd 个一元核函数,定义多元核函数 K:Rd[0,+)K: \mathbb{R}^d \to [0, +\infty) 满足:

K(u)=k=1dKk(uk),\begin{equation} K(\boldsymbol{u}) = \prod_{k=1}^{d} K_k(u_k), \end{equation}

其中 u=(u1,u2,,ud)TRd\boldsymbol{u} = (u_1, u_2, \dots, u_d)^\mathrm{T} \in \mathbb{R}^d,则称 KK 为基于 K1,K2,,KdK_1, K_2, \dots, K_d 的积核.

显然,dd 元 Gauss 核是 dd 个一元 Gauss 核函数的积核. 使用积核的一个好处是其支持并行计算;此外,在需要调整带宽、增加估计点时,积核方法的计算复用性显著高于非积核方法.

我们接下来讨论多元 KDE 算法的渐进性质,将原来的三条假设推广至多元:

  1. 假设 fC2(Rd)f \in C^2(\mathbb{R^d}) 且其二阶导数 2f\nabla^2f 平方可积,记为 R(2f)=Rd[2f(x)]2dxR(\nabla^2 f) = \int_{\mathbb{R}^d} \left [ \nabla^2f(\boldsymbol{x}) \right]^2 \mathrm{d}\boldsymbol{x}

  2. 假设核函数 KK 二阶矩存在且平方可积,分别记为μ2(K)=RduuTK(u)du\mu_2(K) = \int_{\mathbb{R}^d} \boldsymbol{u} \boldsymbol{u}^\mathrm{T} K(\boldsymbol{u}) \mathrm{d}\boldsymbol{u}R(K)=RdK2(u)duR(K) = \int_{\mathbb{R}^d} K^2(\boldsymbol{u}) \mathrm{d}\boldsymbol{u}

  3. H=Hn\boldsymbol{H} = \boldsymbol{H}_n,假设 nn \rightarrow \inftyH0+\boldsymbol{H} \rightarrow 0^+ 时满足 ndetH1/2+n\det \boldsymbol{H}^{1/2} \rightarrow +\infty.

利用多元 Taylor 定理及一元 KDE 渐进性质的分析思路,我们可以得到(不做证明):

Bias[f^(x)]=12μ2(K)[vec(H[f(x)])]Tvec(H)+o(vec(H)),Var[f^(x)]=R(K)ndetH1/2f(x)+o[1ndetH1/2].\begin{align} \mathrm{Bias}\left[\hat{f}(\boldsymbol{x})\right] &= \frac{1}{2} \mu_2(K) \left[ \mathrm{vec} \left (\mathrm{H} [f(\boldsymbol{x})] \right) \right]^\mathrm{T} \cdot \mathrm{vec}(\boldsymbol{H}) + o\left( \vert \mathrm{vec}(\boldsymbol{H}) \vert \right), \\ \mathrm{Var}\left[\hat{f}(\boldsymbol{x})\right] &= \frac{R(K)}{n \det\boldsymbol{H}^{1/2}}f(\boldsymbol{x}) + o\left[ \frac{1}{n\det\boldsymbol{H}^{1/2}} \right]. \end{align}

其中 vec()\mathrm{vec}(\cdot) 表示将目标 n×mn \times m 矩阵转换为 nmnm 阶向量,H()\mathrm{H}(\cdot) 表示 Hessian 矩阵.

2.3 带宽选择

带宽选择的基本方法已经在前文叙述,以下仅给出多元情况下的带宽选择公式. 首先我们推广 MSE\mathrm{MSE}MISE\mathrm{MISE}

MSE[f^(x)]=E[(f^(x)f(x))2],MISE[f^(x)]=RdMSE[f^(x)]dx\begin{align} \mathrm{MSE} \left[ \hat{f}(\boldsymbol{x}) \right] &= \mathbb{E}\left[ \left( \hat{f}(\boldsymbol{x}) - f(\boldsymbol{x}) \right)^2 \right], \\ \mathrm{MISE} \left[ \hat{f}(\boldsymbol{x}) \right] &= \int_{\mathbb{R}^d} \mathrm{MSE} \left[ \hat{f}(\boldsymbol{x}) \right] \mathrm{d}\boldsymbol{x} \end{align}

它们的渐进形式为:

AMSE[f^(x)]=R(K)ndetH1/2f(x)+14μ22(K)tr2(HH[f(x)]),AMISE[f^(x)]=RAMSE(x)dx=14μ22(K)R[tr(HH[f(x)])]+R(K)ndetH1/2.\begin{align} \mathrm{AMSE} \left[ \hat{f}(\boldsymbol{x}) \right] &= \frac{R(K)}{n \det\boldsymbol{H}^{1/2}}f(\boldsymbol{x}) + \frac{1}{4} \mu_2^2(K) \mathrm{tr}^2(\boldsymbol{H} \mathrm{H}[f(\boldsymbol{x})]), \\ \mathrm{AMISE} \left[ \hat{f}(\boldsymbol{x}) \right] &= \int_{\mathbb{R}} \mathrm{AMSE}(\boldsymbol{x}) \mathrm{d}\boldsymbol{x} = \frac{1}{4} \mu_2^2(K) R\left[ \mathrm{tr}(\boldsymbol{H} \mathrm{H}[f(\boldsymbol{x})]) \right] + \frac{R(K)}{n \det\boldsymbol{H}^{1/2}}. \end{align}

其中用到了一个定理:

Thm 2.4: \color{blue}{\textbf{Thm 2.4: }} A,BRn×nA, B \in \mathbb{R}^{n \times n}vec(A)Tvec(B)=tr(ATB)\mathrm{vec}(A)^{\mathrm{T}} \mathrm{vec}(B) = \mathrm{tr}\left( A^{\mathrm{T}} B \right).

Proof: \color{brown}{\textbf{Proof: }}A=[aij]A = \left[ a_{ij} \right]B=[bij]B = \left[ b_{ij} \right]C=ATB=[cij]C = A^\mathrm{T}B = \left[ c_{ij} \right]有:

cij=k=1nakibkj.\begin{equation} c_{ij} = \sum\limits_{k = 1}^{n} a_{ki} b_{kj}. \end{equation}

于是:

trC=i=1ncii=i=1nk=1nakibki=vec(A)Tvec(B).\begin{equation} \mathrm{tr} C = \sum\limits_{i = 1}^{n} c_{ii} = \sum\limits_{i = 1}^{n} \sum\limits_{k = 1}^{n} a_{ki} b_{ki} = \mathrm{vec}(A)^{\mathrm{T}} \mathrm{vec}(B). \square \end{equation}

于是,渐进意义下的最优带宽为:

Hasymopt=argminHSPD(R,d)AMISE[f^(x)]\begin{equation} \boldsymbol{H}_{\mathrm{asym-opt}} = \arg \mathop{\min}\limits_{\boldsymbol{H} \in \mathrm{SPD}(\mathbb{R}, d)} \mathrm{AMISE}\left[ \hat{f}(\boldsymbol{x}) \right] \end{equation}

与一元 KDE 不同,通过上式无法求出 Hasymopt\boldsymbol{H}_{\mathrm{asym-opt}} 的表达式. 但是特别地,若 H=h2Id\boldsymbol{H} = h^2 \boldsymbol{I}_d,则:

R(tr(HH[f(x)]))=h4R(tr(H[f(x)])\begin{equation} R\left(\mathrm{tr}(\boldsymbol{H} \mathrm{H}[f(\boldsymbol{x})])\right) = h^4 R\left(\mathrm{tr}(\mathrm{H}[f(\boldsymbol{x})]\right) \end{equation}

(29)(29) 带入 (25)(25),对 AMISE[f^(x)]\mathrm{AMISE} \left[ \hat{f}(\boldsymbol{x}) \right] 关于 hh 求导,得:

hAMISE[f^(x)]=h3μ22(K)R(tr(H[f(x)])dR(K)nhd+1.\begin{equation} \nabla_h \mathrm{AMISE} \left[ \hat{f}(\boldsymbol{x}) \right] = h^3 \mu_2^2(K) R\left(\mathrm{tr}(\mathrm{H}[f(\boldsymbol{x})]\right) - \frac{dR(K)}{nh^{d + 1}}. \end{equation}

hAMISE[f^(x)]=0\nabla_h \mathrm{AMISE} \left[ \hat{f}(\boldsymbol{x}) \right] = 0,有:

hasymopt=(dR(K)μ22(K)R(tr(H[f(x)])n)1/(d+4).\begin{equation} h_{\mathrm{asym-opt}} = \left( \frac{dR(K)}{\mu_2^2(K) R\left(\mathrm{tr}(\mathrm{H}[f(\boldsymbol{x})]\right) n} \right)^{1 / (d + 4)}. \end{equation}

尽管 (34)(34) 依赖于大量化简,但其揭示了一个重要的规律:当 dd 增大时,最优带宽 hasymopth_{\mathrm{asym-opt}} 也会增大. 此外,我们发现 (34)(34) 的计算也面临着和一元 KDE 同样的问题:起计算依赖于关于真实密度函数 ff 的泛函. 我们首先采取和 Silverman 方法一致的思想,用正态分布函数来近似 ff,得到(不作具体计算):

HNS=(4p+2)2/(p+4)n2/(p+4)Σ\begin{equation} \boldsymbol{H}_{\mathrm{NS}} = \left( \frac{4}{p + 2} \right)^{2 / (p + 4)} n^{-2 / (p + 4)} \cdot \boldsymbol{\Sigma} \end{equation}

在前文中,我们还提到了插入法. 对于多元 KDE,其插入法推导思路与一元 KDE 无异,但各阶段最优带宽 G\boldsymbol{G} 没有明确的公式,不适合实际计算,这里不再展开. 接下来我们讨论交叉验证法,交叉验证法可以很好地适应多元情况.

留一交叉验证法可以表述为:

LOOCV(H)=Rf^H2(x)dx2nj=1nf^H,j(x(j)),HLOOCV=argminHSPD(R,d)LOOCV(H).\begin{align} \mathrm{LOOCV}(\boldsymbol{H}) &= \int_{\mathbb{R}} \hat{f}_{\boldsymbol{H}}^2 (\boldsymbol{x}) \mathrm{d}\boldsymbol{x} - \frac{2}{n} \sum\limits_{j = 1}^{n} \hat{f}_{\boldsymbol{H}, -j}(\boldsymbol{x}^{(j)}), \\ \boldsymbol{H}_{\mathrm{LOOCV}} &= \arg \mathop{\min}\limits_{\boldsymbol{H} \in \mathrm{SPD}(\mathbb{R}, d)} \mathrm{LOOCV}\left( \boldsymbol{H} \right). \end{align}

有偏交叉验证法可以表述为:

R(2f)~=R(2f^)1ndetH5/2R(2K),BCV(H)=14detH2μ22(K)R(2f)~+R(K)ndetH1/2,HBCV=argminHSPD(R,d)BCV(H).\begin{align} \widetilde{R(\nabla^2 f)} &= R(\nabla^2 \hat{f}) - \frac{1}{n \det\boldsymbol{H}^{5 / 2}} R(\nabla^2 K), \\ \mathrm{BCV}(\boldsymbol{H}) &= \frac{1}{4}\det\boldsymbol{H}^2 \mu_2^2(K) \widetilde{R(\nabla^2 f)} + \frac{R(K)}{n \det\boldsymbol{H}^{1 / 2}}, \\ \boldsymbol{H}_{\mathrm{BCV}} &= \arg \mathop{\min}\limits_{\boldsymbol{H} \in \mathrm{SPD}(\mathbb{R}, d)} \mathrm{BCV}\left( \boldsymbol{H} \right). \end{align}

2.4 多元 KDE 算法下的导数估计

f:RdRf: \mathbb{R}^d \rightarrow \mathbb{R} 是通过 KDE 算法生成的概率密度函数,我们想讨论其导数. 对于一阶和二阶导数,我们分别有:

f(x)=[xkf(x)]k=1,2,,dTRd,2f(x)=H[f(x)]=[2xkxlf(x)]k,l=1,2,,dTRd×d.\begin{align} \nabla f(\boldsymbol{x}) &= \left[ \frac{\partial}{\partial x_k} f(\boldsymbol{x}) \right]^\mathrm{T}_{k = 1, 2, \dots, d} \in \mathbb{R}^d, \\ \nabla^2 f(\boldsymbol{x}) = \mathrm{H}[f(\boldsymbol{x})] &= \left[ \frac{\partial^2}{\partial x_k \partial x_l} f(\boldsymbol{x}) \right]^\mathrm{T}_{k, l = 1, 2, \dots, d} \in \mathbb{R}^{d \times d}. \end{align}

需要指出的是,(29)(29) 式是矩阵形式,显然不利于推广到高维,我们利用 Kronecker 积将其转换为向量形式:

f(x)=[(xkf(x))]k=1,2,,dT=[[2xkxlf(x)]l=1,2,,dT]k=1,2,,dTRd2.\begin{align} \nabla \otimes \nabla f(\boldsymbol{x}) &= \left[ \nabla \left( \frac{\partial}{\partial x_k} f(\boldsymbol{x}) \right) \right]^\mathrm{T}_{k = 1, 2, \dots, d} \nonumber \\ &= \left[ \left[ \frac{\partial^2}{\partial x_k \partial x_l} f(\boldsymbol{x}) \right]^\mathrm{T}_{l = 1, 2, \dots, d} \right]^\mathrm{T}_{k = 1, 2, \dots, d} \in \mathbb{R}^{d^2}. \end{align}

我们将上述符号记为 2f(x)\nabla^{\otimes 2} f(\boldsymbol{x}). 一般地,我们给出 f(x)f(\boldsymbol{x})rr 阶导数:

rf(x)=[rf(x)x1x1,,rf(x)x1xd,,rf(x)xdxd]TRdr.\begin{equation} \nabla^{\otimes r} f(\boldsymbol{x}) = \left[ \frac{\partial^r f(\boldsymbol{x})}{\partial x_1 \dots \partial x_1}, \dots, \frac{\partial^r f(\boldsymbol{x})}{\partial x_1 \dots \partial x_d}, \dots, \frac{\partial^r f(\boldsymbol{x})}{\partial x_d \dots \partial x_d} \right]^\mathrm{T} \in \mathbb{R}^{d^r}. \end{equation}

Lem 2.3 多元 Taylor 定理: \color{blue}{\textbf{Lem 2.3 多元 Taylor 定理: }}f:RpRf: \mathbb{R}^p \to \mathbb{R}xRp\boldsymbol{x} \in \mathbb{R}^p。若 fCr[B(x,δ)]f \in C^r[B(\boldsymbol{x}, \delta)],则对任意 h<δ\vert \boldsymbol{h} \vert < \delta,有:

f(x+h)=s=0r1s![sf(x)]Ths+o(hr).\begin{equation} f(\boldsymbol{x} + \boldsymbol{h}) = \sum\limits_{s = 0}^r \frac{1}{s!} \left[ \nabla^{\otimes s}f(\boldsymbol{x}) \right]^{\mathrm{T}} \boldsymbol{h}^{\otimes s} + o\left( \vert \boldsymbol{h} \vert^r \right). \end{equation}

证明略. 下面给出 ff 的导数估计量:

^rf=1ni=1n(rKH)(xx(i)).\begin{equation} \hat{\nabla}^{\otimes r}f = \frac{1}{n} \sum_{i = 1}^n \left( \nabla^{\otimes r} K_{\boldsymbol{H}} \right)(\boldsymbol{x} - \boldsymbol{x}^{(i)}). \end{equation}

其中:

rKH=H1/2(H1/2)r(rK)(H1/2(xx(i))).\begin{equation} \nabla^{\otimes r} K_{\boldsymbol{H}} = \vert \boldsymbol{H} \vert^{-1/2} \left( \boldsymbol{H}^{-1/2} \right)^{\otimes r} \left( \nabla^{\otimes r}K \right)\left( \boldsymbol{H}^{-1/2}(\boldsymbol{x} - \boldsymbol{x^{(i)}}) \right). \end{equation}

特别地,取 r=1r = 1 时,有:

^f(x)=H1/2ndetH1/2i=1n(K)(H1/2(xx(i))).\begin{equation} \hat{\nabla} f(\boldsymbol{x}) = \frac{\boldsymbol{H}^{-1/2}}{n \det \boldsymbol{H}^{1/2}} \sum\limits_{i = 1}^n (\nabla K)\left( \boldsymbol{H}^{-1/2} \left( \boldsymbol{x} - \boldsymbol{x^{(i)}} \right) \right). \end{equation}

若定义缩放一阶梯度核函数:

(K)H(u)=1detH1/2(K)(H1/2(u)),\begin{equation} (\nabla K)_{\boldsymbol{H}}(\boldsymbol{u}) = \frac{1}{\det \boldsymbol{H}^{1/2}} (\nabla K)\left( \boldsymbol{H}^{-1/2} \left( \boldsymbol{u} \right) \right), \end{equation}

则一阶导数估计量可写作:

^f(x)=1nH1/2i=1n(K)H(xx(i)).\begin{equation} \hat{\nabla} f(\boldsymbol{x}) = \frac{1}{n} \boldsymbol{H}^{-1/2} \sum\limits_{i = 1}^n (\nabla K)_{\boldsymbol{H}} \left( \boldsymbol{x} - \boldsymbol{x^{(i)}} \right). \end{equation}

对于 r>1r > 1 的讨论我们不多赘述,可根据实际情况进行讨论. 注意到 H1/2\boldsymbol{H}^{-1/2} 的存在,这说明了 (37)(37) 的带宽选择不同于 (8)(8) 的带宽选择,我们给出 rr 阶导数下 HNS,r\boldsymbol{H}_{\mathrm{NS}, r} 的表达式(对 AMSE\mathrm{AMSE} 的推广、Silverman 方法的应用不作叙述):

HNS,r=(4p+2r+2)2/(p+2r+4)n2/(p+2r+4)Σ.\begin{equation} \boldsymbol{H}_{\mathrm{NS},r} = \left(\frac{4}{p + 2r + 2}\right)^{2 / (p + 2r + 4)} n^{-2 / (p + 2r + 4)} \boldsymbol{\Sigma}. \end{equation}

r=0r = 0 时,HNS,0\boldsymbol{H}_{\mathrm{NS}, 0} 退化为 HNS\boldsymbol{H}_{\mathrm{NS}}. 随着 rr 的增大,HNS,r\boldsymbol{H}_{\mathrm{NS},r} 也会增大,这表明若使用密度估计的最优带宽来估计导数的最优带宽,会导致导数估计出现“欠平滑”现象.

3. 线特征的核密度估计(KDE-Linear, KDE-L)

线特征(如道路、河流、轨迹、等高线等)是地理信息科学(Geographic Information Science, GIS)、计算机视觉、模式识别等领域中常见的空间数据类型. 与点特征的核密度估计(KDE)不同,线特征的核密度估计需考虑线的连续性、长度、方向等几何属性,核心是通过“核函数”将线特征的空间分布“平滑化”,最终生成反映线特征空间集聚程度的密度表面,用于识别线特征的密集区域(如城市路网密集区)或稀疏区域.

在这种意义下,我们不再需要保障最终的密度估计函数 f^\hat{f} 满足 Rdf^(x)dx=1\int_{\mathbb{R}^d} \hat{f}(\boldsymbol{x}) \mathrm{d}\boldsymbol{x} = 1,而仅使用 f^(x)\hat{f}(\boldsymbol{x}) 的大小来判断 x\boldsymbol{x} 处的密度高低.

ll 是一个线特征,为确定 ll 的概率影响,我们可以采取采样点的方法. 作划分 T:t0,t1,t2,,tnT: t_0, t_1, t_2, \dots, t_n,其中 t0t_0ll 的起点,tnt_nll 的终点,t0,t1,,tnt_0, t_1, \dots, t_n 依次位于 ll 上,ti1,ti\overline{t_{i - 1}, t_i} 表示 ti1t_{i - 1}tit_i 点之间的线段,T=maxi=1,2,,nti1,ti\parallel T \parallel = \max\limits_{i = 1, 2, \dots, n} \vert \overline{t_{i - 1}, t_i} \vert. 任取 siti1,tis_i \in \overline{t_{i - 1}, t_i},考虑使用 S={s1,s2,,sn}\mathcal{S} = \{ s_1, s_2, \dots, s_n \} 来估计 ll 的概率影响,对于任意点 xx

f^T(x)=1nhi=1nK(xsih)=i=1n1nhK(xsih)i=1nti1,tit0,tn1hK(xsih).\begin{align} \hat{f}_T(x) &= \frac{1}{nh} \sum\limits_{i = 1}^{n} K\left( \frac{x - s_i}{h} \right) \nonumber \\ &= \sum\limits_{i = 1}^{n} \frac{1}{nh} K\left( \frac{x - s_i}{h} \right) \nonumber \\ &\approx \sum\limits_{i = 1}^{n} \frac{\vert \overline{t_{i - 1}, t_i} \vert}{\vert \overline{t_0, t_n} \vert} \cdot \frac{1}{h} K\left( \frac{x - s_i}{h} \right). \end{align}

其中 K()K(\cdot) 是选定核函数. 随着划分 TT 越来越精细,f^T(x)\hat{f}_T(x) 越接近真实的密度影响:

f^(x)=limT0+f^T(x)=1ht0,tnlK(xsh)ds.\begin{equation} \hat{f}_*(x) = \lim\limits_{\parallel T \parallel \rightarrow 0^+} \hat{f}_T(x) = \frac{1}{h\vert \overline{t_0, t_n} \vert} \int_{l} K\left( \frac{x - s}{h} \right) \mathrm{d}s. \end{equation}

忽略掉系数 (t0,tn)1(\vert \overline{t_0, t_n} \vert)^{-1},得到:

f^(x)=1hlK(xsh)ds.\begin{equation} \hat{f}(x) = \frac{1}{h} \int_{l} K\left( \frac{x - s}{h} \right) \mathrm{d}s. \end{equation}

值得指出的是,忽略掉系数 (t0,tn)1(\vert \overline{t_0, t_n} \vert)^{-1} 是有意义的:一方面,由于不需要进行归一化,忽略该系数不会产生错误;另一方面,由于不同线特征的长度可能不同,若保留该系数,则较长的线特征产生的影响更广,导致其影响强度降低,使得不同线特征之间影响不匹配.

对于带宽 hh 的选择,经验法(即:前文所提的直观法)是尤为重要的. 这是因为此类问题通常关注可视化的结果,得到如道路路网密度图等图像,因此视觉上的最优性是选取带宽的第一要素;对于部分问题,还要兼顾其计算复杂性和精度. 此外,自适应的带宽选择方法也会被使用.

4. 网络核密度估计(Network KDE, NKDE)

4.1 网络密度核估计算法

网络核密度估计是传统核密度估计在网络空间中的拓展,核心是解决“空间点事件在网络结构(如道路、河流、管线等线性网络)上的密度分布估计”问题,而非传统 KDE 针对的二维/三维欧氏空间.

在现实场景中,许多事件(如交通事故、店铺分布、犯罪案件)的发生和扩散严格依赖于网络(例如交通事故仅会沿道路分布,而非在道路外的区域),传统 KDE 直接用欧氏距离计算密度会忽略网络拓扑结构(如道路的连通性、弯曲度),导致估计结果失真;而 NKDE 通过将 “欧氏距离” 替换为 “网络距离”,并结合网络拓扑特性调整核函数,实现对网络上点事件密度的精准刻画. 同样地,网络和密度估计也不需要进行归一化.

G=(V,E)G = (V, E) 是有向连通图,其中 VV 是顶点集,EE 是边集. 我们用 d+(v)d_+(v) 表示顶点 vv 的出度,out(v)\mathrm{out}(v) 表示离开顶点 vv 的边的集合. 显然满足:out(v)=d+(v)\vert \mathrm{out}(v) \vert = d_+(v).

下面,我们来定义网络:记 N=(G,ω)\mathcal{N} = (G, \omega) 称为一个网络,其中 G=(V,E)G = (V, E) 是有向连通图,ω\omega 是定义在 EE 上的函数,用于指明 EE 中边 ee 的权重(对应现实意义中的:道路权重、河流流量、管道大小等). 称 xEx \in \bigcup EN\mathcal{N} 中的点,对于 N\mathcal{N} 中的任一点 x1,x2x_1, x_2,记 x1x_1x2x_2 的最短路径长度为 dm(x1,x2)\mathrm{dm}(x_1, x_2),经过的顶点的全体构成的集合为 Vm(x1,x2)\mathrm{Vm}(x_1, x_2).

S=(x(1),x(2),...,x(n))\mathcal{S} = (x^{(1)}, x^{(2)}, ..., x^{(n)})N\mathcal{N} 中的样本,KK 是取定一元核函数. 对于任意样本点 x(i)x^{(i)},不妨设 x(i)eix^{(i)} \in e_i,对于 eie_i 上任意点 xxx(i)x^{(i)}xx 处的影响为:

fi(x)=Kh(dm(x(i),x)),xei.\begin{equation} f_i(x) = K_h \left( \mathrm{dm}(x^{(i)}, x) \right), \quad x \in e_i. \end{equation}

此时的影响衰减函数即为一元 KDE 的影响衰减函数. 下面考虑 x(i)x^{(i)} 对位于其它边上的点的影响:设 eje_j 的起点通过顶点 vv 连接到 eie_ixejx \in e_j,则可以给出 x(i)x^{(i)}xx 处的影响:

fi(x)=1d+(v)Kh(dm(x(i),x)),xej.\begin{equation} f_i(x) = \frac{1}{d_+(v)}K_h \left( \mathrm{dm}(x^{(i)}, x) \right), \quad x \in e_j. \end{equation}

其直观的实际意义是:x(j)x^{(j)} 的影响随着 xx 移动到 eje_j 的终点 vv 处而发生了分裂,平均分为 d+d_+ 份,沿着 out(v)\mathrm{out}(v) 中的每条边继续延申. 如果考虑到 ω\omega 的作用(即:影响的分裂不是均分,而是依权重分裂),则有:

fi(x)=ω(ej)eout(v)ω(e)Kh(dm(x(i),x)),xej.\begin{equation} f_i(x) = \frac{\omega(e_j)}{\sum\limits_{e \in \mathrm{out}(v)} \omega(e)} K_h \left( \mathrm{dm}(x^{(i)}, x) \right), \quad x \in e_j. \end{equation}

据此,对于一般 N\mathcal{N} 中的点 xxx(i)x^{(i)}xx 的影响为:

fi(x)=vVm(x(i),x)(ω(ev)eout(v)ω(e))Kh(dm(x(i),x)),xE.\begin{equation} f_i(x) = \prod_{v \in \mathrm{Vm}(x^{(i)}, x)} \left( \frac{\omega(e_v)}{\sum\limits_{e \in \mathrm{out}(v)} \omega(e)} \right) K_h\left( \mathrm{dm}(x^{(i)}, x) \right), \quad x \in \bigcup E. \end{equation}

(说明:上式实际表示的是 x(i)x^{(i)} 对其下游点的影响,若要表示对上游点的影响,只需将 Vm(x(i),x)\mathrm{Vm}(x^{(i)}, x) 改为 Vm(x,x(i))\mathrm{Vm}(x, x^{(i)}),下同)

其中 eve_v 表示从 x(i)x^{(i)}xx 的最短路径中以 v (vVm(x(i),x))v \space \left(v \in \mathrm{\mathrm{Vm}(x^{(i)}, x)} \right) 为起点的边. 尽管这一式子十分复杂,在实际应用中(无论是选取有紧支集的核函数还是 Gauss 核函数),只需考虑带宽范围内的点即可.

最后,基于全部的样本,我们可以给出 N\mathcal{N} 上的样本密度估计函数:

f(x)=1ni=1nfi(x).\begin{equation} f(x) = \frac{1}{n} \sum\limits_{i = 1}^{n} f_i(x). \end{equation}

4.2 基于线特征的网络核密度估计算法

在某些应用网络密度核估计算法的场景中,样本点不再是点特征,而是线特征,如:出租车的载客点分布(说明:实际应用中,无法获取出租车载客点的实际位置,而是通过连续采样,粗略地认为载客点位于某两采样点间. 而这两个采样点间的道路即为一个线特征). 下面我们将 NKDE 推广至线特征:

先给出线性事件的定义:记 l=(s,t,p)\mathscr{l} = ( s, t, p ),其中 ses, tet, es,epEs \in e_s, \space t \in e_t, \space \exist e_s, e_p \in Epp 是线性事件的其它额外信息(如起止时间、ID 编号等),不在数学讨论范围中.

Slinear=(l(1),l(2),...,l(n))\mathcal{S_\mathrm{linear}} = (\mathscr{l}^{(1)}, \mathscr{l}^{(2)}, ..., \mathscr{l}^{(n)}) 是网络 N\mathcal{N} 中的线特征样本,每个特征的原始影响衰减函数为:

forigin,i(x)=1hl(i)K(dm(s,x)h)ds.\begin{equation} f_{\mathrm{origin}, i}(x) = \frac{1}{h} \int_{\mathscr{l}^{(i)}} K\left( \frac{\mathrm{dm}(s, x)}{h} \right) \mathrm{d}s. \end{equation}

联合上述分析,得到受网络约束的影响衰减函数:

fi(x)=vVm(s,x),sl(i)(ω(ev)eout(v)ω(e))forigin,i(x).\begin{equation} f_i(x) = \prod_{v \in \mathrm{Vm}(s, x), s \in \mathscr{l}^{(i)}} \left( \frac{\omega(e_v)}{\sum\limits_{e \in \mathrm{out}(v)} \omega(e)} \right) f_{\mathrm{origin}, i}(x). \end{equation}

最后,基于全部的样本,我们可以给出 N\mathcal{N} 上的线特征样本密度估计函数:

f(x)=1ni=1nfi(x).\begin{equation} f(x) = \frac{1}{n} \sum\limits_{i = 1}^{n} f_i(x). \end{equation}

最后,我们指出本节所述仅是一种推广的思想,对于实际问题需要进行具体分析,调整式子,从而给出更优的解答. 例如,在前文所述出租车载客点分布的问题中,我们有时需要分别讨论道路两侧的载客点. 这就需要我们在求平均值时只考虑“同向”线性事件的影响,而忽略“反向”线性事件的影响.