Skip to content

支持向量机(SVM)第一部分:理论基础与线性模型

1. 背景与核心概念

支持向量机(SVM) 是由 Vapnik 团队在 AT&T 贝尔实验室开发的监督学习算法:

  • 核心目标:寻找最优分类超平面,最大化两类数据点的间隔(Margin)
  • 关键特性
    • 最大间隔分类器(Max Margin Classifier)
    • 最初用于分类,后扩展至回归和时间序列预测
    • 曾作为文本处理的强基准模型(Strong Baseline)
  • 核心洞察
    当数据线性可分时,存在无数个可行超平面。
    SVM选择 间隔最大 的超平面,提升分类鲁棒性和泛化能力。

2. 问题定义与数学形式化

  • 输入:训练样本 (x1,y1),(x2,y2),,(xN,yN)(x_1, y_1), (x_2, y_2), \ldots, (x_N, y_N)
    其中 xiRnx_i \in \mathbb{R}^n(特征向量),yi{1,+1}y_i \in \{-1, +1\}(类别标签)
  • 目标:找到分类超平面 f(x)=w,x+b=0f(x) = \langle w, x \rangle + b = 0 满足:f(x_i) \begin{cases} > 0 & \text{若 } y_i = +1 \\ < 0 & \text{若 } y_i = -1 \end{cases}
  • 决策规则:预测标签为 sign(f(x))\text{sign}(f(x)) 这个函数的各个部分及其意义如下: 函数的各个部分及其意义

3. 线性可分与间隔最大化

3.1 支持超平面与间隔定义
  • 支持超平面:与分类超平面平行且距离相等的两个平面:\langle w, x \rangle + b = +1 \quad \text{和} \quad \langle w, x \rangle + b = -1
  • 间隔公式

    Margin=2w2\text{Margin} = \frac{2}{\|w\|_2}

推导 1(几何投影法)
边界超平面到原点的距离:

ρ1=1bw2,ρ2=1bw2\rho_1 = \frac{|1 - b|}{\|w\|_2}, \quad \rho_2 = \frac{|-1 - b|}{\|w\|_2}

间隔 = ρ1ρ2=2w2|\rho_1 - \rho_2| = \frac{2}{\|w\|_2}

推导 2(距离公式法)

  1. xx 到超平面的距离:w,x+bw\frac{|\langle w, x \rangle + b|}{\|w\|}
  2. 支持超平面上的点满足 w,x+b=1|\langle w, x \rangle + b| = 1
  3. 两支持超平面间距 = 1w+1w=2w\frac{1}{\|w\|} + \frac{1}{\|w\|} = \frac{2}{\|w\|}
3.2 优化问题原始形式

最大化间隔等价于最小化 w22\|w\|_2^2(为方便求导,目标函数取 12w2\frac{1}{2}\|w\|^2):

minw,b12w22s.t.yi(w,xi+b)1,i=1,,N\begin{aligned} \min_{w,b} &\quad \frac{1}{2} \|w\|_2^2 \\ \text{s.t.} &\quad y_i (\langle w, x_i \rangle + b) \geq 1, \quad \forall i = 1,\ldots,N \end{aligned}

约束条件物理意义
确保所有样本被正确分类且位于支持超平面外侧(yi(w,xi+b)1y_i(\langle w, x_i \rangle + b) \geq 1


4. 对偶问题与拉格朗日乘子法

4.1 拉格朗日函数构造

引入拉格朗日乘子 αi0\alpha_i \geq 0

L(w,b,α)=12w22i=1Nαi[yi(w,xi+b)1]L(w,b,\alpha) = \frac{1}{2} \|w\|_2^2 - \sum_{i=1}^N \alpha_i \left[ y_i (\langle w, x_i \rangle + b) - 1 \right]

4.2 KKT 条件

最优解需满足:

{Lw=wiαiyixi=0Lb=iαiyi=0αi[yi(w,xi+b)1]=0αi0\begin{cases} \frac{\partial L}{\partial w} = w - \sum_i \alpha_i y_i x_i = 0 \\ \frac{\partial L}{\partial b} = -\sum_i \alpha_i y_i = 0 \\ \alpha_i \left[ y_i(\langle w, x_i \rangle + b) - 1 \right] = 0 \\ \alpha_i \geq 0 \end{cases}

4.3 对偶问题形式

代入 KKT 条件化简得:

minα12i=1Nj=1Nαiαjyiyjxi,xji=1Nαis.t.i=1Nαiyi=0,αi0i\begin{aligned} \min_{\alpha} &\quad \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j \langle x_i, x_j \rangle - \sum_{i=1}^N \alpha_i \\ \text{s.t.} &\quad \sum_{i=1}^N \alpha_i y_i = 0, \quad \alpha_i \geq 0 \quad \forall i \end{aligned}

对偶问题优势

  • 复杂度取决于样本数而非特征维数
  • 显式引入内积 xi,xj\langle x_i, x_j \rangle → 为核函数铺垫
  • 物理意义:最大化样本间的"协方差作用"

5. 支持向量(Support Vectors)

5.1 定义与性质
  • 支持向量:满足 αi>0\alpha_i > 0 的样本点
  • 几何意义:位于支持超平面上的点(yi(w,xi+b)=1y_i(\langle w, x_i \rangle + b) = 1
  • 关键性质
    1. ww 的表达式:w=iαiyixiw = \sum_{i} \alpha_i y_i x_i(仅由支持向量决定)
    2. 稀疏性:多数 αi=0\alpha_i = 0,非支持向量不影响模型
    3. 决策函数简化为:

      f(x)=iSVαiyixi,x+bf(x) = \sum_{i \in SV} \alpha_i y_i \langle x_i, x \rangle + b

    4. 偏置 bb 的计算:b=ykw,xkb = y_k - \langle w, x_k \ranglexkx_k 为任意支持向量)

生活比喻
支持向量就像支撑帐篷的关键柱子,其他样本是固定绳子的地钉——去掉地钉帐篷仍能站立,但去掉柱子帐篷会倒塌。


6. 算法流程总结

  1. 输入:训练集 {(xi,yi)}i=1N\{(x_i, y_i)\}_{i=1}^N
  2. 求解对偶问题

    minα12i,jαiαjyiyjxi,xjiαis.t.iαiyi=0,αi0\min_{\alpha} \frac{1}{2} \sum_{i,j} \alpha_i \alpha_j y_i y_j \langle x_i, x_j \rangle - \sum_i \alpha_i \quad \text{s.t.} \quad \sum_i \alpha_i y_i = 0, \alpha_i \geq 0

  3. 计算参数
    • w=iαiyixiw = \sum_i \alpha_i y_i x_i
    • b=ykw,xkb = y_k - \langle w, x_k \ranglexkx_k 为支持向量)
  4. 预测y^=sign(w,x+b)\hat{y} = \text{sign} \left( \langle w, x \rangle + b \right)

7. SVM vs 其他分类器

分类器适用场景决策边界核心特点
决策树离散特征,规则清晰轴平行分段可解释性强
贝叶斯特征独立,概率估计概率等高线需要先验分布
K近邻小样本,局部相似不规则多边形计算开销大
SVM高维数据,线性/非线性最大间隔超平面泛化能力强

文本分类实例

  • 正例: "I love Iron Man!" → 特征 ["love":1, "Iron":1, "Man":1]
  • 负例: "It looks ugly..." → 特征 ["ugly":1]
  • 支持向量: "awesome", "brash" 等关键判别词对应的样本

8. 核心公式总结

  1. 原始优化问题

    minw,b12w22s.t.yi(w,xi+b)1\min_{w,b} \frac{1}{2} \|w\|_2^2 \quad \text{s.t.} \quad y_i(\langle w, x_i \rangle + b) \geq 1

  2. 对偶问题

    minα12i,jαiαjyiyjxi,xjiαis.t.iαiyi=0,αi0\min_{\alpha} \frac{1}{2} \sum_{i,j} \alpha_i \alpha_j y_i y_j \langle x_i, x_j \rangle - \sum_i \alpha_i \quad \text{s.t.} \quad \sum_i \alpha_i y_i = 0, \alpha_i \geq 0

  3. 决策函数

    f(x)=iSVαiyixi,x+bf(x) = \sum_{i \in SV} \alpha_i y_i \langle x_i, x \rangle + b


9. 重要说明

  • 命名由来:解仅由支持向量决定,模型复杂度与支持向量数量相关
  • 后续扩展
    1. 线性不可分情况:引入松弛变量 ξi\xi_i(后续讲解)
    2. 非线性问题:通过核函数 K(xi,xj)K(x_i, x_j) 替换内积(后续讲解)
    3. 回归问题:支持向量回归(SVR)

支持向量机(SVM)第二部分:线性不可分与核方法详解


一、线性不可分:软间隔与松弛变量

1. 核心问题与解决方案

  • 问题背景:当数据无法被完美线性分割时(存在噪声或重叠),硬间隔SVM失效
  • 创新方案:引入松弛变量(Slack Variables)εi\varepsilon_i 允许部分样本违规
  • 优化目标:平衡间隔最大化和分类错误最小化

    minw,b,ε12w2+Ci=1Nεi\min_{w,b,\varepsilon} \frac{1}{2} \|w\|^2 + C \sum_{i=1}^N \varepsilon_i

    s.t.yi(w,xi+b)1εi,εi0\text{s.t.} \quad y_i(\langle w, x_i \rangle + b) \geq 1 - \varepsilon_i, \quad \varepsilon_i \geq 0

参数 CC 的物理意义

  • CC → ∞ :退化为硬间隔SVM(不容忍任何错误)
  • CC → 0 :无限宽间隔(忽略所有分类错误) 实际应用:通过交叉验证选择最佳 CC

2. 松弛变量的几何解释

εi\varepsilon_i样本位置分类状态
= 0在间隔外侧完全正确分类
(0,1]在间隔内部正确但置信度低
> 1越过决策边界错误分类

3. 损失函数视角

  • Hinge损失hinge(z)=max(0,1z)\ell_{\text{hinge}}(z) = \max(0, 1 - z)z=yif(xi)z=y_i f(x_i))
  • 软间隔SVM等价于

    minw,b12w2+Ci=1Nmax(0,1yif(xi))\min_{w,b} \frac{1}{2} \|w\|^2 + C \sum_{i=1}^N \max(0, 1 - y_i f(x_i))

  • 对比其他损失
    • 0/1损失:0/1(z)=1z<0\ell_{0/1}(z) = \mathbf{1}_{z<0}(非凸,难优化)
    • 对率损失:log(z)=log(1+ez)\ell_{\log}(z) = \log(1+e^{-z})(逻辑回归使用)

Hinge损失的优势
仅关心分类边界附近的样本(支持向量),对远离边界的正确分类点不敏感


二、核函数技巧:升维解决非线性问题

1. 核心思想与数学原理

  • 基本问题:原始空间线性不可分(如异或问题)
  • 解决方案:通过映射 Φ\Phi 将数据升维到特征空间

    Φ:RnF,dim(F)n\Phi: \mathbb{R}^n \to \mathcal{F}, \quad \text{dim}(\mathcal{F}) \gg n

  • 核技巧:避免显式计算 Φ(x)\Phi(x),直接定义核函数 k(xi,xj)=Φ(xi),Φ(xj)k(x_i,x_j)=\langle \Phi(x_i),\Phi(x_j) \rangle
  • 对偶问题转化为

    minα12i,jαiαjyiyjk(xi,xj)iαi\min_{\alpha} \frac{1}{2} \sum_{i,j} \alpha_i \alpha_j y_i y_j k(x_i, x_j) - \sum_i \alpha_i

    s.t.iαiyi=0,0αiC\text{s.t.} \quad \sum_i \alpha_i y_i = 0, \quad 0 \leq \alpha_i \leq C

2. 常用核函数详解

核函数表达式特点适用场景
线性核k(x,y)=x,yk(x,y) = \langle x, y \rangle退化回线性SVM高维稀疏数据
多项式核k(x,y)=(x,y+1)dk(x,y) = (\langle x, y \rangle + 1)^ddd控制复杂度图像分类
高斯核 (RBF)k(x,y)=exp(xy22σ2)k(x,y) = \exp(-\frac{|x-y|^2}{2\sigma^2})σ\sigma控制带宽万能核,通用问题
Sigmoid核k(x,y)=tanh(ηx,y+v)k(x,y) = \tanh(\eta \langle x,y \rangle + v)类似神经网络文本分类

3. 核函数构造原理

  • Mercer定理:合法核函数必须对应半正定Gram矩阵
  • 构造方法
    1. 显式定义 Φ\Phi(如多项式特征)
    2. 组合简单核:
      • knew=k1+k2k_{\text{new}} = k_1 + k_2
      • knew=ck1k_{\text{new}} = c \cdot k_1
      • knew=exp(k1)k_{\text{new}} = \exp(k_1)
    3. 高斯核的分解证明:

      kGauss(x,y)=exp(γxy2)=exp(γx,x)exp(2γx,y)exp(γy,y)k_{\text{Gauss}}(x,y) = \exp\left( -\gamma \|x-y\|^2 \right) = \exp(-\gamma\langle x,x\rangle) \cdot \exp(2\gamma\langle x,y\rangle) \cdot \exp(-\gamma\langle y,y\rangle)

4. 核函数应用示例

  • 多项式核d=2d=2):

    k((x1x2),(y1y2))=(x1y1+x2y2)2k\left(\begin{pmatrix}x_1\\x_2\end{pmatrix}, \begin{pmatrix}y_1\\y_2\end{pmatrix}\right) = (x_1y_1 + x_2y_2)^2

    对应特征映射:

    Φ(x)=(x12,2x1x2,x22)\Phi(x) = (x_1^2, \sqrt{2}x_1x_2, x_2^2)

    几何意义:将二维点映射到三维抛物面实现线性可分


三、SVM实战:图像分类案例

Caltech101数据集实验

  • 数据:9144张图,102类别(101物体+背景)
  • 流程
  • 关键步骤
    1. 预处理:转灰度图,缩放至最长边120像素
    2. 特征提取:底层视觉特征(LLC)
    3. 分类器:高斯核SVM
  • 结果
    每类训练样本数测试准确率
    1570.16%
    3073.44%

结论:SVM在小样本场景下仍表现强劲,适合高维特征分类


四、SVM优缺点总结

优点

  1. 理论完备:最大间隔导出凸优化问题,保证全局最优
  2. 泛化能力强:结构风险最小化原则
  3. 核技巧:优雅解决非线性问题,避免维度灾难

    实际效果:高斯核SVM在MNIST数据集上可达99%+准确率

  4. 稀疏解:决策函数仅依赖支持向量,预测高效

缺点

  1. 核函数选择:依赖经验规则(如文本用线性核,图像用高斯核)
  2. 超参数敏感CCσ\sigma 需精细调优
  3. 计算复杂度:训练时间复杂度 O(N2N3)O(N^2\sim N^3),大数据需优化
    • 解决方案:使用LIBLINEAR(线性核)或随机采样

工业级工具


关键公式回顾

1. 软间隔原始问题

minw,b,ε12w2+Ci=1Nεis.t.yif(xi)1εi,εi0\min_{w,b,\varepsilon} \frac{1}{2} \|w\|^2 + C \sum_{i=1}^N \varepsilon_i \quad \text{s.t.} \quad y_i f(x_i) \geq 1 - \varepsilon_i, \varepsilon_i \geq 0

2. 核化对偶问题

minα12i,jαiαjyiyjk(xi,xj)iαis.t.iαiyi=0,0αiC\min_{\alpha} \frac{1}{2} \sum_{i,j} \alpha_i \alpha_j y_i y_j k(x_i, x_j) - \sum_i \alpha_i \quad \text{s.t.} \quad \sum_i \alpha_i y_i = 0, 0 \leq \alpha_i \leq C

3. 决策函数

f(x)=iSVαiyik(xi,x)+bf(x) = \sum_{i \in SV} \alpha_i y_i k(x_i, x) + b

知识如风,常伴吾身