Skip to content

Chapter 8 支持向量机


一、最大间隔分类器

疾旋鼬在草地上看到红色和蓝色两种花混杂在一起,想用一条直线把它们分开。能分开的直线有很多条——哪条最好?

想象在两种花之间修一条路。路越宽,两边的花离路越远,新花就越不容易被分错。

SVM 的核心思想:找到使得间隔 (margin) 最大的分界线。

问题设定

给定训练集 \(\{(x^{(i)}, y^{(i)})\}_{i=1}^m\)\(x \in \mathbb{R}^d\)\(y \in \{-1, +1\}\)

寻找超平面 \(w^T x + b = 0\) 将两类分开。对每个样本,要求:

\[y^{(i)}(w^T x^{(i)} + b) \geq 0\]

这只是可行性问题——满足条件的超平面一般有无穷多个。

几何间隔

样本 \((x^{(i)}, y^{(i)})\) 到超平面的距离可以用函数间隔来度量:

\[\hat{\gamma}^{(i)} = y^{(i)}(w^T x^{(i)} + b)\]

但函数间隔可以被 \(w, b\) 成倍缩放而改变(例如 \(w \to 2w, b \to 2b\),函数间隔翻倍但超平面不变)。规范化后得到几何间隔

\[\gamma^{(i)} = \frac{y^{(i)}(w^T x^{(i)} + b)}{\|w\|}\]

间隔 (margin):所有样本中几何间隔的最小值:

\[\gamma = \min_i \gamma^{(i)}\]

最大间隔的优化问题

\[\max_{w,b} \frac{2}{\|w\|} \quad \text{s.t.} \quad y^{(i)}(w^T x^{(i)} + b) \geq 1, \; \forall i\]

等价于(取倒数,平方,最小化):

\[\boxed{\min_{w,b} \frac{1}{2}\|w\|^2 \quad \text{s.t.} \quad y^{(i)}(w^T x^{(i)} + b) \geq 1, \; \forall i}\]

这是一个凸二次规划 (QP) 问题——目标函数是凸函数(\(\|w\|^2\) 是凸的),可行域是凸集(线性不等式的交集)。

约束中的 "1" 是一个任意的尺度选择。由于函数间隔可以缩放,我们总可以找到合适的 \(w, b\) 使得最近的样本满足 \(y^{(i)}(w^T x^{(i)} + b) = 1\)

支持向量

使 \(y^{(i)}(w^T x^{(i)} + b) = 1\) 成立的样本称为支持向量 (support vector)——它们是距超平面最近的点。

最终模型仅与支持向量有关——其他样本对决策边界没有影响。SVM 因此而得名。

二、约束优化与对偶理论

拉格朗日函数

对一般约束优化问题:

\[\min_x f(x) \quad \text{s.t.} \quad c_i(x) \leq 0 \; (i \in \mathcal{I}), \quad c_i(x) = 0 \; (i \in \mathcal{E})\]

拉格朗日函数

\[\mathcal{L}(x, \lambda, \nu) = f(x) + \sum_{i \in \mathcal{I}} \lambda_i c_i(x) + \sum_{i \in \mathcal{E}} \nu_i c_i(x)\]

其中 \(\lambda_i \geq 0\) 是不等式约束的乘子,\(\nu_i\) 是等式约束的乘子。

对偶函数与对偶问题

对偶函数\(g(\lambda, \nu) = \inf_x \mathcal{L}(x, \lambda, \nu)\)

对偶函数是原始问题最优值的下界:\(g(\lambda, \nu) \leq p^*\)弱对偶性)。

对偶问题\(\max_{\lambda \geq 0, \nu} g(\lambda, \nu)\)

强对偶性:若原始问题是凸的且满足 Slater 条件(存在严格可行点),则 \(d^* = p^*\)

KKT 条件

定理:若 \(x^*\) 是正则局部最小点,则存在乘子 \(\lambda^*, \nu^*\) 使得:

  1. 平稳性 (Stationarity)\(\nabla_x \mathcal{L}(x^*, \lambda^*, \nu^*) = 0\)
  2. 原始可行性 (Primal Feasibility)\(c_i(x^*) \leq 0\)\(i \in \mathcal{I}\)),\(c_i(x^*) = 0\)\(i \in \mathcal{E}\)
  3. 对偶可行性 (Dual Feasibility)\(\lambda_i^* \geq 0\)\(i \in \mathcal{I}\)
  4. 互补松弛 (Complementary Slackness)\(\lambda_i^* c_i(x^*) = 0\)\(i \in \mathcal{I}\)

直觉理解:在最优点 \(x^*\)\(-\nabla f(x^*)\)\(\nabla c_i(x^*)\) 平行且同方向。若约束不紧(\(c_i(x^*) < 0\)),则乘子为零。

为什么 \(\lambda^* \geq 0\) 考虑不等式约束 \(c_i(x) \leq 0\)。在最优点,\(-\nabla f(x^*)\) 指向可行域内部,而 \(\nabla c_i(x^*)\) 指向可行域外部。两者平行且同方向,故 \(\lambda_i^* \geq 0\)

凸问题中,KKT 条件是充分必要条件。

KKT 条件证明(简化版)

必要性:设 \(x^*\) 是最优解。由约束优化的一阶必要条件(Fritz John 条件),存在不全为零的 \(\mu_0^*, \lambda_i^*\) 使得:

\[\mu_0^* \nabla f(x^*) + \sum_i \lambda_i^* \nabla c_i(x^*) = 0\]

\(\mu_0^* = 0\),则约束的梯度线性相关(不满足正则性条件),矛盾。故 \(\mu_0^* > 0\),两边除以 \(\mu_0^*\) 得平稳性。\(\square\)

三、SVM 对偶问题推导

第一步:构造拉格朗日函数

引入乘子 \(\alpha_i \geq 0\)(每个样本对应一个约束):

\[\mathcal{L}(w, b, \alpha) = \frac{1}{2}\|w\|^2 - \sum_{i=1}^m \alpha_i [y^{(i)}(w^T x^{(i)} + b) - 1]\]

注意约束是 \(y^{(i)}(w^T x^{(i)} + b) - 1 \geq 0\),即 \(-[y^{(i)}(w^T x^{(i)} + b) - 1] \leq 0\)

第二步:令偏导为零

\(w\) 求导:

\[\frac{\partial \mathcal{L}}{\partial w} = w - \sum_{i=1}^m \alpha_i y^{(i)} x^{(i)} = 0 \implies \boxed{w = \sum_{i=1}^m \alpha_i y^{(i)} x^{(i)}}\]

\(b\) 求导:

\[\frac{\partial \mathcal{L}}{\partial b} = -\sum_{i=1}^m \alpha_i y^{(i)} = 0 \implies \boxed{\sum_{i=1}^m \alpha_i y^{(i)} = 0}\]

第三步:代入消去 \(w, b\)

\(w = \sum_i \alpha_i y^{(i)} x^{(i)}\) 代入 \(\mathcal{L}\)

\[\begin{aligned} \mathcal{L} &= \frac{1}{2}\left\|\sum_i \alpha_i y^{(i)} x^{(i)}\right\|^2 - \sum_i \alpha_i \left[y^{(i)}\left(\sum_j \alpha_j y^{(j)} x^{(j)}\right)^T x^{(i)} + b y^{(i)} - 1\right] \\ &= \frac{1}{2}\sum_{i,j} \alpha_i \alpha_j y^{(i)} y^{(j)} x^{(i)T} x^{(j)} - \sum_{i,j} \alpha_i \alpha_j y^{(i)} y^{(j)} x^{(i)T} x^{(j)} - b\underbrace{\sum_i \alpha_i y^{(i)}}_{=0} + \sum_i \alpha_i \\ &= \sum_i \alpha_i - \frac{1}{2}\sum_{i,j} \alpha_i \alpha_j y^{(i)} y^{(j)} x^{(i)T} x^{(j)} \end{aligned}\]

对偶问题

\[\boxed{\max_\alpha \sum_{i=1}^m \alpha_i - \frac{1}{2}\sum_{i,j=1}^m \alpha_i \alpha_j y^{(i)} y^{(j)} x^{(i)T} x^{(j)}}\]
\[\text{s.t.} \quad \alpha_i \geq 0, \quad \sum_{i=1}^m \alpha_i y^{(i)} = 0\]

关键观察:对偶问题中,数据只以内积 \(x^{(i)T} x^{(j)}\) 的形式出现——这为核技巧埋下伏笔。

KKT 互补松弛的应用

\[\alpha_i [y^{(i)}(w^T x^{(i)} + b) - 1] = 0\]
  • \(\alpha_i = 0\):非支持向量,对模型无贡献
  • \(\alpha_i > 0\):支持向量,\(y^{(i)}(w^T x^{(i)} + b) = 1\)

支持向量是训练集中"最难"的样本——它们距决策边界最近。

求解 \(b\)

对任意支持向量 \((x^{(s)}, y^{(s)})\)\(\alpha_s > 0\)):

\[y^{(s)}(w^T x^{(s)} + b) = 1 \implies b = y^{(s)} - w^T x^{(s)}\]

为提高鲁棒性,通常使用所有支持向量求解的平均值:

\[b = \frac{1}{|S|}\sum_{s \in S} \left(y^{(s)} - \sum_{i=1}^m \alpha_i y^{(i)} x^{(i)T} x^{(s)}\right)\]

四、SMO 算法

SMO (Sequential Minimum Optimization) 是求解 SVM 对偶问题的高效算法 [Platt, 1998]。

基本思路

每次选择两个变量 \(\alpha_i, \alpha_j\),固定其他参数,求解对偶问题更新 \(\alpha_i, \alpha_j\)

为什么选两个?

由约束 \(\sum_k \alpha_k y^{(k)} = 0\),若只选一个变量,它被其他变量完全确定,没有优化空间。选两个变量时,可以用一个表示另一个。

求解过程

固定 \(\alpha_i, \alpha_j\) 以外的参数,令 \(\alpha_i y^{(i)} + \alpha_j y^{(j)} = -\sum_{k \neq i,j} \alpha_k y^{(k)} = \zeta\)(常数)。

\(\alpha_j = \frac{\zeta - \alpha_i y^{(i)}}{y^{(j)}}\)。代入对偶问题(关于 \(\alpha_i\) 的二次函数),求导令其为零,得闭式解。

再根据约束 \(0 \leq \alpha_i \leq C\)(软间隔时)进行裁剪。

偏差项 \(b\) 的更新

每步更新 \(\alpha_i, \alpha_j\) 后,根据 KKT 条件更新 \(b\)

五、核函数

特征空间映射

若原始空间线性不可分,将样本映射到更高维的特征空间

\[\phi: \mathbb{R}^d \to \mathbb{R}^D, \quad x \mapsto \phi(x)\]

在特征空间中,数据可能线性可分。

定理:如果原始空间是有限维(属性数有限),那么一定存在一个高维特征空间使样本可分。

核技巧

对偶问题中数据只以内积形式出现。定义核函数

\[\kappa(x, z) = \phi(x)^T \phi(z)\]

绕过显式映射——直接计算内积,无需知道 \(\phi\) 的具体形式。

例子:设 \(x = (x_1, x_2)\)\(\phi(x) = (x_1^2, x_2^2, \sqrt{2}x_1 x_2)\)

\[\phi(x)^T \phi(z) = x_1^2 z_1^2 + x_2^2 z_2^2 + 2x_1 x_2 z_1 z_2 = (x_1 z_1 + x_2 z_2)^2 = (x^T z)^2\]

\(\kappa(x, z) = (x^T z)^2\) 对应一个 3 维特征空间的内积,但直接计算只需要 2 维的运算。

Mercer 定理

定理:对称函数 \(\kappa(x, z)\) 可作为核函数,当且仅当对任意有限样本集,其对应的核矩阵 \(K_{ij} = \kappa(x^{(i)}, x^{(j)})\) 是半正定的。

常用核函数

核函数 公式 特点
线性核 \(\kappa(x, z) = x^T z\) 最简单,文本数据常用
多项式核 \(\kappa(x, z) = (x^T z + c)^d\) 有限维特征空间
高斯核 (RBF) \(\kappa(x, z) = \exp(-\frac{\|x-z\|^2}{2\sigma^2})\) 无穷维特征空间
Sigmoid 核 \(\kappa(x, z) = \tanh(\beta x^T z + \theta)\) 类似神经网络

核函数的组合:若 \(\kappa_1\)\(\kappa_2\) 是核函数,则对任意正数 \(a_1, a_2\) 和任意函数 \(g(x)\): - \(a_1 \kappa_1 + a_2 \kappa_2\) 是核函数 - \(g(x) \kappa_1(x, z) g(z)\) 是核函数 - \(\kappa_1(x, z) \cdot \kappa_2(x, z)\) 是核函数

"核函数选择"是决定 SVM 性能的关键。基本经验:文本数据常用线性核,情况不明时先尝试高斯核。

核函数的直觉

高斯核 \(\kappa(x, z) = \exp(-\frac{\|x-z\|^2}{2\sigma^2})\) 的直觉: - 当 \(x = z\) 时,\(\kappa = 1\)(最大相似度) - 当 \(\|x - z\| \to \infty\) 时,\(\kappa \to 0\)(无相似度) - \(\sigma\) 控制"邻域大小":\(\sigma\) 越大,越远的点也被认为"相似"

任何核函数隐式定义了一个再生核希尔伯特空间 (RKHS)

六、软间隔

动机

现实中数据很难完美线性可分。即使在特征空间中,也可能存在噪声或异常值。

即便貌似线性可分,也很难断定是否是因过拟合造成的。

优化目标

引入松弛变量 \(\xi_i \geq 0\)

\[\min_{w,b,\xi} \frac{1}{2}\|w\|^2 + C\sum_{i=1}^m \xi_i\]
\[\text{s.t.} \quad y^{(i)}(w^T x^{(i)} + b) \geq 1 - \xi_i, \quad \xi_i \geq 0\]

\(C > 0\) 是惩罚参数:\(C\) 越大,对误分类的惩罚越重。

  • \(\xi_i = 0\):样本被正确分类且在间隔带外
  • \(0 < \xi_i < 1\):样本被正确分类但在间隔带内
  • \(\xi_i \geq 1\):样本被误分类

替代损失

原始的 \(0/1\) 损失函数 \(\ell_{0/1}(z) = \mathbb{I}(z < 0)\) 非凸、非连续,不易优化。用替代损失 (surrogate loss) 函数:

损失函数 公式 特点
hinge 损失 \(\max(0, 1-z)\) SVM 使用,保持稀疏性
指数损失 \(e^{-z}\) AdaBoost 使用
对率损失 \(\log(1+e^{-z})\) 对率回归使用

替代损失是 \(0/1\) 损失的上界。采用替代损失后,SVM 仍保持解的稀疏性。

软间隔的对偶问题

\[\max_\alpha \sum_i \alpha_i - \frac{1}{2}\sum_{i,j} \alpha_i \alpha_j y^{(i)} y^{(j)} x^{(i)T} x^{(j)}\]
\[\text{s.t.} \quad 0 \leq \alpha_i \leq C, \quad \sum_i \alpha_i y^{(i)} = 0\]

与硬间隔的区别:多了上界约束 \(\alpha_i \leq C\)

正则化视角

SVM 可以写为正则化框架:

\[\min_f \frac{1}{m}\sum_{i=1}^m \max(0, 1 - y^{(i)} f(x^{(i)})) + \lambda \|f\|_\mathcal{H}^2\]
  • 第一项是经验风险(hinge 损失)
  • 第二项是结构风险(正则化项)
  • \(\lambda\) 控制两者权衡

七、支持向量回归 (SVR)

基本思路:允许模型输出与实际值间存在 \(2\epsilon\) 的偏差。

\[\min_{w,b} \frac{1}{2}\|w\|^2 + C\sum_{i=1}^m (\xi_i + \hat{\xi}_i)\]
\[\text{s.t.} \quad y^{(i)} - (w^T x^{(i)} + b) \leq \epsilon + \xi_i$$ $$(w^T x^{(i)} + b) - y^{(i)} \leq \epsilon + \hat{\xi}_i$$ $$\xi_i, \hat{\xi}_i \geq 0\]

\(\epsilon\)-不敏感损失:落入 \(2\epsilon\) 间隔带的样本不计算损失。

八、核方法与表示定理

表示定理

定理:对任意单调递增函数 \(\Omega\) 和任意非负损失函数 \(\ell\),优化问题

\[\min_f \ell(f(x^{(1)}), \ldots, f(x^{(m)})) + \Omega(\|f\|_\mathcal{H})\]

的解总可写为核函数的线性组合:

\[f(x) = \sum_{i=1}^m \alpha_i \kappa(x^{(i)}, x)\]

核化方法

基于表示定理,很多线性模型可"核化":

  • 核化 LDA (KLDA):在特征空间中做线性判别分析
  • 核岭回归 (KRR)

岭回归的对偶

目标:\(\min_w \frac{1}{2}\|Y - X^T w\|^2 + \frac{\alpha}{2}\|w\|^2\)

闭式解:\(w^* = (XX^T + \alpha I)^{-1}XY\)

Woodbury 恒等式\((A + UCV)^{-1} = A^{-1} - A^{-1}U(C^{-1} + VA^{-1}U)^{-1}VA^{-1}\)

对偶形式:\(w^* = X(X^T X + \alpha I)^{-1}Y\)

核化后:\(f(x) = \sum_i \alpha_i \kappa(x^{(i)}, x)\),其中 \(\alpha = (K + \alpha I)^{-1}Y\)


SVM 与统计学习简史

年代 事件
1963 Vapnik 提出支持向量概念
1968 VC 维 [Vapnik & Chervonenkis]
1974 结构风险最小化原则
1995 SVM 论文发表 + 《The Nature of Statistical Learning》出版
1998 SVM 在文本分类上取得巨大成功
1998 《Statistical Learning Theory》出版

Vladimir Vapnik (1936-):"Nothing is more practical than a good theory."

George E. P. Box (1919-2013):"All models are wrong, but some are useful."


2026.06