1. 概述

Support Vector Machines(支持向量机,简称SVM)是一种强大的分类算法,尤其适用于高维数据和线性不可分问题。本文将从理论基础出发,讲解 SVM 的核心思想、数学推导以及非线性扩展方法。

SVM 的核心在于寻找一个最优的决策边界(hyperplane),使得不同类别的数据点之间的间隔最大化。这种“最大间隔”思想不仅提升了模型的泛化能力,也使其在处理小样本数据时表现出色。

2. 决策边界的识别问题

2.1 分类的本质:空间的划分

分类任务的本质是将一个向量空间划分为多个互不重叠的区域,每个区域代表一个类别。SVM 的核心假设是:这些区域之间存在明确的边界,可以通过一个超平面来分隔

例如,假设我们有两类数据点,分布在二维空间中。我们希望找到一条直线(二维中的超平面),使得两类点尽可能分开,并且这条直线离两类点的距离尽可能远。

the universe

2.2 用边界点代替整个空间

如果我们试图用整个空间中的每一个点来定义分类边界,这在理论上是可行的,但实际操作中并不高效。SVM 的聪明之处在于:它只关注那些最接近边界点的样本,即“支持向量”(Support Vectors)

这些点对决策边界的影响最大,其余点的作用可以忽略。这大大减少了计算复杂度,也提升了模型的鲁棒性。

2.3 支持向量的概念

支持向量是指距离决策边界最近的那些样本点。它们决定了边界的位置和方向。SVM 的决策边界完全由支持向量决定,其余样本点对最终结果没有影响

dots

3. SVM 的数学建模

3.1 线性 SVM:线性可分问题

对于线性可分的数据集,SVM 的目标是找到一个超平面,使得两类样本之间的间隔最大。

设特征空间为 $ V = \mathbb{R}^{|x|} $,其中 $ |x| $ 是特征维度。SVM 在这个空间中寻找一个超平面:

$$ \overrightarrow{v} \cdot \overrightarrow{x} - b = 0 $$

其中 $ \overrightarrow{v} $ 是超平面的法向量,$ b $ 是偏置项。

3.2 决策边界与支持向量的关系

我们希望这个超平面能够最大化两类样本之间的间隔。设样本点 $ x_i $ 的类别为 $ y_i \in {1, -1} $,则 SVM 的优化目标为:

$$ \text{minimize } ||\overrightarrow{v}|| \quad \text{subject to } y_i (\overrightarrow{v} \cdot x_i + b) \geq 1 $$

这个约束条件保证了所有样本点都位于超平面的正确一侧,并且至少距离边界一个单位距离。

3.3 决策函数

最终的决策函数为:

$$ f(x) = \text{sign}(\overrightarrow{v} \cdot x + b) $$

其中,$\text{sign}$ 函数用于判断样本属于哪一类(正类或负类)。

4. 非线性 SVM

4.1 非线性问题的处理思路

并不是所有问题都可以用一个超平面线性分割。对于线性不可分的情况,SVM 的解决方法是将原始特征空间映射到一个更高维的空间 $ W $,在这个新空间中寻找一个线性超平面。

设映射函数为:

$$ f: V = \mathbb{R}^{|x|} \mapsto W = \mathbb{R}^m \quad \text{with } m \geq |x| $$

在这个新空间中,我们可以通过核函数(Kernel Function)来避免显式地进行高维映射。

4.2 常见的核函数

核函数的作用是将原始空间中的内积转换为高维空间中的内积。常用的核函数包括:

多项式核(Polynomial Kernel): $$ k(x_i, x_j) = (x_i \cdot x_j + c)^d $$ 其中 $ d $ 是多项式阶数,$ c $ 是常数项。

径向基函数核(RBF Kernel): $$ k(x_i, x_j) = e^{-\gamma ||x_i - x_j||^2} $$ 其中 $ \gamma > 0 $ 是控制核宽度的参数。

Sigmoid 核: $$ k(x_i, x_j) = \tanh(\alpha x_i \cdot x_j + c) $$ 常用于神经网络中的激活函数相似性建模。

⚠️ 选择核函数的建议

  • RBF 核适用于大多数非线性问题,是首选核函数
  • 多项式核适合有明确多项式关系的数据
  • Sigmoid 核较少使用,除非有特殊需求

5. 总结

SVM 是一种基于几何思想的分类算法,其核心在于最大化类间间隔,并通过支持向量来定义决策边界。

优点

  • 在高维空间中表现良好
  • 对小样本数据集有较好的泛化能力
  • 通过核技巧处理非线性问题

缺点

  • 对参数和核函数选择敏感
  • 训练时间较长(尤其在大规模数据集上)

在实际应用中,SVM 通常需要进行参数调优(如 C 值、核函数参数等),并通过交叉验证评估模型性能。合理选择核函数和参数是使用 SVM 的关键。


原始标题:Support Vector Machines (SVM)