配音

Lecture 8-10:支持向量机

课程简介

函数间隔与几何间隔、对偶问题、核函数、SMO 算法。

🎬 本课程视频:Stanford CS229 — 斯坦福机器学习


一、支持向量机概述

支持向量机(Support Vector Machine, SVM)是机器学习中最强大、最优雅的分类算法之一。它在小样本、非线性、高维分类问题中表现出色。

1.1 从逻辑回归到 SVM

回顾逻辑回归:$h_\theta(x) = g(\theta^T x)$。当 $\theta^T x \gg 0$ 时,$P(y=1) \approx 1$;当 $\theta^T x \ll 0$ 时,$P(y=0) \approx 1$。

SVM 的核心思想是:不仅要正确分类,还要最大化分类的"信心"——即最大化样本到决策边界的距离。

二、函数间隔与几何间隔

2.1 函数间隔

给定训练样本 $(x^{(i)}, y^{(i)})$,函数间隔(Functional Margin)定义为:

$$\hat{\gamma}^{(i)} = y^{(i)} (\theta^T x^{(i)} + b)$$

当 $y^{(i)} = 1$ 时,希望 $\theta^T x + b \gg 0$;当 $y^{(i)} = -1$ 时,希望 $\theta^T x + b \ll 0$。函数间隔越大,分类越"有信心"。

整个训练集的函数间隔定义为所有样本中最小的那个:$\hat{\gamma} = \min_i \hat{\gamma}^{(i)}$。

2.2 几何间隔

函数间隔的一个问题是:如果按比例缩放 $\theta$ 和 $b$(如 $2\theta, 2b$),函数间隔会翻倍,但决策边界没有变化。因此我们引入几何间隔(Geometric Margin)。

几何间隔是样本到决策边界的欧氏距离

$$\gamma^{(i)} = y^{(i)} \left( \frac{\theta^T x^{(i)} + b}{|\theta|} \right)$$

几何间隔不受参数缩放的影响——它是真正有意义的"距离"度量。

2.3 最优间隔分类器

SVM 的目标是最大化最小几何间隔:

$$\max_{\gamma, \theta, b} \gamma \quad \text{s.t.} \quad y^{(i)} (\theta^T x^{(i)} + b) \geq \gamma |\theta|, \quad i=1,...,m$$

通过归一化 $|\theta| = 1/\gamma$,可以转化为一个更简洁的优化问题。

三、对偶问题与核技巧

3.1 拉格朗日对偶性

原问题(Primal Problem):

$$\min_{\theta} \frac{1}{2} |\theta|^2 \quad \text{s.t.} \quad y^{(i)} (\theta^T x^{(i)} + b) \geq 1, \quad i=1,...,m$$

构造拉格朗日函数:

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

其中 $\alpha_i \geq 0$ 是拉格朗日乘子。

对偶问题(Dual Problem):

$$\max_{\alpha} \sum_{i=1}^{m} \alpha_i - \frac{1}{2} \sum_{i,j=1}^{m} \alpha_i \alpha_j y^{(i)} y^{(j)} \langle x^{(i)}, x^{(j)} \rangle$$

约束条件:$\alpha_i \geq 0$ 和 $\sum_{i=1}^{m} \alpha_i y^{(i)} = 0$。

从对偶解可以恢复原参数:

$$\theta = \sum_{i=1}^{m} \alpha_i y^{(i)} x^{(i)}$$

KKT 条件:$\alpha_i > 0$ 的样本就是支持向量(Support Vectors)——即那些恰好位于间隔边界上的样本。

3.2 为什么需要对偶形式

对偶形式的重要结果是:决策函数只依赖于训练样本之间的内积 $\langle x^{(i)}, x^{(j)} \rangle$:

$$h(x) = \text{sign} \left( \sum_{i=1}^{m} \alpha_i y^{(i)} \langle x^{(i)}, x \rangle + b \right)$$

这意味着我们可以用核技巧(Kernel Trick) 将内积替换为核函数,实现高维甚至无限维空间中的线性分类。

3.3 核函数

核函数 $K(x^{(i)}, x^{(j)}) = \langle \phi(x^{(i)}), \phi(x^{(j)}) \rangle$,其中 $\phi$ 是将原始特征映射到高维空间的函数。

线性核:$K(x, z) = x^T z$

多项式核:$K(x, z) = (x^T z + c)^d$

高斯核(RBF 核):$K(x, z) = \exp\left(-\frac{|x - z|^2}{2\sigma^2}\right)$

RBF 核将数据映射到无限维空间——因为指数函数的泰勒展开包含所有多项式项。

核技巧的美妙之处在于:我们不需要显式计算 $\phi(x)$,只需要计算核函数的值。RBF 核的 $\phi(x)$ 是无限维的,但我们只需要计算一个指数函数,计算量不变。

3.4 核的有效性

Mercer 定理:一个函数 $K$ 是有效核的充要条件是,对于任意有限数据集,核矩阵 $K_{ij} = K(x^{(i)}, x^{(j)})$ 是半正定的。

四、SMO 算法

4.1 坐标上升

在介绍 SMO 之前,先理解坐标上升(Coordinate Ascent)的思想:每次只优化一个变量,固定其他变量,循环直到收敛。

对于 SVM 的对偶问题,约束 $\sum \alpha_i y^{(i)} = 0$ 意味着不能独立地改变单个 $\alpha_i$。

4.2 SMO 算法

SMO(Sequential Minimal Optimization)由 John Platt 在 1998 年提出,每次选择两个 $\alpha_i, \alpha_j$ 优化,固定其他变量。

两个变量的子问题有闭式解,因此 SMO 可以高效求解 SVM。

SMO 算法步骤:
1. 选择一对要优化的 $\alpha_i, \alpha_j$(选择违反 KKT 条件最严重的)
2. 固定其他变量,求解只有 $\alpha_i, \alpha_j$ 的子问题
3. 更新 $\alpha_i, \alpha_j$
4. 更新偏置 $b$
5. 重复直到收敛

选择启发式:
- 外层循环:优先选择违反 KKT 条件的 $\alpha_i$
- 内层循环:选择使 $|E_i - E_j|$ 最大的 $\alpha_j$

4.3 软间隔 SVM

现实中数据往往不是线性可分的。引入松弛变量 $\xi_i$ 允许一些样本被误分类:

$$\min_{\theta, b, \xi} \frac{1}{2} |\theta|^2 + C \sum_{i=1}^{m} \xi_i$$

$$\text{s.t.} \quad y^{(i)} (\theta^T x^{(i)} + b) \geq 1 - \xi_i, \quad \xi_i \geq 0$$

$C$ 是正则化参数——控制间隔大小和分类错误的权衡。$C$ 越大,对错误分类的惩罚越大。

from sklearn.svm import SVC

# 线性 SVM
svm_linear = SVC(kernel='linear', C=1.0)
svm_linear.fit(X_train, y_train)

# RBF 核 SVM
svm_rbf = SVC(kernel='rbf', gamma='scale', C=1.0)
svm_rbf.fit(X_train, y_train)

五、总结

  1. SVM 通过最大化几何间隔来寻找最优分类超平面
  2. 函数间隔受参数缩放影响,几何间隔是真正有意义的距离
  3. 对偶问题将 SVM 转化为仅依赖样本内积的形式
  4. 核技巧让 SVM 在高效计算的同时实现非线性分类
  5. SMO 算法高效求解 SVM 对偶问题
  6. 软间隔通过引入松弛变量处理线性不可分情况

六、SVM 实践指南

6.1 SVM 参数调优

SVM 的主要超参数及其影响:

C(正则化参数):控制对误分类的惩罚力度。
- C 大:更严格的分类,训练误差低但可能过拟合
- C 小:允许更多误分类,但间隔更大,泛化能力更强

γ(gamma,RBF 核参数):控制高斯核的宽度。
- γ 大:核函数衰减快,每个支持向量的影响范围小,决策边界复杂(易过拟合)
- γ 小:核函数衰减慢,每个支持向量的影响范围大,决策边界平滑(易欠拟合)

在实践中,通常使用网格搜索或随机搜索配合交叉验证来选择 C 和 γ。

6.2 特征缩放

SVM 对特征尺度非常敏感——因为决策边界由样本间距离决定。如果不做特征缩放,尺度大的特征会主导距离计算。务必在训练 SVM 前对特征做标准化或归一化。

6.3 SVM 与逻辑回归的选择

角度 SVM 逻辑回归
特征数 n >> 样本数 m 效果可能不佳 通常更好(正则化效果好)
样本数 m >> 特征数 n SVM 可以高效处理 逻辑回归也表现良好
特征数 n 小,样本数 m 适中 带核函数的 SVM 效果好 需要特征工程
非线性决策边界 核技巧自然支持 需要手动特征变换
概率输出 需要额外校准 直接输出概率
大规模数据 SMO 训练较慢 SGD 训练高效

6.4 核函数选择指南

核函数的可容许性条件

并非所有函数 $K(x, z)$ 都可以作为核函数。Mercer 定理给出了核函数的可容许性条件:一个对称函数 $K(x, z)$ 可以表示为某个特征映射 $\phi(x)$ 的内积 $\langle\phi(x), \phi(z)\rangle$ 的充要条件是,对于任意有限个数据点,核矩阵 $K$ 是半正定的。核矩阵定义为 $K_{ij} = K(x^{(i)}, x^{(j)})$。

核函数的一个重要性质是封闭性——两个核函数的和、积、以及常数倍仍然是核函数。最常用的核函数组合包括:

$$K(x, z) = (x^Tz + c)^d \quad \text{(多项式核)}$$
$$K(x, z) = \exp\left(-\frac{||x-z||^2}{2\sigma^2}\right) \quad \text{(RBF核)}$$
$$K(x, z) = \tanh(\kappa x^Tz + \theta) \quad \text{(Sigmoid核)}$$

其中 RBF 核(高斯核)等价于无穷维特征空间的内积,因此可以逼近任意复杂的决策边界。

延伸阅读