第12章 支持向量机分类
在许多情况下,我们希望机器学习算法能够预测若干(离散)结果中的一个。例如,电子邮件客户端会将邮件分为个人邮件和垃圾邮件,这就有两个结果。另一个例子是望远镜识别夜空中的天体是星系、恒星还是行星。通常结果的数量较少,更重要的是,这些结果之间往往没有额外的结构。
在本章中,我们考虑输出二元值的预测器,也就是说,只有两种可能的结果。这种机器学习任务称为二分类(binary
classification)。这与第 9
章形成对比,当时我们讨论的是连续值输出的预测问题。对于二分类,标签/输出可以取的值是二元的,本章中我们用
{+1,−1} 表示。换句话说,我们考虑的预测器形式为 \[
f:\mathbb{R}^D \to \{+1,-1\}. \tag{12.1}
\]
回忆第 8 章,我们用 \(D\)
个实数的特征向量表示每个样本(数据点)\(x_n\)。标签通常分别称为正类(positive
class)和负类(negative
class)。但应当注意,不要根据“正”或“负”字面意义推断+1类的直观属性。例如,在癌症检测任务中,有癌症的患者往往被标记为+1。原则上可以使用任何两个不同的值,例如{True,False}、{0,1}或{red,blue}。二分类问题研究得比较充分,其他方法的综述我们放到
12.6 节再介绍。我们将介绍一种称为支持向量机(Support Vector
Machine,
SVM)的方法,它用于解决二分类任务。与回归类似,这是一个监督学习任务:我们有一组样本
\(x_n \in
\mathbb{R}^D\),以及对应的(二元)标签 \(y_n \in
\{+1,-1\}\)。给定一个包含样本–标签对 \(\{(x_1,y_1),\dots,(x_N,y_N)\}\)
的训练数据集,我们希望估计模型参数,使分类错误率最小。类似第 9
章,我们考虑线性模型,并把非线性隐藏在对样本的一个变换 \(\phi\) 中(见式(9.13))。我们将在
12.4 节重新讨论 \(\phi\)。
支持向量机(SVM)在许多应用中都能提供最先进的结果,并且具有坚实的理论保证(Steinwart
和 Christmann, 2008)。我们之所以选择用 SVM
来说明二分类问题,主要有两个原因。
首先,SVM 提供了一种几何方式来思考监督学习问题。
在第 9
章中,我们是从概率模型的角度来看待机器学习问题,并用极大似然估计和贝叶斯推断来解决。而在这里,我们考虑一种替代的方法,即从几何角度来推理机器学习任务。这种方法高度依赖于我们在第
3 章讨论过的内积和投影等概念。
第二个原因是,与第 9 章不同,SVM
的优化问题没有解析解,因此需要借助第 7
章介绍的各种优化工具。 SVM 对机器学习的理解与第 9
章的极大似然方法存在细微的差异:极大似然方法是基于数据分布的概率观点提出一个模型,再由此推导出一个优化问题;而
SVM
的方法则是从几何直觉出发,先设计一个需要在训练过程中被优化的函数。我们已经在第
10 章看到过类似的情况,当时我们从几何原理出发推导了 PCA。在 SVM
的例子中,我们通过设计一个损失函数来度量训练数据上的误差,并遵循经验风险最小化原则(第
8.2 节),在训练中加以最小化。