ARTICLE

支持向量机 (Support Vector Machine, SVM)

支持向量机 (Support Vector Machine, SVM) 支持向量机(Support Vector Machine,简称SVM)是一种经典的监督学习算法,广泛用于分类和回归分析。SVM的核心思想是在特征空间中寻找一个超平面,使得不同类别的样本被尽可能宽地分隔开。该算法由Vapnik及其合作者于20世纪90年代提出,建立在统计学习理论(Stati

浏览 0 更新 2026-07-20

支持向量机 (Support Vector Machine, SVM)

支持向量机(Support Vector Machine,简称SVM)是一种经典的监督学习算法,广泛用于分类回归分析。SVM的核心思想是在特征空间中寻找一个超平面,使得不同类别的样本被尽可能宽地分隔开。该算法由Vapnik及其合作者于20世纪90年代提出,建立在统计学习理论(Statistical Learning Theory)和结构风险最小化(Structural Risk Minimization, SRM)原则之上,具有坚实的理论基础和优秀的泛化能力。

基本概念:线性可分与最大间隔分类器

考虑一个二分类问题。设有训练样本集:

{(xi,yi)}i=1n,xiRp,  yi{1,+1}\{(\mathbf{x}_i, y_i)\}_{i=1}^n, \quad \mathbf{x}_i \in \mathbb{R}^p, \; y_i \in \{-1, +1\}

其中 xi\mathbf{x}_i 为特征向量,yiy_i 为类别标签。

线性可分的情况下,存在一个超平面 wx+b=0\mathbf{w} \cdot \mathbf{x} + b = 0 能够完全分开两类样本。SVM的目标不仅是找到这样一个超平面,而是要找到使两类样本之间的间隔(Margin)最大化的超平面。

间隔定义为所有训练样本到分割超平面的最小距离。若将超平面参数标准化为:

yi(wxi+b)1,i=1,,ny_i(\mathbf{w} \cdot \mathbf{x}_i + b) \ge 1, \quad i = 1, \ldots, n

则间隔大小为 2/w2/\|\mathbf{w}\|。最大化间隔等价于最小化 w2\|\mathbf{w}\|^2,由此得到SVM的原始优化问题:

minw,b12w2s.t.yi(wxi+b)1,  i\min_{\mathbf{w}, b} \frac{1}{2} \|\mathbf{w}\|^2 \quad \text{s.t.} \quad y_i(\mathbf{w} \cdot \mathbf{x}_i + b) \ge 1, \; \forall i

该优化问题构成一个凸优化中的二次规划(Quadratic Programming, QP)问题,具有唯一的全局最优解。距离超平面最近的样本点(即恰使约束取等号的那些点)称为支持向量(Support Vectors),它们是决定决策边界的核心样本——模型的名称即源于此。

软间隔与松弛变量

现实中的数据往往不是完美线性可分的:可能存在噪声、异常值或类别之间的重叠区域。为处理这种情况,Cortes和Vapnik(1995)引入了软间隔(Soft Margin)SVM,通过引入松弛变量(Slack Variables)ξi0\xi_i \ge 0 允许部分样本点位于间隔边界之内甚至被误分类。

软间隔SVM的优化问题为:

minw,b,ξ12w2+Ci=1nξi\min_{\mathbf{w}, b, \boldsymbol{\xi}} \frac{1}{2} \|\mathbf{w}\|^2 + C \sum_{i=1}^n \xi_i
s.t.yi(wxi+b)1ξi,  ξi0,  i\text{s.t.} \quad y_i(\mathbf{w} \cdot \mathbf{x}_i + b) \ge 1 - \xi_i, \; \xi_i \ge 0, \; \forall i

其中参数 C>0C > 0 称为惩罚系数:较大的 CC 对误分类的惩罚更重,决策边界更复杂;较小的 CC 使模型更注重最大化间隔,容忍更多误分类。此参数是SVM最重要的超参数之一,通常通过交叉验证(Cross-Validation)选择。

对偶问题与核技巧

SVM的强大之处在于其对偶表示。通过引入拉格朗日乘子(Lagrange Multipliers)αi0\alpha_i \ge 0,可将原始优化问题转化为其对偶问题

maxαi=1nαi12i=1nj=1nαiαjyiyj(xixj)\max_{\boldsymbol{\alpha}} \sum_{i=1}^n \alpha_i - \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j (\mathbf{x}_i \cdot \mathbf{x}_j)
s.t.0αiC,  i=1nαiyi=0\text{s.t.} \quad 0 \le \alpha_i \le C, \; \sum_{i=1}^n \alpha_i y_i = 0

对偶形式的显著优势在于,优化目标和决策函数仅依赖于样本之间的内积 (xixj)(\mathbf{x}_i \cdot \mathbf{x}_j)。这一性质引出SVM最核心的技术——核技巧(Kernel Trick)。

核函数 K(xi,xj)K(\mathbf{x}_i, \mathbf{x}_j) 定义了在某个高维(甚至无限维)特征空间中两个向量的内积,而无需显式地计算该高维空间的坐标变换。常用的核函数包括:

  • 线性核K(xi,xj)=xixjK(\mathbf{x}_i, \mathbf{x}_j) = \mathbf{x}_i \cdot \mathbf{x}_j,即原始空间中的线性SVM。
  • 多项式核K(xi,xj)=(γxixj+r)dK(\mathbf{x}_i, \mathbf{x}_j) = (\gamma \mathbf{x}_i \cdot \mathbf{x}_j + r)^d,引入多项式决策边界。
  • 径向基核(RBF核):K(xi,xj)=exp(γxixj2)K(\mathbf{x}_i, \mathbf{x}_j) = \exp(-\gamma \|\mathbf{x}_i - \mathbf{x}_j\|^2),最常用的一种核函数,对应无限维特征空间。
  • Sigmoid核K(xi,xj)=tanh(γxixj+r)K(\mathbf{x}_i, \mathbf{x}_j) = \tanh(\gamma \mathbf{x}_i \cdot \mathbf{x}_j + r)

核技巧使得SVM能够在不显著增加计算复杂度的情况下捕捉复杂的非线性决策边界。线性不可分的数据在核映射后的高维空间中可能变得线性可分,这正是SVM被誉为"核方法之王"的原因。

决策函数与分类规则

利用对偶问题的解,SVM的分类决策函数可写成:

f(x)=sign(i=1nαiyiK(x,xi)+b)f(\mathbf{x}) = \text{sign}\left(\sum_{i=1}^n \alpha_i y_i K(\mathbf{x}, \mathbf{x}_i) + b\right)

注意,只有支持向量(即 αi>0\alpha_i > 0 对应的样本)对决策函数有贡献,其余样本的 αi=0\alpha_i = 0。这意味着SVM的解具有稀疏性(Sparsity):决策边界仅由训练集的一小部分样本决定,这使模型在推理阶段非常高效。

SVM的扩展:支持向量回归与多分类

SVM的思想不仅限于分类问题。支持向量回归(Support Vector Regression, SVR)将SVM扩展到回归分析:SVR引入ϵ\epsilon-不敏感损失函数,寻找一个在允许误差ϵ\epsilon内尽可能平坦的回归函数。

对于多分类问题,常见策略包括一对多(One-vs-All, OvA)和一对一(One-vs-One, OvO)。实际应用中,SVM通常与OvO或OvA策略结合使用,每个二分类器用单独的训练数据构建。

优点与局限性

SVM的主要优点包括:

  • 理论基础坚实,基于结构风险最小化原则,泛化能力强。
  • 核函数的灵活性使其能处理线性与非线性问题。
  • 解具有稀疏性,仅依赖支持向量,内存效率高。
  • 在高维特征空间中表现优异,尤其当特征数大于样本数时仍能有效工作。

其主要局限性包括:

  • 对大规模数据集,标准SVM的训练复杂度为 O(n2)O(n^2)O(n3)O(n^3),计算开销较大。
  • 核函数的选择和参数(如 CCγ\gamma)的调优对性能影响显著,需要经验和网格搜索(Grid Search)。
  • 原始SVM面向二分类设计,多分类扩展需要额外策略。
  • 模型输出为类别决策而非概率,虽然可通过Platt缩放(Platt Scaling)等方法进行概率校准。

应用领域

SVM被广泛应用于各类实际问题:在生物信息学中用于基因表达数据的分类和蛋白质结构预测;在图像识别中用于手写数字识别和人脸检测;在文本分类中用于垃圾邮件过滤和情感分析;在金融工程中用于信用评分和市场预测。尽管深度学习在端到端学习的许多领域超越了SVM,SVM在中小规模数据集、高维稀疏特征场景以及需要可解释性的应用中仍然是首选方法之一。