支持向量机 SVM:最大间隔、支持向量与核方法

支持向量机 SVM:最大间隔、支持向量与核方法

支持向量机(Support Vector Machine, SVM)是经典监督学习算法之一。

它最核心的思想不是简单地"找到一条能把两类分开的线",而是:

在能够正确分开训练样本的候选决策边界中,寻找分类间隔最大的那一个。

这个思想带来了非常漂亮的几何解释,也让 SVM 在中小规模、高维数据问题中长期保持竞争力。


1. 线性分类器

对于二分类问题,设输入为:

x∈Rp\mathbf{x}\in\mathbb{R}^px∈Rp

类别标签为:

y∈{−1,+1}y\in\{-1,+1\}y∈{−1,+1}

线性分类器定义一个超平面:

wTx+b=0\mathbf{w}^T\mathbf{x}+b=0wTx+b=0

预测规则为:

y^=sign(wTx+b)\hat{y}=sign(\mathbf{w}^T\mathbf{x}+b)y^=sign(wTx+b)


2. 为什么仅仅"分开"还不够

很多直线都可能把两类训练数据分开,但它们的泛化能力不一定相同。

SVM 希望找到离两类最近样本都尽可能远的决策边界。

与决策边界距离最近的训练样本称为支持向量

这些样本决定了最终的分类超平面。


3. 几何间隔

决策超平面为:

wTx+b=0\mathbf{w}^T\mathbf{x}+b=0wTx+b=0

对于规范化后的硬间隔 SVM,可以定义两条边界:

wTx+b=1\mathbf{w}^T\mathbf{x}+b=1wTx+b=1

wTx+b=−1\mathbf{w}^T\mathbf{x}+b=-1wTx+b=−1

两条边界之间的距离为:

2∥w∥\frac{2}{\|\mathbf{w}\|}∥w∥2

因此最大化间隔等价于最小化:

12∥w∥2\frac{1}{2}\|\mathbf{w}\|^221∥w∥2


4. Hard-Margin SVM

对于完全线性可分的数据,约束为:

yi(wTxi+b)≥1y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge 1yi(wTxi+b)≥1

优化问题为:

min⁡w,b12∥w∥2\min_{\mathbf{w},b} \frac{1}{2}\|\mathbf{w}\|^2w,bmin21∥w∥2

满足:

yi(wTxi+b)≥1y_i(\mathbf{w}^T\mathbf{x}_i+b)\ge1yi(wTxi+b)≥1

这就是硬间隔 SVM。

问题在于真实数据往往存在:

  • 噪声;
  • 异常点;
  • 类别重叠。

因此完全不允许误分类通常不现实。


5. Soft-Margin SVM

软间隔 SVM 引入松弛变量:

ξi≥0\xi_i\ge0ξi≥0

优化问题变为:

min⁡w,b,ξ12∥w∥2+C∑i=1nξi\min_{\mathbf{w},b,\boldsymbol{\xi}} \frac{1}{2}\|\mathbf{w}\|^2+C\sum_{i=1}^{n}\xi_iw,b,ξmin21∥w∥2+Ci=1∑nξi

约束:

yi(wTxi+b)≥1−ξiy_i(\mathbf{w}^T\mathbf{x}_i+b) \ge 1-\xi_iyi(wTxi+b)≥1−ξi

参数 C 控制:

更大的间隔与更少的训练错误之间的权衡。

一般而言:

  • C 较大:更强调训练样本分类正确;
  • C 较小:允许更多训练误差,以获得更宽间隔和更强正则化。

6. Hinge Loss

SVM 也可以从损失函数角度理解。

经典 hinge loss:

L(y,f(x))=max⁡(0,1−yf(x))L(y,f(x))=\max(0,1-yf(x))L(y,f(x))=max(0,1−yf(x))

其中:

f(x)=wTx+bf(x)=\mathbf{w}^T\mathbf{x}+bf(x)=wTx+b

如果一个样本不仅分类正确,而且距离边界足够远,则损失为 0。

如果样本:

  • 分类错误;
  • 或虽然分类正确但离边界过近;

都会产生损失。

因此线性 SVM 的目标可以写成:

min⁡w,b12∥w∥2+C∑i=1nmax⁡(0,1−yi(wTxi+b))\min_{\mathbf{w},b} \frac{1}{2}\|\mathbf{w}\|^2+C \sum_{i=1}^{n} \max\left( 0,1-y_i(\mathbf{w}^T\mathbf{x}_i+b) \right)w,bmin21∥w∥2+Ci=1∑nmax(0,1−yi(wTxi+b))


7. 支持向量为什么重要

在最优超平面附近的样本决定了分类边界。

远离边界的大量样本,对最终超平面的影响可能很小。

这就是"Support Vector Machine"这个名字的来源。

可以把支持向量理解为:

最接近决策边界、最有资格决定边界位置的关键样本。


8. 当数据不是线性可分时

现实数据可能呈现环形、弯曲或更复杂的类别结构。

例如:

在原始二维空间中,这种数据无法被一条直线很好地分开。

一种思想是把样本映射到更高维空间:

x→ϕ(x)\mathbf{x} \rightarrow \phi(\mathbf{x})x→ϕ(x)

然后在新的特征空间中寻找线性超平面。


9. Kernel Trick

如果直接计算高维映射,计算成本可能非常高。

核技巧的关键是:

K(xi,xj)=ϕ(xi)Tϕ(xj)K(\mathbf{x}_i,\mathbf{x}_j)=\phi(\mathbf{x}_i)^T \phi(\mathbf{x}_j)K(xi,xj)=ϕ(xi)Tϕ(xj)

只要能够计算核函数,就可以避免显式构造高维特征。

线性核

K(x,z)=xTzK(\mathbf{x},\mathbf{z})=\mathbf{x}^T\mathbf{z}K(x,z)=xTz

多项式核

K(x,z)=(γxTz+r)dK(\mathbf{x},\mathbf{z})=(\gamma\mathbf{x}^T\mathbf{z}+r)^dK(x,z)=(γxTz+r)d

RBF 核

K(x,z)=exp⁡(−γ∥x−z∥2)K(\mathbf{x},\mathbf{z})=\exp \left(-\gamma \|\mathbf{x}-\mathbf{z}\|^2 \right)K(x,z)=exp(−γ∥x−z∥2)

RBF 是最常用的非线性核之一。


10. C 与 Gamma

使用 RBF 核时,最常调节的两个参数是 Cgamma

C

控制错误惩罚。

  • C:更关注训练误差;
  • C:正则化更强。

Gamma

控制单个训练样本影响范围。

  • gamma:影响范围较小,边界可能更加复杂;
  • gamma:影响范围较大,边界更平滑。

如果 Cgamma 都过大,很容易得到过度复杂的决策边界。


11. Python 实现

线性 SVM

python 复制代码
from sklearn.svm import SVC

model = SVC(
    kernel="linear",
    C=1.0
)

model.fit(X_train, y_train)
pred = model.predict(X_test)

RBF SVM

python 复制代码
from sklearn.svm import SVC

model = SVC(
    kernel="rbf",
    C=1.0,
    gamma="scale"
)

model.fit(X_train, y_train)
pred = model.predict(X_test)

12. 为什么 SVM 通常需要标准化

SVM 的核心涉及样本距离和内积。

如果不同特征量纲差异巨大,例如:

text 复制代码
温度:0 ~ 1500
碳含量:0 ~ 1
压力:0 ~ 2

大尺度特征可能主导距离计算。

因此通常先标准化:

python 复制代码
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

model = make_pipeline(
    StandardScaler(),
    SVC(kernel="rbf", C=1.0)
)

13. SVM 的优点

SVM 的优势包括:

  • 最大间隔具有明确几何解释;
  • 中小样本问题中表现稳定;
  • 能处理高维特征;
  • 核技巧能够表达非线性边界;
  • 正则化思想自然融入优化目标。

14. SVM 的局限

主要局限包括:

  • 大规模样本时训练成本可能较高;
  • Cgamma 等参数比较敏感;
  • 特征通常需要标准化;
  • 非线性核模型的解释性弱于线性模型;
  • 原始 SVM 输出不是天然概率。

15. 总结

SVM 可以沿着下面这条思路理解:

text 复制代码
线性分类
   ↓
不仅要分开
   ↓
还要最大化间隔
   ↓
边界由支持向量决定
   ↓
允许少量错误形成软间隔
   ↓
核函数进一步处理非线性问题

因此,SVM 最关键的三个概念是:

  • maximum margin;
  • support vectors;
  • kernel trick。

掌握这三个概念,基本就抓住了支持向量机的核心。

相关推荐
船厂电气自动化ai大模型2 小时前
AI大模型与数学 第73课 秩的核心定义、矩阵秩的通用求解方法
开发语言·数据结构·机器学习
Rocky Ding*11 小时前
【三年面试五年模拟】2026-09-06 拼多多 AI Agent研发岗秋招笔试4道算法题完整题解
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·拼多多
ai小陈13 小时前
PyTorch Profiler性能分析实战:定位GPU训练中的慢算子
人工智能·深度学习·机器学习·ai·性能优化·gpu算力
罗西的思考13 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 ---(1)--- 总体
人工智能·算法·机器学习
来让爷抱一个14 小时前
2026 语义缓存实战:把命中契约写进SPEC,MonkeyCode 云端跑通
人工智能·机器学习·缓存
xiao5kou4chang6kai415 小时前
AI-XGBoost机器学习与生态—植被与土地利用识别、土壤碳氮空间预测、生物多样性驱动机制、土壤微生物功能预测、生态退化与风险识
人工智能·机器学习·生态·xgboost·地学
liliangcsdn16 小时前
因子权重矩阵处理-因子权重收缩Shrinkage算法的探索
开发语言·python·机器学习
差不多的周周18 小时前
《MotionLLM:从人体运动和视频理解人类行为》论文核心部分详解
人工智能·深度学习·机器学习·计算机视觉·语言模型·音视频
硅谷秋水18 小时前
超越模仿:通过离线策略Q-规划实现机器人策略的自我改进
人工智能·深度学习·机器学习·机器人