10.6 损失函数和稳健性

本节会更仔细地考察分类和回归问题中不同的损失函数,并说明它们对极端数据样本的稳健性。

分类问题的稳健损失函数

尽管在样本总体的联合分布上,指数损失函数(式 10.8)和二项偏差(式 10.18)均可得出同样的解,但在有限的数据样本集上并不如此。两个准则对“边际值”(margin)$yf(x)$ 都是单调递减的函数。在分类问题中(输出结果为 -1/1),边际值的作用类似于回归问题中的残差 $y-f(x)$。分类的规则为 $G(x)=\operatorname{sign}[f(x)]$,这意味着正的边际值 $y_if(x_i)>0$ 对应着被正确分类的样本,而负的边际值 $y_if(x_i)<0$ 对应着被错误分类的样本。这是一个由 $f(x)=0$ 所定义的判别边界。分类算法的目标是尽可能多地产生正的边际值。用于分类问题中的任意损失准则都应该对负边际值有比正边际值更高的惩罚,因为正边际值对应的是已经正确分类的样本。

**图 10.4**:两个类别分类问题的损失函数。输出变量为 $y=\pm1$;预测函数为 $f$,类别预测为 $\text{sign}(f)$。图中的损失函数有误分类:$I(\text{sign}(f)\ne y)$;指数:$\text{exp}(-yf)$;二项偏差:$\log(1+\text{exp}(-2yf))$;平方误差:$(y-f)^2$;和支持向量:$(1-yf)\_+$ (见第 12.3 节)。每个函数都被缩放到使其通过 $(0,1)$ 点。
图 10.4:两个类别分类问题的损失函数。输出变量为 $y=\pm1$;预测函数为 $f$,类别预测为 $\text{sign}(f)$。图中的损失函数有误分类:$I(\text{sign}(f)\ne y)$;指数:$\text{exp}(-yf)$;二项偏差:$\log(1+\text{exp}(-2yf))$;平方误差:$(y-f)^2$;和支持向量:$(1-yf)_+$ (见第 12.3 节)。每个函数都被缩放到使其通过 $(0,1)$ 点。

图 10.4 展示了作为边际值 $y\cdot f(x)$ 的函数的指数(式 10.8)和二项偏差(式 10.18)准则。同时也展示了误分类损失函数 $L(y,f(x))=I(y\cdot f(x)<0)$,即给负的边际值一个单位的惩罚,不给正的边际值任何惩罚。指数和偏差损失函数都可以看成是对误分类损失函数的单调连续的近似。它们连续地对(绝对值)越大的负边际值实施越大的惩罚,对越大的正边际值实施越大的奖励,但变动的程度上前者要大于后者。两个函数的区别在于程度的不同。二项偏差的惩罚在(绝对值)较大的负边际值区域以线性的程度增加,而指数准则以指数的程度增加对这些负边际值的惩罚,也就是对应的样本的影响力。

在模型训练过程中,指数准则总会赋予较大的负边际值的样本非常大的影响力。二项偏差在这类样本上给予相对小的影响,将影响力相对更平均地分配到所有数据中。因此在一些干扰较多的场景中,例如当贝叶斯误差率不接近于零时,并且尤其是在训练数据的类别标签中存在错误设定(misspecification)时,后者要比前者稳健得多。在类似场景的实证中已经看到过自适应提升的表现出现了急剧的下降。

图中也展示了平方误差损失。对应的总体样本上的最小值解为:

$$\begin{align} f^*(x) &= \arg\min_{f(x)} \operatorname{E}_{Y|x}(Y-f(x))^2 = \operatorname{E}(Y|x) \\ &= 2 \cdot \operatorname{Pr}(Y=1 | x) - 1 \end{align}\tag{10.19}$$

如同以往,分类规则为 $G(x)=\operatorname{sign}[f(x)]$。平方误差损失函数并不是对误分类损失的一个好的替代函数。如图 10.4 中所示,它并不是一个对边际值 $y(fx)$ 单调递减的函数。对 $y_if(x_i)>1$ 的边际值,它以二次函数的形式递增,从而增加了以更大确定性正确分类的样本的影响力(惩罚),也从而减少了被错误分类 $y_if(x_i)<0$ 的样本的相对影响力。因此,若以最终的分类为目标,则单调递减的准则才是更好的替代损失函数。第十二章中的图 12.4 展示了二次损失函数的一个修改版,“Huber”化的二次合页损失(Huberized square hinge loss,Rosset et al., 2004b),它同时具有二项偏差、二次损失和 SVM 合页损失的优势。它的样本总体最小值解与二次损失的解相同(式 10.19),在 $y\cdot f(x)>1$ 上取值为零,并且在 $y\cdot f(x)<-1$ 上呈线性。由于二次函数要比指数函数更容易计算,作者从经验上建议这个损失函数是对二项偏差一个有效的替代。

在 $K$ 类别的分类问题中,输出变量 $Y$ 取值在无序集合 $\mathcal{G}=\{\mathcal{G}_1,\dots,\mathcal{G}_k\}$ 中(参见第 2.4 节第 4.4 节)。现要寻找一个取值在 $\mathcal{G}$ 上的分类器 $G(x)$。其实只需要确定类别的条件概率 $p_k(x)=\operatorname{Pr}(Y=\mathcal{G}_k|x)$,$k=1,2,\dots,K$,然后就可以使用贝叶斯分类器得出:

$$G(x) = \mathcal{G}_k \text{ 其中 } k = \arg\max_\ell p_\ell(x) \tag{10.20}$$

尽管从原则上我们并不需要确定 $p_k(x)$ 的值,而只需要简单的确定哪一个是最大的。然而在数据挖掘的应用中,通常会对类别的概率 $p_\ell(x),\ell=1,\dots,K$ 本身更感兴趣,而不只是得出一个分类结果。在第 4.4 节中,对数几率模型可自然地推广到 $K$ 个类别中:

$$p_k(x) = \frac{e^{f_k(x)}}{\sum_{\ell=1}^K e^{f_\ell(x)}} \tag{10.21}$$

这个表达式保证了 $0\leq p_k(x)\leq1$ 并且其和为一。注意到这里有 $K$ 个不同的函数,每个类别对应一个函数。给每个函数加上一个任意的 $h(x)$ 不会改变模型的结果,所以在函数 $f_k(x)$ 中存在着冗余。惯例上会将它们中的一个设置为零:例如在式 4.17 中 $f_K(x)=0$。但在此处我们更偏向于保持一个对称的性质,约束条件为 $\sum_{k=1}^Kf_k(x)=0$。二项偏差可自然地推广到 $K$ 类别的多项分布偏差损失函数:

$$\begin{align} L(y, p(x)) &= -\sum_{k=1}^K I(y=\mathcal{G}_k) \log p_k(x) \\ &= -\sum_{k=1}^K I(y=\mathcal{G}_k) f_k(x) + \log \left( \sum_{\ell=1}^K e^{f_\ell(x)} \right) \tag{10.22}\end{align}$$

与在二分类问题中一样,准则 10.22 对错误预测的惩罚程度按其错误的程度线性地增加。

Zhu et al. (2005) 将指数损失函数推广到 $K$ 类别的问题。更多细节见练习 10.5

回归问题的稳健损失函数

在回归的问题中,平方误差损失 $L(y,f(x))=(y-f(x))^2$ 和绝对误差损失 $L(y,f(x))=|y-f(x)|$ 的关系可类比之前的指数损失和二项分布对数似然函数的关系。平方误差损失在样本总体上的解为 $f(x)=\operatorname{E}(Y|x)$,而绝对误差损失的解为 $f(x)=\operatorname{median}(Y|x)$;当误差是对称分布时,两者相等。然而在有限样本上,平方误差损失在拟合过程中更强调残差绝对值 $|y_i-f(x_i)|$ 大的样本的影响。因此它更不稳健,并且在长尾的误差分布和尤其是 y 值存在误测量(“异常值”)时的表现急剧下降。在这些情景中,其他更稳健的准则,比如绝对误差损失,表现好得多。在统计学的稳健性领域,已经提出了很多不同的回归损失准则,它们可以很好地抵御异常值的影响(即使不能完全地避免),而且同时也保持了在高斯误差下与最小二乘几乎一样的效率。在存在适度重尾分布的误差分布中,它们通常表现好于以上提到的两个。稳健回归(M-regression)中使用的 Huber 损失准则就是一个这样的准则(Huber, 1964):

$$L(y, f(x)) = \begin{cases} [y-f(x)]^2 & \text{如果} |y-f(x)| \leq \delta \\ 2\delta |y-f(x)| - \delta^2 & \text{其他} \end{cases}\tag{10.23}$$

图 10.5 比较了这三个损失函数。

**图 10.5**:回归问题的三个损失函数的比较,横轴为边际值 $y-f$。Huber 损失函数结合了二次误差损失在零点附近和绝对误差损失在 $\|y-f\|$ 较大区域的良好性质。
图 10.5:回归问题的三个损失函数的比较,横轴为边际值 $y-f$。Huber 损失函数结合了二次误差损失在零点附近和绝对误差损失在 $|y-f|$ 较大区域的良好性质。

以上的讨论说明了如果需要考虑稳健性,在数据挖掘的应用中尤其如此(见第 10.7 节),从统计学性质的角度看,回归问题中的二次误差损失和分类问题中的指数损失都不是最佳的准则。然而这两者在前向分段加性模型的框架下都可推导出简洁并且模块化的提升算法。在使用二次误差损失时,每一步相当于简单地用当前模型残差 $y_i-f_{m-1}(x_i)$ 训练基学习器。在使用指数损失时,每一步相当于以权重 $w_i = \exp(-y_i f_{m-1}(x_i))$ 在样本 $y_i$ 上对基学习器进行加权的拟合。直接用其他更稳健的准则代替它们,则无法得出如此简单可行的提升算法。然而第 10.10.2 节会介绍如何基于任意可导损失函数推导出简单而简洁的提升算法,从而得出可用于数据挖掘的非常稳健的提升算法实施过程。


本节练习

练习 10.5

Multiclass exponential loss (Zhu et al., 2005)

For a K-class classification problem, consider the coding $Y=(Y_1,\dots,Y_K)^T$ with

$$Y_k = \begin{cases} 1 & \text{if } G = \mathcal{G}_k \\ -\frac{1}{K-1} & \text{otherwise} \end{cases}\tag{10.55}$$

Let $f=(f_1,\dots,f_K)^T$ with $\sum_{k=1}^Kf_k=0$, and define

$$L(Y, f) = \exp \left( -\frac{1}{K} Y^T f \right) \tag{10.56}$$
  1. Using Lagrange multipliers, derive the population minimizer $f^*$ of $L(Y,f)$, subject to the zero-sum constraint, and relate these to the class probabilities.
  2. Show that a multiclass boosting using this loss function leads to a reweighting algorithm similar to Adaboost, as in Section 10.4.
上一页
下一页