回归样条中,平滑参数决定了样条的级数,结点的数量和位置。平滑样条使用所有训练集中 $X$ 的唯一值作为结点,并在实际操作中几乎总是使用三次样条,所以只需要确定惩罚项参数 $\lambda$。
选择回归样条的结点数量和位置,可能是一个复杂的组合算法,除非对其进行某种简化。第九章中的 MARS 方法用含有一些近似的贪心算法来获得一个可行的折衷,这会在稍后介绍。
5.5.1 指定自由度
平滑样条中 $\text{df}_\lambda=\operatorname{trace}(\mathbf{S}_\lambda)$ 是 $\lambda$ 的单调函数,所以可以固定 df 后通过逆函数来确定 $\lambda$。这在实践中可通过简单的数值方法来实现。例如在 R 中,用户可在函数 smooth.spline(x,y,df=6)
中指定平滑程度。这让我们可以采取经典的模型选择模式,先用一组不同的 df 进行计算,然后根据近似的 F 测试统计量、残差图、和其他选中的准则来选择模型。用 df 来选择模型使其与其他的平滑方法保持一致性。这在广义加性模型中(第九章)非常有用,因为在一个模型中会同时采用很多不同的平滑方法。
5.5.2 偏差方差权衡
图 5.9 为一个简单的平滑样条例子中 $\text{df}_\lambda$ 的影响:
$$\begin{align} Y &= f(X) + \varepsilon \\ f(X) &= \frac{\sin(12(X + 0.2))}{X + 0.2} \end{align}\tag{5.22}$$其中 $X\sim U[0,1]$,$\varepsilon\sim\mathcal{N}(0,1)$。训练样本为 $N=100$ 个从上述模型中独立生成的观测值 $x_i$ 和 $y_i$。
图中展示了三个不同 $\text{df}_\lambda$ 值下的拟合样条。图中的黄色阴影区域体现了 $\hat{f}_\lambda$ 的逐点标准误差(standard error),阴影区域为 $\hat{f}_\lambda(x)\pm2\cdot se(\hat{f}_\lambda(x))$。由于 $\hat{f}=\mathbf{S}_\lambda\mathbf{y}$:
$$\begin{align} \operatorname{Cov}(\hat{\mathbf{f}}) &= \mathbf{S}_\lambda \operatorname{Cov}(\mathbf{y}) \mathbf{S}_\lambda^T \\ &= \mathbf{S}_\lambda \mathbf{S}_\lambda^T \tag{5.23}\end{align}$$对角线上对应着每个训练样本 $x_i$ 的方差1。偏差可写为:
$$\begin{align} \operatorname{Bias}(\hat{\mathbf{f}}) &= \mathbf{f} - \operatorname{E}(\hat{\mathbf{f}}) \\ &= \mathbf{f} - \mathbf{S}_\lambda \mathbf{f} \tag{5.24} \end{align}$$其中 $\mathbf{f}$ 为在输入变量 $X$ 对应的(未知)真实 $f$ 值的向量。上述的期望和方差均针对于从模型 5.22 中 $N=100$ 个样本的重复随机抽取。类似地,可以计算任意点 $x_0$ 上的 $\operatorname{Var}(\hat{f}_\lambda(x_0))$ 和 $\operatorname{Bias}(\hat{f}_\lambda(x_0))$ (练习 5.10)。图中的三个拟合曲线给出了选择平滑参数中联系到的偏差方差权衡的直观演示。
- $\text{df}=5$:样条函数欠拟合,明显地削弱了函数的高峰和低谷。这在高曲度区域会产生非常高的偏差。然而标准误差的区间带很狭窄,因此我们得到的是一个非常稳定的却与真实函数偏差很大的估计函数。
- $\text{df}=9$:此时拟合函数与真实函数比较接近,尽管在高峰和低谷区域仍可见少许偏差。方差并没有显著地增加。
- $\text{df}=15$:拟合函数在某种程度上摇摆不定,但与真实函数基本吻合。曲线的摇摆也是标准误差区间的宽度增加的原因之一:曲线过于追求靠近偏离真实函数的某些点。
需要注意在图中展示的是在随机样本的某一次抽取上拟合的样条曲线 $\hat{f}$,而偏差是一个概率期望 $\operatorname{E}(\hat{f})$。练习 5.10 中将计算同时展示偏差的类似的曲线。中间的曲线似乎恰好“合适”,达到了偏差和方差之间合理的权衡。
期望平方预测误差将偏差项和方差项结合在一起:
$$\begin{align} \operatorname{EPE}(\hat{f}_\lambda) &= \operatorname{E}(Y - \hat{f}_\lambda(X))^2 \\ &= \operatorname{Var}(Y) + \operatorname{E} \left [ \operatorname{Bias}^2(\hat{f}_\lambda(x)) + \operatorname{Var}(\hat{f}_\lambda(x)) \right ] \\ &= \sigma^2 + \text{MSE}(\hat{f}\lambda) \tag{5.25}\end{align}$$注意其中的平均(期望)是对训练样本的分布(即 $\hat{f}_\lambda$ 的分布),以及对(随机抽取)预测点($X,Y$)的分布进行的。EPE 是一个重要的指标,它也的确体现了偏差和方差的权衡关系。从图 5.9 中左上图可看出 $\text{df}_\lambda=9$ 的确是最优的选择。
在真实场景中,真实的函数是未知的,因此无法得到 EPE 的表达式,需要进行估计。第七章会详细讨论相关内容,诸如常用的 K 次交叉验证、GCV、和 $C_p$ 等等方法。图 5.9 中展示了 N 次(留一,leave-one-out)交叉验证曲线。
$$\begin{align} \text{CV}(\hat{f}_\lambda) &= \frac{1}{N} \sum_{i=1}^N (y_i - \hat{f}_\lambda^{(-i)}(x_i))^2 \tag{5.26} \\ &= \frac{1}{N} \sum_{i=1}^N \left ( \frac{y_i - \hat{f}_\lambda(x_i)}{1 - S_\lambda(i,i)} \right )^2 \tag{5.27}\end{align}$$可以利用原始的拟合值和 $\mathbf{S}_\lambda$ 的对角线元素 $S_\lambda(i,i)$ 计算出每个 $\lambda$ 取值的上式值(练习 5.13)。
EPE 和 CV 曲线的形状相似,但 CV 曲线一直位于 EPE 曲线之下2。在某些随机样本中会得到相反的结果,总体来看 CV 曲线是 EPE 曲线的近似无偏估计。
本节练习
练习 5.10
Derive an expression for Var(fˆλ (x0 )) and bias(fˆλ (x0 )). Using the example (5.22), create a version of Figure 5.9 where the mean and several (pointwise) quantiles of fˆλ (x) are shown.
练习 5.13
You have fitted a smoothing spline fˆλ to a sample of N pairs (xi , yi ). Suppose you augment your original sample with the pair x0 , fˆλ (x0 ), and refit; describe the result. Use this to derive the N -fold cross-validation formula (5.26).