核密度估计是一种非参数估计方法,在机器学习领域,是一种非监督性学习方法。用于从给定分布的样本重建总体的分布函数。

优点

  • 非参数:假设少,不假设样本服从任何分布

缺点

  • 计算量:比起参数估计,非参数估计运算量大很多

1. 核密度估计(Kernel Density Estimation)

1.1 单变量(Univariable)密度估计

1.1.1 单变量的核密度估计

定理 1.1: 均匀核估计量
核密度估计python 核密度估计的优缺点_统计
核密度估计python 核密度估计的优缺点_计量_02核密度估计python 核密度估计的优缺点_机器学习_03的一致估计量,只要核函数核密度估计python 核密度估计的优缺点_计量_04满足

  1. 归一化, 核密度估计python 核密度估计的优缺点_核函数_05
  2. 对称性, 核密度估计python 核密度估计的优缺点_核函数_06
  3. 二阶矩有限, 核密度估计python 核密度估计的优缺点_核函数_07

并且可证明核密度估计python 核密度估计的优缺点_计量_02有一个渐进正态分布,也就是说核密度估计python 核密度估计的优缺点_核函数_09统计量服从中心极限定理。

注意到

\begin{align*}
 \hat{f}(x)&=\frac{1}{nh}\sum_{i=1}^{n}k\left(\frac{X_i-x}{h}\right)\
 &=(\hat{F}\star k_h)(x)
 \end{align*}


其中核密度估计python 核密度估计的优缺点_核函数_10表示卷积,核密度估计python 核密度估计的优缺点_核函数_11,是一堆针刺。这也就是说,通过总体的密度分布核密度估计python 核密度估计的优缺点_核函数_12是利用宽度为核密度估计python 核密度估计的优缺点_计量_13的核函数核密度估计python 核密度估计的优缺点_计量_14平滑了针板函数核密度估计python 核密度估计的优缺点_核函数_15得到的。

均方误差(Mean Square Error)分析

\begin{align*}
 MSE[\hat{f}(x)]&\equiv E\left[\left(\hat{f}-f(x)\right)^2\right]\
 &=var\left[\hat{f}(x)\right]+\left[E\left(\hat{f}(x)\right)-f(x)\right]^2\
 &=var\left[\hat{f}(x)\right]+bias^2\left[\hat{f}(x)\right]
 \end{align*}


可以利用Taylor展开方便的证明核密度估计python 核密度估计的优缺点_统计_16具有均方误差一致收敛速度满足下面定理

定理 1.2:设三阶可微概率密度核密度估计python 核密度估计的优缺点_核函数_17有一组i.i.d.的核密度估计python 核密度估计的优缺点_核函数_18个观测值核密度估计python 核密度估计的优缺点_核密度估计python_19。核函数核密度估计python 核密度估计的优缺点_计量_04满足归一性,对称性和二阶矩存在,且当核密度估计python 核密度估计的优缺点_机器学习_21时,有核密度估计python 核密度估计的优缺点_核密度估计python_22宏观无穷小核密度估计python 核密度估计的优缺点_计量_23,微观无穷大核密度估计python 核密度估计的优缺点_统计_24。则对于核密度估计python 核密度估计的优缺点_核函数_25
\begin{align*}
MSE[\hat{f}(x)]&=bias^2[\hat{f}(x)]+var[\hat{f}(x)] \
&=\frac{h4}{4}\left[\kappa_2f{(2)}(x)\right]^2+\frac{\kappa f(x)}{nh}+o(h4+(nh){-1})
\end{align*}
其中核密度估计python 核密度估计的优缺点_统计_26核密度估计python 核密度估计的优缺点_统计_27由核函数性质决定。并且核密度估计python 核密度估计的优缺点_机器学习_28核密度估计python 核密度估计的优缺点_计量_29

因此核密度估计python 核密度估计的优缺点_统计_16在均方误差意义下一致收敛于核密度估计python 核密度估计的优缺点_统计_31

更近一步,如果将MSE作为判据,为了使MSE最小(核密度估计python 核密度估计的优缺点_计量_32),应该选取的核宽度为
核密度估计python 核密度估计的优缺点_计量_33
其中核密度估计python 核密度估计的优缺点_核密度估计python_34

注意到上面的窗口宽度随着核密度估计python 核密度估计的优缺点_计量_35变化的函数,如果希望使用固定窗口宽度,我们选择固定核宽度的积分均方误差作为评判标准,即估计密度函数和总体密度之间的期望希尔伯特距离

\begin{align*}
 IMSE[\hat{f}(x)]&\equiv \int E\left[\left(\hat{f}(x)-f(x)\right)^2\right],dx\
 &=\frac{1}{4}h4\kappa_22\int \left[,f{(2)}(x),\right]2,dx+\frac{\kappa}{nh}+o(h4+(nh){-1})
 \end{align*}


在这个意义下,可以求得是IMSE最小的优化核密度估计python 核密度估计的优缺点_机器学习_36
核密度估计python 核密度估计的优缺点_核密度估计python_37
其中核密度估计python 核密度估计的优缺点_统计_38

1.1.2 窗宽选择
  1. 插入法(plug-in methods)
    为了求出在IMSE条件下最有的窗宽,需要确定常数核密度估计python 核密度估计的优缺点_核密度估计python_39中的核密度估计python 核密度估计的优缺点_计量_40。由于核密度估计python 核密度估计的优缺点_核密度估计python_41是未知的,所以这个量无法事先知道。如果选择一个核密度估计python 核密度估计的优缺点_统计_42初始的“试验值”(pilot value),然后将这个值代入核密度估计python 核密度估计的优缺点_机器学习_43的计算式求出的优化核密度估计python 核密度估计的优缺点_统计_42,则这种方法称为“插入法”(plug-in methods)。
    Silverman(1986)提出假定核密度估计python 核密度估计的优缺点_核密度估计python_41是一个以核密度估计python 核密度估计的优缺点_机器学习_46为方差的正态分布,则其二阶导可确定,核密度估计python 核密度估计的优缺点_机器学习_47,代入优化窗宽,可以得到试验窗宽估计
    核密度估计python 核密度估计的优缺点_统计_48
    用此试验值进一步迭代计算核密度估计python 核密度估计的优缺点_核密度估计python_49,定出最终的优化结果核密度估计python 核密度估计的优缺点_机器学习_43
    Silverman还提出一种更加稳健的分散程度度量,就是用核密度估计python 核密度估计的优缺点_机器学习_51来代替核密度估计python 核密度估计的优缺点_机器学习_52,其中核密度估计python 核密度估计的优缺点_核函数_53表示四分位矩。
  2. 交错鉴定法 交错鉴定法是一种完全由数据驱动的方法,其核心在于用一部分样本拟合模型来检验另一部分样本的拟合程度。通过不断改变训练集合测试集,来评价模型的好坏。当每次都只留一个样本作为检验对象,其他样本均做训练集时,所得到的估计量称为去一估计量(leave-one-out estimator)。 通过这种方法,我们可以来估计核密度估计python 核密度估计的优缺点_统计_54核密度估计python 核密度估计的优缺点_核密度估计python_41的希尔伯特距离,并以距离作为判据来选择窗宽,这种方法称为最小二乘交叉检验。 \begin{align*} L(\hat{f}, f)&=\int[\hat{f}(x)-f(x)]^2,dx\ &=\int\hat{f}(x)^2dx-2\int\hat{f}(x)f(x)dx+\int f(x)^2dx\ \end{align*} 其中第三项和核密度估计python 核密度估计的优缺点_统计_54无关,视为常数核密度估计python 核密度估计的优缺点_统计_57 第二项采用去一估计量估计,即核密度估计python 核密度估计的优缺点_机器学习_58 其中核密度估计python 核密度估计的优缺点_机器学习_59是对核密度估计python 核密度估计的优缺点_核密度估计python_60求期望,用来区别对观测量核密度估计python 核密度估计的优缺点_核密度估计python_61求期望。在核密度估计python 核密度估计的优缺点_核密度估计python_61处的去一估计量核密度估计python 核密度估计的优缺点_机器学习_63定义为核密度估计python 核密度估计的优缺点_核密度估计python_64 表示用除了核密度估计python 核密度估计的优缺点_核密度估计python_61这个观测量外的其他观测量来估计核密度估计python 核密度估计的优缺点_核密度估计python_61处的密度函数。 第一项直接代入核密度估计python 核密度估计的优缺点_计量_67的估计式,可以得到
\begin{align*}
 \int\hat{f}(x)2dx&=\int\left[\frac{1}{nh}\sum_{i=1}nk\left(\frac{X_i-x}{h}\right)\right]^2dx\
 %&=\frac{1}{n2h2}\sum_{i=1}n\sum_{j=1}n\int k\left(\frac{X_i-x}{h}\right)k\left(\frac{X_j-x}{h}\right)dx\
 %&=\frac{1}{n2h2}\sum_{i=1}n\sum_{j=1}n\int k\left(\frac{x}{h}\right)k\left(\frac{x+X_i-X_j}{h}\right)\cdot h, d\left(\frac{x}{h}\right)\
 &=\frac{1}{n2h}\sum_{i=1}n\sum_{j=1}^n\bar{k}\left(\frac{X_i-X_j}{h}\right)
 \end{align*}

  1. 其中核密度估计python 核密度估计的优缺点_核函数_68核密度估计python 核密度估计的优缺点_计量_69的重卷积核(two-fold convolution),一般是两个独立同分布的随机变量之和的分布。可证明,核密度估计python 核密度估计的优缺点_核函数_70也是偶函数。

定理 1.3 总体分布函数为核密度估计python 核密度估计的优缺点_核函数_17,通过去一核估计交叉检验得到的估计量核密度估计python 核密度估计的优缺点_计量_02的积分平方误差核密度估计python 核密度估计的优缺点_核函数_73
核密度估计python 核密度估计的优缺点_核密度估计python_74
其中核密度估计python 核密度估计的优缺点_机器学习_75核密度估计python 核密度估计的优缺点_计量_04的重卷积核。

可以通过成熟的数值算法对核密度估计python 核密度估计的优缺点_核函数_77进行优化求解得到使交叉检验核密度估计python 核密度估计的优缺点_统计_78最小的核宽度核密度估计python 核密度估计的优缺点_计量_13
核密度估计python 核密度估计的优缺点_核函数_77的首项提出,并使首项最小,会发现得到的最优解退化为IMSE最优解的情形。

除了最小二乘方法,还可以使用最概然交叉检验。根据玻尔兹曼熵定义,这种方法以最大化去一核最概然函数的对数为标准来选取核密度估计python 核密度估计的优缺点_计量_13,即
核密度估计python 核密度估计的优缺点_核函数_82
其中核密度估计python 核密度估计的优缺点_核函数_83为玻尔兹曼常数。这种方法受到尾部行为影响严重,对厚尾分布会引起不一致的结果,因此最概然交错检验不太流行

1.2 单变量累计分布函数

1.2.1 累计分布函数的核估计

为了得到平滑的CDF估计量,我们从核函数出发,将密度分布函数估计进行积分
核密度估计python 核密度估计的优缺点_核函数_84
其中核密度估计python 核密度估计的优缺点_计量_85是核的累计分布函数。其均方误差有下面定理给出

定理 1.4:总体的累计分布函数核密度估计python 核密度估计的优缺点_核密度估计python_86二阶连续可微,且二阶倒数Holder连续,核密度估计python 核密度估计的优缺点_核密度估计python_87为对称的核函数,核密度估计python 核密度估计的优缺点_机器学习_88为核积分函数。则当核密度估计python 核密度估计的优缺点_机器学习_21时,

\begin{align*}
 MSE[\hat{F}]&=bias[\hat{F}]^2+var[\hat{F}] \
 & = \left{ \frac{1}{2}\kappa_2h2F{(2)}(x) + o\left(h2\right)\right}2 \
 & + \left{\frac{1}{n}F(x)[1-F(x)]-\frac{1}{n}\alpha_0f(x)h+o\left(\frac{h}{n}\right)\right}\
 &=c_0(x)n{-1}-c_1(x)hn{-1}+c_2(x)h4+o(h4+hn^{-1})
 \end{align*}
 其中系数项为
 \begin{align*}
 c_0(x)&=F(x)[1-F(x)]\
 c_1(x)&=\alpha_0f(x)\
 c_2(x)&=\left[\frac{\kappa_2}{2}F{(2)}(x)\right]2\
 \alpha_0&=2\int xG(x)k(x)dx\
 \kappa_2&=\int x^2k(x)dx
 \end{align*}


系数由总体分布函数核密度估计python 核密度估计的优缺点_核密度估计python_86和核确定核密度估计python 核密度估计的优缺点_核密度估计python_87

因此,可以容易的核密度估计python 核密度估计的优缺点_核密度估计python_92到积分均方误差IMSE
\begin{align*}
IMSE(\hat{F})&=\int E[\hat{F}(x)-F(x)]^2dx\
&=C_0n{-1}-C_1hn{-1}+C_2h4+o(h4+hn^{-1})
\end{align*}
其中核密度估计python 核密度估计的优缺点_核密度估计python_93是和核密度估计python 核密度估计的优缺点_计量_35无关的常数。
首项最小化可以的到优化的核宽度选择
核密度估计python 核密度估计的优缺点_核密度估计python_95
这比密度估计(核密度估计python 核密度估计的优缺点_统计_96)收敛速度要快。

渐进正态特性,根据Liapunov中心极限定理,分布上
核密度估计python 核密度估计的优缺点_计量_97
误差满足正态分布。

1.2.2 窗宽选择

交叉检验法:累计分布函数估计核密度估计python 核密度估计的优缺点_计量_98的交叉检验函数定义如下
核密度估计python 核密度估计的优缺点_机器学习_99
其中核密度估计python 核密度估计的优缺点_核函数_100是示性函数,核密度估计python 核密度估计的优缺点_核密度估计python_101为去一核估计量。

可以证明交叉检验函数期望的首项和核密度估计python 核密度估计的优缺点_计量_102的首项相同。因此用交叉检验和用IMSE得到的效果相同

1.3 多变量(Multivariable)联合分布密度估计

1.3.1 联合分布的核估计

当我们考察的对象从标量随机变量扩充为核密度估计python 核密度估计的优缺点_机器学习_103维随机向量时,我们需要的估计的密度分布函数就也称为了联合密度分布。我们将问题形式化如下,假定有核密度估计python 核密度估计的优缺点_机器学习_104核密度估计python 核密度估计的优缺点_机器学习_103维随机向量核密度估计python 核密度估计的优缺点_核函数_106且i.i.d服从联合密度函数核密度估计python 核密度估计的优缺点_核密度估计python_107,记核密度估计python 核密度估计的优缺点_统计_108核密度估计python 核密度估计的优缺点_机器学习_109的第核密度估计python 核密度估计的优缺点_计量_110个分量。即

s

=

1

2


q

核密度估计python 核密度估计的优缺点_核函数_111

=

(

核密度估计python 核密度估计的优缺点_机器学习_112,

核密度估计python 核密度估计的优缺点_核函数_113,

…,

核密度估计python 核密度估计的优缺点_机器学习_114

)

核密度估计python 核密度估计的优缺点_统计_115

=

(

核密度估计python 核密度估计的优缺点_核密度估计python_116,

核密度估计python 核密度估计的优缺点_统计_117,

…,

核密度估计python 核密度估计的优缺点_计量_118

)


=

(

…,

…,

…,


)

核密度估计python 核密度估计的优缺点_计量_119

=

(

核密度估计python 核密度估计的优缺点_统计_120,

核密度估计python 核密度估计的优缺点_计量_121,

…,

核密度估计python 核密度估计的优缺点_核密度估计python_122

)

联合分布的核函数通过单变量核函数的乘积构造,这样的构造的联合密度核函数是假设核密度估计python 核密度估计的优缺点_机器学习_103个核相互独立时的联合分布函数,核密度估计python 核密度估计的优缺点_机器学习_124的分量之间并不需要限制是独立的。也就是说,核密度估计python 核密度估计的优缺点_计量_125分量之间有依赖时也可以通过这样的核估计出来。我们用下面的方法来估计联合概率密度核密度估计python 核密度估计的优缺点_统计_31
核密度估计python 核密度估计的优缺点_核函数_127
其中,核函数
核密度估计python 核密度估计的优缺点_核函数_128
核密度估计python 核密度估计的优缺点_计量_129则是单变量核函数。

均方误差的计算类似于单变量的其概况,可以得到

定理 1.5:设三阶梯度存在的核密度估计python 核密度估计的优缺点_核密度估计python_130维联合概率密度分布函数核密度估计python 核密度估计的优缺点_统计_131有一组i.i.d.的核密度估计python 核密度估计的优缺点_核函数_18个观测值核密度估计python 核密度估计的优缺点_机器学习_133。核函数核密度估计python 核密度估计的优缺点_核密度估计python_134为单变量核函数之积。且当核密度估计python 核密度估计的优缺点_机器学习_21时,有格子体积宏观无穷小核密度估计python 核密度估计的优缺点_核函数_136,微观无穷大核密度估计python 核密度估计的优缺点_核密度估计python_137。则对于核密度估计python 核密度估计的优缺点_核函数_25

\begin{align*}
 MSE[\hat{f}(x)]&=bias^2[\hat{f}(x)]+var[\hat{f}(x)] \
 &=\left{\frac{\kappa_2}{2}\sum_{s=1}qh_s2\frac{\partial^2 f(x)}{\partial x_s2}+O\left(\sum_{s=1}qh_s^3 \right)\right}^2\
 &+\left{\frac{1}{nh_1h_2\cdots h_q}\left[\kappaqf(x)+O\left(\sum_{s=1}qh_s^2\right)\right]\right}\
 &=O\left(\left(\sum_{s=1}qh_s2\right)^2+(nh_1h_2\cdots h_q)^{-1}\right)\
 &=O(L4+(nV){-1})
 \end{align*}


其中核密度估计python 核密度估计的优缺点_统计_26核密度估计python 核密度估计的优缺点_统计_27由单变量核函数性质决定。核密度估计python 核密度估计的优缺点_核密度估计python_141为核宽度超立方体的对角线长度,而核密度估计python 核密度估计的优缺点_核密度估计python_142为超立方体的体积。

渐进正态性讨论
如果核密度估计python 核密度估计的优缺点_核函数_143,格子宏观无穷小核密度估计python 核密度估计的优缺点_统计_144,微观无穷大核密度估计python 核密度估计的优缺点_核函数_145时,并且核密度估计python 核密度估计的优缺点_统计_146,密度估计量具有渐进正态性。
核密度估计python 核密度估计的优缺点_核函数_147
即其无偏误误差服从均值为0的正态分布。

1.3.2 窗框选择

插入法
优化的核宽度选择应当平衡偏误和方差,也就是说,对于所有的核密度估计python 核密度估计的优缺点_计量_110应当有
核密度估计python 核密度估计的优缺点_核函数_149
因此,优化的核密度估计python 核密度估计的优缺点_核密度估计python_150应满足
核密度估计python 核密度估计的优缺点_核函数_151
在应用中,需要对常数核密度估计python 核密度估计的优缺点_核函数_152进行选择,经验法则山,一般选取核密度估计python 核密度估计的优缺点_机器学习_153。但由于总体的分布函数可能各向异性,所以这样一概而论的常数缺乏灵活性。

对于插入法,一般通过核密度估计python 核密度估计的优缺点_统计_16的偏误和方法首项进行估计,其中包含了总体分布核密度估计python 核密度估计的优缺点_统计_31和二阶偏导数,这在高维情况中是复杂的。在实际中插入法没有广泛使用,也不推荐使用

交叉检验法
自然地将一维交叉检验函数扩充到高维的情况,定义交叉检验目标函数为

\begin{align*}
 CV_f(h_1,\ldots,h_q)&=\frac{1}{n2}\sum_{i=1}n\sum_{j=1}^n\overline{K}h(X_i, X_j)\
 &\quad-\frac{2}{n(n-1)}\sum{i=1}^n\sum_{j\ne i}^n K_h(X_i,X_j)
 \end{align*}
 其中
 \begin{align*}
 K_h(X_i,X_j)=\prod_{s=1}^q\frac{1}{h_s}k\left(\frac{X_{is}-X_{js}}{h_s}\right)\
 \overline{K}h(X_i,X_j)=\prod{s=1}^q\frac{1}{h_s}\bar{k}\left(\frac{X_{is}-X_{js}}{h_s}\right)
 \end{align*}


是单变量版本的乘积形式。可以通过数值方法来寻求目标函数的最小化。

从理论分析上交叉检验目标函数核密度估计python 核密度估计的优缺点_核函数_156的首项通过下式给出
核密度估计python 核密度估计的优缺点_统计_157
其中核密度估计python 核密度估计的优缺点_计量_158核密度估计python 核密度估计的优缺点_核函数_159核密度估计python 核密度估计的优缺点_统计_160
为了分离出样本数核密度估计python 核密度估计的优缺点_机器学习_104的影响,我们定义核密度估计python 核密度估计的优缺点_机器学习_162,代换核密度估计python 核密度估计的优缺点_核密度估计python_150得到
核密度估计python 核密度估计的优缺点_计量_164
其中核密度估计python 核密度估计的优缺点_机器学习_165适合核密度估计python 核密度估计的优缺点_机器学习_104无关的常数,定义为
核密度估计python 核密度估计的优缺点_核函数_167

因此可以看到,最大化首项的核密度估计python 核密度估计的优缺点_核密度估计python_150应满足核密度估计python 核密度估计的优缺点_核函数_169。同时可以证明核密度估计python 核密度估计的优缺点_计量_170的首项也是核密度估计python 核密度估计的优缺点_机器学习_171的首项,也就说说,最优化核密度估计python 核密度估计的优缺点_核密度估计python_150也使得积分均方误差的首项最小化。

最概然交叉检验和单变量情况通过最大化熵来给出最优化窗宽,虽然执行简单,单依然会有厚尾分布时出现缺陷的情况,会出现过度平滑。

1.4 高阶核函数

定义 1.1: 一个核密度估计python 核密度估计的优缺点_核密度估计python_173阶核函数(核密度估计python 核密度估计的优缺点_计量_174)应满足如下条件

  1. 归一化, 核密度估计python 核密度估计的优缺点_核函数_175
  2. 低阶矩为0, 核密度估计python 核密度估计的优缺点_机器学习_176核密度估计python 核密度估计的优缺点_统计_177
  3. 核密度估计python 核密度估计的优缺点_核密度估计python_178阶矩有限, 核密度估计python 核密度估计的优缺点_核密度估计python_179

则称核函数核密度估计python 核密度估计的优缺点_计量_04核密度估计python 核密度估计的优缺点_核密度估计python_173阶核函数。

通常使用的核都属于二阶核函数核密度估计python 核密度估计的优缺点_核密度估计python_182。与二阶核类似,对于总体分布函数核密度估计python 核密度估计的优缺点_统计_31核密度估计python 核密度估计的优缺点_核函数_184阶可微,所有的维度使用相同阶核函数时,可以证明

\begin{align*}
 bias[\hat{f}(x)]&=O\left(\sum_{s=1}qh_s\nu\right)\
 var[\hat{f}(x)]&=O((nh_1h_2\cdots h_q)^{-1})
 \end{align*}


利用这个结果,可以得到均方差和估计的误差

定理 1.6: 对于一个核密度估计python 核密度估计的优缺点_核密度估计python_173阶核函数,核密度估计python 核密度估计的优缺点_核密度估计python_186,其误差由下式给出

\begin{align*}
 MSE[\hat{f}(x)]&=O\left(\sum_{s=1}qh_s{2\nu}+(nh_1h_2\cdots h_q)^{-1}\right)\
 \hat{f}(x)-f(x)&=O_p\left(\sum_{s=1}qh_s{\nu}+(nh_1h_2\cdots h_q)^{-1/2}\right)
 \end{align*}


利用一个高阶和可以同时较少偏误和方法。

值得注意的是,对于核密度估计python 核密度估计的优缺点_计量_187,不存在非负核函数。也就意味着,我们有可能得到负的密度估计。对于有限样本来说,一个非负的二阶核函数经常比高阶核函数得到更稳定的结果。因此,高阶核函数经常被用于理论目次,而不太在实践中运用。

高阶核函数可以通过低阶核函数与多项式乘积的形式进行构造,通过矩约束求解多项式系数。

1.5 展望

  1. 放开窗口宽度常数限制,使用变长窗口宽度。
  2. 采用变换分布,消除偏度的影响。

参考资料

[1] Q. Li & J. S. Racine, Nonparametric Econometrics Theory and Practice, Peking University Press, 2007
[2] T. Hastie, R. Tibshirani & J. Friedman, The Elements of Statistical Learning, Second Edition, Springer, 2009
[3] B. Silverman, Density Estimation for Statistics and Data Analysis, Springer, 1986