本文依照《机器学习从原理到应用》(卿来云、黄庆明编著,人民邮电出版社,2020 年第一版)的目录顺序整理,为期末复习系列的第三篇,覆盖非线性模型中的支持向量机。SVM 是本章课程中理论性最强、考试分量最重的部分之一,本文按"原理 → 推导主线 → 工程扩展"三个层次梳理。

〇、本章知识地图

SVM 的完整知识体系由三个层次构成,考试也大致按此递进:

第一层:线性可分情形
间隔与支持向量 → 最大间隔原理 → 原始优化问题

第二层:数学工具
拉格朗日乘子法 → 对偶问题 → KKT 条件(支持向量的严格定义)

第三层:工程扩展
软间隔(容忍误分)→ 核技巧(处理非线性)→ SMO(高效求解)→ SVR(回归)

核心思想一句话概括:在特征空间中寻找间隔最大的分离超平面,并通过核技巧将这一思想推广到非线性情形。

一、间隔与支持向量

1.1 分离超平面

二分类问题中,SVM 的模型是特征空间中的一个超平面:

决策规则为 f(\mathbf{x})=\mathrm{sign}(\mathbf{w}^T\mathbf{x}+b)。能分开两类样本的超平面通常有无穷多个,SVM 要回答的问题是:哪一个最好?

1.2 函数间隔与几何间隔

  • 函数间隔:\hat{\gamma}_i = y_i(\mathbf{w}^T\mathbf{x}_i+b),表示分类的"确信程度"。缺陷:将 (\mathbf{w},b) 同倍缩放,函数间隔任意改变而超平面不变,无法用作优化目标;
  • 几何间隔:\gamma_i = \dfrac{y_i(\mathbf{w}^T\mathbf{x}_i+b)}{\lVert\mathbf{w}\rVert},即样本点到超平面的真实距离,缩放不变,是良好定义的度量。

支持向量:距离超平面最近的那些样本点。SVM 的解只由这些点决定,与其余样本无关——这是 SVM 名称的由来,也是最高频考点。

1.3 最大间隔原理

SVM 的准则:选择使最近样本的几何间隔最大的超平面。直觉解释:间隔越大,分类的容错空间越大,对新样本的泛化能力越强(可联系该系列机器学习(1) 的结构风险最小化思想)。

令所有样本满足 y_i(\mathbf{w}^T\mathbf{x}_i+b)\geq 1(通过缩放总可以做到,此时最近点的函数间隔为 1),则几何间隔为 1/\lVert\mathbf{w}\rVert,最大化它等价于:

这是一个凸二次规划问题:目标为凸二次函数,约束为线性不等式。这三行是 SVM 的原始问题,务必能默写。

二、拉格朗日对偶与 KKT 条件

2.1 为什么要引入对偶问题

原始问题直接求解不方便,且解中无法体现"只依赖支持向量"的结构。引入拉格朗日乘子 \alpha_i\geq 0,构造拉格朗日函数并转化为对偶问题后:

  • 问题变为仅关于 \alpha 的凸优化,更易求解(SMO 算法即针对对偶问题);
  • 目标函数中样本只以内积 \mathbf{x}_i^T\mathbf{x}_j 形式出现——这为核技巧埋下伏笔,是关键考点。

对偶问题形式:

2.2 KKT 条件与支持向量的严格刻画

最优解满足 KKT 条件,其中最关键的是互补松弛条件:

其含义:对每个样本,要么 \alpha_i=0(该样本对解无贡献),要么 y_i(\mathbf{w}^T\mathbf{x}_i+b)=1(该样本恰好落在间隔边界上)。后者正是支持向量——只有支持向量对应 \alpha_i>0。这从数学上严格证明了"SVM 的解只依赖支持向量"。

求得 \alpha 后回代:\mathbf{w}=\sum_i\alpha_i y_i\mathbf{x}_i,预测时同样只需支持向量参与计算。

三、软间隔:容忍误分的 SVM

3.1 动机

现实数据很少完全线性可分(存在噪声、异常点),硬间隔约束 y_i(\mathbf{w}^T\mathbf{x}_i+b)\geq 1 可能无解或过拟合。

3.2 软间隔模型

为每个样本引入松弛变量 \xi_i\geq 0,允许一定程度违反间隔约束:

惩罚参数 C 的作用(高频考点):

  • C 大 → 对误分惩罚重 → 间隔窄、力求训练集分对 → 趋向过拟合;
  • C 小 → 容忍更多误分 → 间隔宽 → 趋向欠拟合。

C 是 SVM 最重要的超参数,其调节本质仍是该系列机器学习(1) 中的偏差—方差权衡。

四、核技巧:从线性到非线性

4.1 动机

线性不可分的数据,可映射到高维特征空间使其线性可分(低维纠缠的数据在高维可能舒展)。

4.2 核技巧的关键观察

对偶问题与预测公式中,样本只以内积形式出现。若映射为 \phi(\mathbf{x}),只需计算 \phi(\mathbf{x}_i)^T\phi(\mathbf{x}_j)。核函数直接给出这一内积值,无需显式构造映射:

计算在高维空间进行,代价却留在原空间——这就是"核技巧"。

4.3 常用核函数(必背表)

核函数表达式特点与适用
线性核\mathbf{x}_i^T\mathbf{x}_j不升维,适合特征多、近似线性可分
多项式核(\mathbf{x}_i^T\mathbf{x}_j+1)^dd 为阶数,阶数越高越易过拟合
高斯核(RBF)\exp\left(-\gamma\lVert\mathbf{x}_i-\mathbf{x}_j\rVert^2\right)最常用;\gamma 大 → 影响范围小 → 过拟合
Sigmoid 核\tanh(\kappa\,\mathbf{x}_i^T\mathbf{x}_j+\theta)与神经网络有联系,实际少用

选型经验:不确定时用 RBF 核;样本量很大或特征维度高时先试线性核(速度快且不易过拟合)。

五、求解与扩展

5.1 SMO 算法

对偶问题含约束 \sum_i\alpha_i y_i=0,无法单变量更新。SMO(序列最小优化)的策略:每次选取两个变量 \alpha_i,\alpha_j 更新(其余固定),把大问题分解为一系列可解析求解的二元子问题,反复迭代直至收敛。理解其"化整为零"的思想即可,不要求推导。

5.2 支持向量回归(SVR)

将分类思想推广到回归:以预测曲线为中心构造宽度为 2\varepsilon 的"间隔带",带内误差不计、带外误差受罚。同样可引入核函数处理非线性回归。

六、SVM 优缺点总结

优点缺点
解只依赖支持向量,模型简洁对大规模样本训练慢(核矩阵为 m\times m)
核技巧灵活处理非线性对参数 C 与核参数敏感,需要调参
小样本下表现优异原生只支持二分类,多分类需组合(OvR/OvO)
有坚实的统计学习理论基础输出是硬分类,不直接给出概率

附:代码实践(动手 10 分钟)

片段 1:三种核函数的对比——对应 4.3 节核函数表。

from sklearn.datasets import load_breast_cancer
from sklearn.svm import SVC
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

for kernel in ["linear", "poly", "rbf"]:
    clf = make_pipeline(StandardScaler(), SVC(kernel=kernel, C=1.0))
    clf.fit(X_train, y_train)
    n_sv = clf.named_steps["svc"].n_support_.sum()
    print(f"kernel={kernel:<7} 测试准确率={clf.score(X_test, y_test):.3f}  支持向量数={n_sv}")

预期现象:三者准确率接近,但支持向量数量不同——模型只由这些样本决定,正是 2.2 节 KKT 结论的工程体现。

片段 2:惩罚参数 C 的影响——对应 3.2 节。

for C in [0.01, 1, 100]:
    clf = make_pipeline(StandardScaler(), SVC(kernel="rbf", C=C))
    clf.fit(X_train, y_train)
    print(f"C={C:>6}  训练准确率={clf.score(X_train, y_train):.3f}  "
          f"测试准确率={clf.score(X_test, y_test):.3f}")

预期现象:C 增大时训练准确率上升、训练与测试的差距拉大,直观验证"C 大 → 过拟合倾向"。注意 SVM 对特征缩放高度敏感(距离度量依赖量纲),标准化不可省略。

七、本章自测题

  1. 什么是函数间隔与几何间隔?为什么优化目标必须采用几何间隔?
  2. 写出线性可分 SVM 的原始优化问题,并解释约束条件的含义。
  3. 什么是支持向量?用 KKT 互补松弛条件说明"SVM 的解只依赖支持向量"。
  4. 对偶问题相比原始问题有哪两个优势?(提示:求解难度、内积形式)
  5. 写出软间隔 SVM 的优化问题,并说明惩罚参数 C 对模型的影响。
  6. 核技巧为什么能避免显式高维映射?列出三种常用核函数及表达式。
  7. RBF 核中 \gamma 增大,模型如何变化?与 C 的调节作用有何异同?
  8. 简述 SMO 算法的基本思想。

八、复习建议

  1. 本章推导主线(原始问题 → 对偶 → KKT)不必全部背下,但三个结论必须记住:最大间隔原理、解只依赖支持向量、核技巧避免显式映射;
  2. 公式默写重点:原始问题、软间隔问题、三种核函数表达式;
  3. C 与 \gamma 的调参方向是简答题常客,统一用"过拟合/欠拟合"框架作答(呼应复习(1))。

更多推荐