按照所添加约束的不同,可以将各种非参数回归方法和学习模型分成若干不同的类别。这些类别并不是互斥的,有些方法可以同时归属于几个类型。后面的章节会更详细地讨论,本节先简要地做个介绍。每个类别都有一个或多个控制局部邻域大小的参数,也称为 平滑(smoothing) 参数。以下介绍三个类别。
2.8.1 粗糙惩罚和贝叶斯方法
这类方法直接地在 $\operatorname{RSS}(f)$ 添加一项对函数粗糙程度(roughness)的惩罚:
$$\operatorname{PRSS}(f;\lambda) = \operatorname{RSS}(f) + \lambda J(f) \tag{2.38}$$对于在输入空间的小区域上快速变化的函数 $f$,惩罚函数 $J(f)$ 会设计为输出比较大的值。例如,在一维输入变量空间上的 立方平滑样条(cubic smoothing spline) 函数,即是下面这个加入惩罚项的最小二乘的解:
$$\operatorname{PRSS}(f;\lambda) = \sum_{i=1}^N (y_i-f(x_i))^2 + \lambda \int [f^{\prime\prime}(x)]^2 dx \tag{2.39}$$这里的粗糙惩罚项控制着函数 $f$ 二阶导数中的大值,惩罚的力度由参数 $\lambda\geq 0$ 掌控。当 $\lambda=0$ 时,没有惩罚,可以选择任意的插值(interpolating)函数,当 $\lambda\rightarrow\infty$ 时,相当于要求函数 $f(x)$ 为线性。
惩罚函数 $J$ 可以定义在取值为任意维度的函数上,而且可以根据输入函数的特殊结构而特殊设计。例如,基于平滑坐标函数(coordinate funciton)的加性模型,其加性函数为 $f(X)=\sum_{j=1}^pf_j(X_j)$,则对应的加性惩罚函数为 $J(f)=\sum_{j=1}^pJ(f_j)$。与此类似, 投影寻踪(projection pursuit) 回归模型的形式为 $f(X)=\sum_{m=1}^Mg_m(\alpha_m^TX)$,其中的 $\alpha_m$ 通过训练过程产生,这里的每个函数 $g_m$ 都会对应这相应的粗糙度惩罚。
惩罚函数,也称为 正则化(regularization) 方法,体现了我们对所要寻找的函数的平滑程度有先验的信念,这其实是贝叶斯统计学中常见的思路。惩罚函数 $J$ 相当于一个对数先验概率,$\operatorname{PRSS}(f;\lambda)$ 相当于对数后验分布,而对其做最小化相当于在寻找后验众数。第五章会讨论粗糙惩罚方法,第八章会讨论贝叶斯方法。
2.8.2 核方法和局部回归
核方法和局部回归,可以看成是在对局部邻域或局部函数类型有所假设下,直接地对回归方程或条件期望进行估计。局部邻域被一个核函数定义 $K_\lambda(x_0,x)$,这个函数给目标点 $x_0$ 周围区域的每个样本点 $x$ 赋予权重值(例如 192 页的图 6.1)。例如,高斯核函数为类似于高斯(正态分布)密度函数的权重函数:
$$K_\lambda(x_0, x) = \frac{1}{\lambda} \exp \left[ -\frac{\|x-x_0\|^2}{2\lambda} \right] \tag{2.40}$$某个点的权重随着这个点与 $x_0$ 的欧式距离增加而指数级衰减至 0。参数 $\lambda$ 类似于密度函数中的方差,控制了邻域的宽度。一个最简单的核方法估计为 Nadaraya-Watson 加权平均:
$$\hat{f}(x_0) = \frac{\sum_{i=1}^N K_\lambda(x_0, x_i) y_i} {\sum_{i=1}^N K_\lambda(x_0, x_i)} \tag{2.41}$$
局部回归中一般会定义 $\hat{\theta}$ 为最小化下式的参数,而相应地 $f_\hat{\theta}(x_0)$ 为对 $f_\theta(x_0)$ 的估计。
$$\operatorname{RSS}(f_\theta, x_0) = \sum_{i=1}^N K_\lambda(x_0, x_i) (y_i - f_\theta(x_i))^2 \tag{2.42}$$其中的 $f_\theta$ 为含参数的函数,比如一个低阶的多项式。下面为两个例子:
- $f_\theta(x)=\theta_0$,即常数方程。这样的结果即为式 2.41 中的 Nadaraya-Watson 估计。
- $f_\theta(x)=\theta_0+\theta_1x$ 即为常见的局部线性回归模型。
最近邻域也可看作为一个核方法,其核函数的度量更依赖于训练样本。如下,k 最近邻的核函数为:
$$K_\lambda(x, x_0) = I(\|x - x_0\| \leq \|x_{(k)} - x_0\|)$$其中 $x_{(k)}$ 为训练样本中距离 $x_0$ 第 k 远的点,$I(S)$ 为集合 $S$ 的指示函数。
为了避免维数灾难,这类方法在高维度需要做相应的改善。第六章会介绍多种处理方法。
2.8.3 基函数和字典
这个类型的方法包含了熟悉的线性和多项式拓展,但其中还很广泛地包含了很多重要且灵活的模型。函数 $f$ 的模型可写为对基函数的线性拓展:
$$f_\theta(x) = \sum_{m=1}^M \theta_m h_m(x) \tag{2.43}$$其中每个 $h_m$ 都是输入变量 $x$ 的一个函数,这里的“线性”是针对于参数 $\theta$。非常多的方法可以归纳为上式类型的函数。有时可选的基函数范围是确定的,比如一组$x$ 的 $M$ 阶多项式函数。
在一维输入变量 $x$ 空间上,$K$ 阶的多项式样条函数可以写成一组 $M$ 个样条基函数的组合,而这组基函数又依赖于 $M-K-1$ 个 节点(knots) 。这些基函数的组合构成了一个每段节点之间均为 $K$ 阶多项式函数,每个节点处都是 $K-1$ 阶连续的函数。
用线性样条函数,即分段线性函数,作为一个例子。设计这样一组函数,$b_1(x)=1$,$b_2(x)=x$,$b_{m+2}=(x-t_m)_+$,$m=1,\dots,M-2$,其中 $t_m$ 为第 m 个节点,$z_+$ 表示这个函数的正部。这组基函数的组合构成了线性函数 $1+x$。对于一维以上的输入变量空间,可以对样条基函数进行张量乘积(tensor product),或外积。(第 5.2 节,以及第九章关于 CART 和 MARS 模型。)参数 $M$ 控制着多项数的阶数,或样条函数中的节点数量。
径向基函数(radial basis function) 为关于某个几何中心对称的 $p$ 维度核函数。
$$f_\theta(x)= \sum_{m=1}^M K_{\lambda_M}(\mu_m,x)\theta_m \tag{2.44}$$高斯核函数 $K_\lambda(\mu,x)=e^{-|x-\mu|^2/2\lambda}$ 即是一个常见的例子。
径向基函数的中心(centroid)$\mu_m$ 和规模(scale)$\lambda_m$ 为待定的参数。样条基函数也有节点,一般我们希望可以通过样本数据来选定节点。在加入了这些参数后,回归问题从一个简单的线性问题变成了一个复杂的复合的非线性问题。在实际操作中,会使用诸如贪心法或二阶段法来求解。第 6.7 节会详细介绍。
一个使用线性输出权重的单层前馈神经网络(feed-forward neural network)模型可以被理解为一个自适应的基函数方法。模型可写为:
$$f_\theta(x) = \sum_{m=1}^M \beta_m \sigma(\alpha_m^T x + b_m)\tag{2.45}$$其中 $\sigma(x)=1/(1+e^{-x})$ 称为 激活(activation) 函数。如同投影寻踪模型,需要确定方向向量 $\alpha_m$ 与偏差项 $b_m$,拟合的计算过程会给出它们的估计值。第十一章会详细讨论。
这种可自我选择基函数的方法被称为 字典(dictionary) 方法。先确定一个可供选择的基函数的无限集合,或“字典”$\mathcal{D}$,然后根据某种查询机制来选择基函数,构建模型。