知经 KNOWECON · 卓越的经济金融统计数学学习平台

支持向量机

# 支持向量机 (Support Vector Machine)

支持向量机 (Support Vector Machine, SVM) 是一种强大且用途广泛的{{{监督学习}}}模型,广泛应用于{{{机器学习}}}领域的{{{分类}}}和{{{回归}}}问题。其核心思想是找到一个能将不同类别的数据点分隔开的最优决策边界。在分类问题中,这个决策边界被称为{{{超平面}}} (Hyperplane),而“最优”指的是该超平面能够以最大间隔 (Maximum Margin) 将两类数据点分得最开。

SVM的理论基础坚实,它将寻找最优超平面的问题转化为一个带约束的凸二次规划问题,从而保证了其解的全局唯一性。通过引入核技巧 (Kernel Trick),SVM还能非常高效地处理非线性可分的数据。

## 核心思想:最大间隔分类器 (Maximal Margin Classifier)

为了理解SVM,我们首先从最简单的情况入手:一个二维平面上的二分类问题,且数据是线性可分的 (Linearly Separable),即存在一条直线能将两类数据点完美地分开。

(想象一幅图:二维平面上散布着两种颜色的点,有多条直线可以分开它们。)

显然,存在无数条直线可以完成这个任务。那么哪一条是最好的呢?SVM给出的答案是:位于“正中间”的那条。具体来说,这条直线到两边最近的数据点的距离是相等的,并且这个距离被最大化了。

* {{{超平面}}} (Hyperplane):在高维空间中,这个决策边界被称为超平面。在二维空间,它是一条直线;在三维空间,它是一个平面。 * 决策边界 (Decision Boundary):即上述的超平面。 * 间隔 (Margin):超平面两侧各有一条“平行”于它的边界线,这两条边界线之间的区域被称为“间隔”。这个间隔区域内不应包含任何数据点。SVM的目标就是最大化这个间隔的宽度。 * {{{支持向量}}} (Support Vectors):那些位于间隔边界上的数据点被称为支持向量。它们是离决策超平面最近的点,是“支撑”起这个最大间隔的关键样本。一个重要的特性是,最终的决策超平面仅由这些支持向量决定,与其他数据点无关。这使得SVM在计算上非常高效。

最大化间隔的直观意义在于,这样的决策边界对未知数据具有更好的{{{泛化能力}}} (Generalization Ability)。一个更宽的间隔意味着模型对于噪声的容忍度更高,分类的置信度也更高。

## 从线性可分到数学模型:硬间隔SVM (Hard-Margin SVM)

现在,我们将这个直观思想转化为数学语言。假设我们有一个训练数据集 $D = \{(x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)\}$,其中 $x_i$ 是一个 $p$ 维的特征向量,而 $y_i \in \{-1, 1\}$ 是类别标签。

在高维空间中,一个超平面可以由线性方程 $w^T x + b = 0$ 定义,其中: * $w$ 是法向量 (Normal Vector),决定了超平面的方向。 * $b$ 是偏置项 (Bias),决定了超平面与原点的距离。

我们希望所有的数据点都被正确分类。这可以表示为: * 如果 $y_i = 1$,我们希望 $w^T x_i + b > 0$。 * 如果 $y_i = -1$,我们希望 $w^T x_i + b < 0$。

为了引入“间隔”的概念,我们可以对 $w$ 和 $b$ 进行缩放,使得所有支持向量都满足 $|w^T x + b| = 1$。这样,上述条件可以更紧凑地写为: $$ y_i(w^T x_i + b) \ge 1 \quad \text{for all } i=1, \dots, n $$ 这个公式不仅保证了分类的正确性,还要求所有点都必须在间隔边界之外。

几何上可以推导出,间隔的宽度为 $\frac{2}{\|w\|}$。因此,最大化间隔等价于最小化 $\|w\|$。为了数学上的便利(方便求导),我们通常最小化 $\frac{1}{2}\|w\|^2$。

于是,硬间隔SVM的优化目标可以表示为一个{{{凸二次规划}}} (Convex Quadratic Programming) 问题: $$ \begin{aligned} & \underset{w, b}{\text{minimize}} & & \frac{1}{2} \|w\|^2 \\ & \text{subject to} & & y_i(w^T x_i + b) \ge 1, \quad \text{for } i=1, \ldots, n \end{aligned} $$ 这就是SVM的基本形式,称为硬间隔支持向量机。它要求所有数据点都必须被完美地、且在间隔之外分开。

## 处理噪声与重叠:软间隔SVM (Soft-Margin SVM)

在现实世界的数据中,完全的线性可分是非常罕见的。数据中往往包含噪声,或者不同类别的数据本身就有一定程度的重叠。硬间隔SVM在这种情况下无法找到解。

为了解决这个问题,我们引入软间隔支持向量机 (Soft-Margin SVM)。它允许模型在一定程度上犯错,即允许某些数据点不满足 $y_i(w^T x_i + b) \ge 1$ 的严格约束。

我们为每个数据点引入一个松弛变量 (Slack Variable) $\xi_i \ge 0$。约束条件变为: $$ y_i(w^T x_i + b) \ge 1 - \xi_i $$ * 如果 $\xi_i = 0$,说明该点被正确分类且在间隔边界之外。 * 如果 $0 < \xi_i \le 1$,说明该点在间隔之内,但仍被正确分类。 * 如果 $\xi_i > 1$,说明该点被错误分类。

当然,我们不希望松弛变量太大,因此需要在目标函数中加入对它们的惩罚项。软间隔SVM的优化目标变为: $$ \begin{aligned} & \underset{w, b, \xi}{\text{minimize}} & & \frac{1}{2} \|w\|^2 + C \sum_{i=1}^n \xi_i \\ & \text{subject to} & & y_i(w^T x_i + b) \ge 1 - \xi_i, \\ & & & \xi_i \ge 0, \quad \text{for } i=1, \ldots, n \end{aligned} $$ 这里的 $C > 0$ 是一个{{{正则化}}} (Regularization) 超参数,它控制了最大化间隔最小化分类错误之间的权衡,这与{{{偏见-方差权衡}}} (Bias-Variance Tradeoff) 密切相关。

* 高 $C$ 值:对误分类的惩罚很高。模型会尽力将每个点都正确分类,这可能导致间隔变窄,决策边界变得复杂,容易出现{{{过拟合}}} (Overfitting)。 * 低 $C$ 值:对误分类的惩罚较低。模型会更专注于一个宽的间隔,即使这意味着牺牲一些点的分类准确性。这可能导致{{{欠拟合}}} (Underfitting)。

## 征服非线性:核技巧 (The Kernel Trick)

对于本身就是非线性的数据分布(例如,环形分布),无论软间隔如何调整,线性超平面都无法很好地工作。

SVM通过核技巧 (Kernel Trick) 巧妙地解决了这个问题。其核心思想是: 1. 将原始特征空间中的数据通过一个非线性映射函数 $\phi(x)$ 投影到一个更高维(甚至无限维)的特征空间 (Feature Space)。 2. 在这个新的高维空间中,原本线性不可分的数据可能变得线性可分。 3. 在高维空间中应用线性SVM,找到一个分隔超平面。

直接进行这种映射和计算可能非常复杂,甚至不可行。例如,将一个二维向量映射到高维空间可能会产生一个维度极高的向量。

然而,通过求解SVM的{{{对偶问题}}} (Dual Problem),可以发现最终的决策函数和优化过程只依赖于样本点之间的{{{内积}}} (Dot Product),即 $\phi(x_i)^T \phi(x_j)$。

核技巧的美妙之处在于,我们可以定义一个核函数 (Kernel Function) $K(x_i, x_j)$,它能够直接计算出数据在映射后的高维空间中的内积,而无需显式地计算映射函数 $\phi(x)$。 $$ K(x_i, x_j) = \phi(x_i)^T \phi(x_j) $$ 这使得我们可以在一个无限维的空间中进行计算,而计算成本却保持在可控范围内。

### 常见的核函数

* 线性核 (Linear Kernel):$K(x_i, x_j) = x_i^T x_j$。这等价于原始空间中的线性SVM。 * 多项式核 (Polynomial Kernel):$K(x_i, x_j) = (\gamma x_i^T x_j + r)^d$。它能学习多项式形式的决策边界。$d$ 是多项式的次数。 * 径向基函数核 (Radial Basis Function Kernel, RBF):$K(x_i, x_j) = \exp(-\gamma \|x_i - x_j\|^2)$。也称为高斯核。这是最常用的一种核函数,因为它能处理非常复杂的非线性关系,并将数据映射到无限维空间。超参数 $\gamma$ 定义了单个训练样本影响的“范围”。 * Sigmoid核 (Sigmoid Kernel):$K(x_i, x_j) = \tanh(\gamma x_i^T x_j + r)$。其表现类似于一个两层的{{{神经网络}}}。

## 应用于回归问题:支持向量回归 (SVR)

SVM的思想也可以扩展到{{{回归}}}问题,称为支持向量回归 (Support Vector Regression, SVR)。与分类试图最大化两类之间的“空白地带”不同,SVR试图找到一个函数,使得尽可能多的样本点落在一个以该函数为中心、宽度为 $2\epsilon$ 的“管道”内。

在SVR中,我们不再关心管道内部点的误差,只惩罚那些落在管道外部的点的误差。这与传统回归方法(如{{{最小二乘法}}})试图最小化所有点的误差平方和有本质区别。

## 优缺点与适用场景

### 优点 1. 高维空间表现良好:当特征维度远大于样本数量时,SVM依然有效。 2. 内存效率高:由于决策函数仅由支持向量决定,因此模型在预测阶段只依赖于一小部分训练数据。 3. 通用性强:通过选择不同的核函数,可以灵活地解决各种线性和非线性问题。 4. 理论基础坚实:基于凸优化和统计学习理论,保证了全局最优解,避免了局部最小值问题。

### 缺点 1. 计算复杂度高:对于大规模数据集,训练时间开销较大。传统SVM算法的训练复杂度大约在 $O(n^2)$ 到 $O(n^3)$ 之间,其中 $n$ 是样本数量。 2. 对超参数敏感:SVM的性能严重依赖于核函数的选择以及超参数(如 $C$ 和 $\gamma$)的设置。这通常需要通过大量的{{{交叉验证}}} (Cross-Validation) 来进行调优。 3. 不直接提供概率估计:SVM的原始输出是类别标签,而不是属于某一类的概率。需要通过额外的方法(如Platt缩放)来获得概率信息。 4. 可解释性较差:特别是当使用复杂的核函数(如RBF核)时,模型就像一个“黑箱”,难以直观地解释其决策逻辑。