Ch04 机器学习
SVM 支持向量机 (Support Vector Machine)
一句话理解
SVM 是一个”画线”的分类器——在两类数据之间画一条线(或超平面),让这条线离两边最近的数据点都尽可能远。这条线不是随便画的,而是找”最大间隔”的那条。
零基础理解
你在操场上要把男生和女生分成两队,在地上画一条线。最简单的画法是”只要能分开就行”。但 SVM 说:不,要把线画在正中间——离最近的那个男生和最远的那个女生一样远。这样新来一个人,即使站得稍微偏了一点,也不会被分错。这就是”最大间隔”的思想。
核心概念
1. 最大间隔 (Maximum Margin)
间隔 (Margin):分类超平面到最近数据点的距离。
SVM 的目标是最大化这个间隔。为什么?
| 间隔大小 | 泛化能力 | 对新数据的鲁棒性 |
|---|---|---|
| 小间隔 | 差 | 新数据稍微偏移就可能分类错误 |
| 大间隔 | 好 | 给新数据留出了更大的容错空间 |
数学表达:
SVM 优化问题(硬间隔):
- 是超平面的法向量
- 是偏置项
- 约束条件 确保所有样本被正确分类且至少在间隔边界外
2. 支持向量 (Support Vectors)
定义:离分类超平面最近的那些数据点,即”刚好在间隔边界上”的点。
| 特性 | 说明 |
|---|---|
| 数量 | 通常远少于总样本数(稀疏性) |
| 决定超平面 | 只有支持向量决定超平面的位置,其他点不影响 |
| 为什么叫”支持” | 它们是”支撑”起超平面的点,去掉任何一个支持向量,超平面都会改变 |
| 计算效率 | 预测时只需要和支持向量计算,不需要全部训练数据 |
○
○ ○ ● 支持向量
○ ○ ○ 非支持向量
───○───○───●─── — 分类超平面
● ● ● ⋯ 间隔边界
● ●
●
支持向量 = 离超平面最近的点 (在间隔边界上)
3. 软间隔 (Soft Margin)
现实数据往往不是完全线性可分的。软间隔允许一些点”犯规”——被分错或在间隔内。
松弛变量 :衡量第 i 个样本”犯规”的程度。
| 参数 C | 含义 | 效果 |
|---|---|---|
| C 很大 | 严格惩罚犯规 | 硬间隔,可能过拟合 |
| C 很小 | 容忍犯规 | 更宽的间隔,可能欠拟合 |
| C 适中 | 平衡 | 最佳泛化 |
4. 核方法 (Kernel Method)
现实数据往往不是线性可分的。核方法把数据映射到高维空间,在那里可能就线性可分了。
核心思想:不显式地做映射,而是通过核函数直接计算高维空间中的内积。
核技巧 (Kernel Trick):我们不需要知道 是什么,只需要知道 怎么算。
常见核函数
| 核函数 | 公式 | 参数 | 适用场景 |
|---|---|---|---|
| 线性核 | 无 | 线性可分数据,高维稀疏数据(文本) | |
| 多项式核 | d(次数), c(常数) | 有明确多项式关系 | |
| RBF/高斯核 | $K(x_i, x_j) = \exp(-\gamma | x_i - x_j | |
| Sigmoid 核 | , c | 类似两层神经网络 |
RBF 核的参数 的影响
| 值 | 效果 | 现象 |
|---|---|---|
| 很小 | 每个点影响范围大 | 决策边界平滑,可能欠拟合 |
| 很大 | 每个点影响范围小 | 决策边界复杂,可能过拟合 |
SVM 的优缺点
优点
| 优点 | 说明 |
|---|---|
| 数学优美 | 凸优化问题,全局最优解保证 |
| 稀疏性 | 只依赖支持向量,预测高效 |
| 核方法 | 通过核技巧处理非线性问题 |
| 小样本有效 | 在高维小样本场景表现好 |
| 理论保证 | VC 维理论保证泛化能力 |
缺点
| 缺点 | 说明 |
|---|---|
| 大规模数据慢 | 训练复杂度 O(n²)~O(n³),百万级样本就很慢 |
| 核函数选择困难 | 没有统一的选择标准,靠经验 |
| 概率输出困难 | 原生 SVM 输出标签而非概率(需 Platt Scaling) |
| 多分类麻烦 | 需要 OVR 或 OVO 策略组合多个二分类 SVM |
| 对参数敏感 | C 和 的选择严重影响性能 |
SVM vs 其他分类器
| 维度 | SVM | 逻辑回归 | 决策树/随机森林 | 神经网络 |
|---|---|---|---|---|
| 可解释性 | 中(支持向量) | 高(权重=特征重要性) | 高(特征重要性) | 低 |
| 非线性 | 通过核方法 | 需特征工程 | 天然支持 | 天然支持 |
| 小样本 | 极好 | 好 | 一般 | 差 |
| 大样本 | 差 | 好 | 好 | 极好 |
| 高维稀疏 | 好(线性核) | 极好 | 一般 | 好 |
| 概率输出 | 需额外处理 | 原生 | 原生 | 原生 |
| 2026 年使用 | 特定场景 | 广泛 | 广泛 | 主流 |
2026 年 SVM 的地位
SVM 在深度学习时代不再是主流,但在以下场景仍有不可替代的价值:
| 场景 | 为什么还用 SVM |
|---|---|
| 小样本分类 | 几百个样本时,SVM 通常比神经网络好 |
| 高维稀疏数据 | 文本分类、基因数据,线性 SVM 高效且准确 |
| 需要理论保证 | 金融风控、医疗诊断需要可证明的最优性 |
| 基线模型 | 快速建立 baseline,理解问题难度 |
| 嵌入式系统 | 只需存储支持向量,推理极快 |
相关笔记
- 深挖-SVM — SVM 的深入推导和实战
- 核方法 (Kernel Method) — 核方法的深入理解(Kernel PCA, MMD 等)
- 第4章 · 机器学习核心算法 — SVM 在经典 ML 算法中的位置
- 过拟合与欠拟合 (Overfitting & Underfitting) — SVM 的 C 参数与过拟合的关系
- 深度学习 (Deep Learning) — 为什么神经网络最终取代了 SVM
来源
- Cortes & Vapnik, “Support-Vector Networks” (1995) — https://link.springer.com/article/10.1007/BF00994018
- Boser, Guyon & Vapnik, “A Training Algorithm for Optimal Margin Classifiers” (1992, 核方法引入 SVM) — https://dl.acm.org/doi/10.1145/130385.130401
- Bishop, “Pattern Recognition and Machine Learning”, Chapter 7 — https://www.microsoft.com/en-us/research/people/cmbishop/prml-book/
- Hastie et al., “The Elements of Statistical Learning”, Chapter 12 — https://hastie.su.domains/ElemStatLearn/
- Andrew Ng, “CS229 Lecture Notes: Support Vector Machines” — https://cs229.stanford.edu/notes2020fall/notes2020fall/cs229-notes3.pdf
关联5
知识图谱反向链接0
暂时没有别处链接到这里。
局部图谱 · 点节点跳转