6.6 核密度估计与分类问题

核密度估计(kernel density estimation) 是一种无监督学习过程,历史上要早于核回归。它也自然地引出一族简单的非参数分类方法。

6.6.1 核密度估计

假设有从概率密度函数 $f_X(x)$ 随机抽取的样本 $x_1,\dots,x_N$,想要估计在某个点 $x_0$ 处的概率密度 $f_X$。简单起见,假设 $X\in\mathbb{R}$。之前讨论过,一个自然的局部估计可写为:

$$\hat{f}_X(x_0) = \frac{\# x_i \in \mathcal{N}(x_0)}{N\lambda} \tag{6.21}$$

其中的 $\mathcal{N}(x_0)$ 为 $x_0$ 附近的宽度为 $\lambda$ 的小邻域。这个估计比较曲折,更倾向于用平滑的 帕曾(Parzen) 估计:

$$\hat{f}_X(x_0) = \frac{1}{N\lambda} \sum_{i=1}^N K_\lambda(x_0, x_i) \tag{6.22}$$

其中样本数量被赋予权重,且随着与 $x_0$ 距离的增大而衰减,因此结果是平滑的。在这个例子中,一个常用的 $K_\lambda$ 选择为高斯核函数 $K_\lambda(x_0,x)=\phi(|x-x_0|/\lambda)$。

**图 6.13**:冠心病群体的收缩压的核密度估计。每个点处的概率密度估计是该点处每个核函数的贡献值的平均。图中为了美观将核函数缩小了 10 倍。
图 6.13:冠心病群体的收缩压的核密度估计。每个点处的概率密度估计是该点处每个核函数的贡献值的平均。图中为了美观将核函数缩小了 10 倍。

图 6.13 展示了冠心病(CHD)群体的收缩压(systolic blood pressure)样本取值的高斯核密度拟合。令 $\phi_\lambda$ 表示期望为零标准差为 $\lambda$ 的高斯密度函数,则式 6.22 可写为:

$$\begin{align} \hat{f}_X(x) &= \frac{1}{N} \sum_{i=1}^N \phi_\lambda(x-x_i) \\ &= (\hat{F} \star \phi_\lambda)(x) \tag{6.23}\end{align}$$

第二行为样本经验分布 $\hat{F}$ 与 $\phi_\lambda$ 的卷积。概率分布 $\hat{F}(x)$ 对每个样本 $x_i$ 赋予 $1/N$ 的权重,是离散的;在 $\hat{f}_X(x)$ 中,通过对每个样本加入独立的高斯噪声得到平滑的 $\hat{F}$。

帕曾(Parzen)概率密度估计也是一种局部平均,因此对(概率密度对数尺度上的)局部回归的改进方法也同样适用于此(Loader, 1999)。在此不再细述。在 $\mathbb{R}^p$ 上的高斯密度估计的自然推广为在等式 6.23 上应用高斯乘积核函数(product kernel):

$$\hat{f}_X(x_0) = \frac{1}{N(2\lambda^2\pi)^{\frac{p}{2}}} \sum_{i=1}^N e^{-\frac{1}{2} (\|x_i-x_0\|/\lambda)^2} \tag{6.24}$$

6.6.2 核密度分类

利用贝叶斯定理,可以直接将无参数的概率密度估计用于分类问题。假设一个 $J$ 个类别的数据中,可以分别拟合出每个类别中的非参数概率密度估计 $\hat{f}_j(X),j=1,\dots,J$,同时有每个类别的先验概率估计 $\hat{pi}_j$(通常为样本中所占比例)。则有:

$$\hat{\operatorname{Pr}}(G=j|X=x_0) = \frac {\hat{\pi}_j \hat{f}_j(x_0)} {\sum_{k=1}^J {\hat{\pi}_k \hat{f}_k(x_0)}} \tag{6.25}$$
**图 6.14**:左图为 CHD 和非 CHD 群体各自的收缩压概率密度估计,都基于高斯核密度估计。右图按式 6.25 得出的 CHD 群体的后验概率估计。
图 6.14:左图为 CHD 和非 CHD 群体各自的收缩压概率密度估计,都基于高斯核密度估计。右图按式 6.25 得出的 CHD 群体的后验概率估计。

图 6.14 中利用这种方法来估计心脏病风险因子研究中的 CHD 的患病率,可与图 6.12 中的左图做对比。主要的差别产生在图 6.14 右边所示的高收缩压(SBP)区域。在这个区域,两个类别的样本都比较稀少,由于高斯核密度估计使用了距离的核函数,这个区域上的密度估计偏低而且不准确(方差高)。式 6.20 中的局部对数几率回归方法使用了三次核函数和 k 最近邻的窗宽(bandwidth);如此会有效地拓宽这个区域上的核函数,并利用局部线性假设来使(在对数几率尺度上)估计更稳定。

**图 6.15**:总体的分类别密度函数可能会呈现出独特的结构(左图),但在后验概率中并没有体现(右图)。
图 6.15:总体的分类别密度函数可能会呈现出独特的结构(左图),但在后验概率中并没有体现(右图)。

若最终的目的是分类,那么细究不同类别的概率密度可能是不必要的,甚至可能会有产生误导。图 6.15 演示了一个例子,两个类别的概率密度有显著不同的高峰点,但后验的概率比却是非常平滑的。若从样本的两个密度函数出发,可能倾向于选择一个粗糙且高方差的拟合方式来捕捉看到的特征1,但这与估计后验概率的目的并无关系。事实上,若最终目标是分类,那么最重要的是要在判別边界附近对后验概率准确的估计(二分类中,即为区域 $\{x|\operatorname{Pr}(G=1|X=x)=\frac{1}{2}\}$。)

6.6.3 朴素贝叶斯分类器

尽管名字不太高级(又称“傻瓜贝叶斯”),这个方法多年来一直保持流行。它尤其适用于不好估计概率密度的高维 $p$ 的特征空间上。朴素贝叶斯模型假设给定了一个类别 $G=j$ 后,特征变量 $X_k$ 互相独立:

$$f_j(X) = \prod_{k=1}^p f_{jk} X_k \tag{6.26}$$

一般来说这个假设不成立,但它的确极大地简化了估计:

  • 单独的分类别条件边际密度函数 $f_{jk}$ 可用一维的核密度估计分别计算。这实际上是原始的朴素贝叶斯方法的一个拓展,原先直接用单变量高斯分布作为这些边际密度函数。
  • 若 $X$ 中的某个变量 $X_j$ 是离散的,则可相应地用分布直方图估计。这样在处理混合类型的特征向量上可以直接应用。

尽管有这些相当乐观的假设,朴素贝叶斯常常会胜过远远复杂于它的方法。从图 6.15 中可大概看出原因:尽管单独类别上的密度估计可能有偏差,但这个偏差并不一定会对后验概率,特别是在判别边界附近,产生很大影响。事实上,对于分类问题,从“朴素”的假设中获得的方差缩小,可能要大于其带来的偏差增加。

从式 6.26 出发,可推导对数几率变换(基于类别 $J$)

$$\begin{align} \log\frac{\operatorname{Pr}(G=\ell|X)}{\operatorname{Pr}(G=J|X)} &= \log\frac{\pi_\ell f_\ell(X)}{\pi_J f_J(X)} \\ &= \log\frac{\pi_\ell \prod_{k=1}^p f_{\ell k}(X_k)} {\pi_J \prod_{k=1}^p f_{Jk}(X_k)} \\ &= \log\frac{\pi_\ell}{\pi_J} + \sum_{k=1}^p \log\frac{f_{\ell k}(X_k)}{f_{Jk}(X_k)} \\ &= \alpha_\ell + \sum_{k=1}^p g_{\ell k}(X_k) \end{align}\tag{6.27}$$

最终的形式可视为一个广义加性模型,在第九章会更详细介绍。但此模型的拟合却大不相同;练习 6.9 会对比它们之间的区别。朴素贝叶斯与广义加性模型的关系可类比于线性判别分析与对数几率回归的关系(第 4.4.5 节)。


本节练习

练习 6.9

Explore the differences between the naive Bayes model (6.27) and a generalized additive logistic regression model, in terms of (a) model as- sumptions and (b) estimation. If all the variables Xk are discrete, what can you say about the corresponding GAM?


  1. 比如在这个例子中,可能直接选取中间点作为连个分类的决断点。 ↩︎

上一页
下一页