SVM 支持向量机
不只是找一条分界线,而是找最宽的那条"街道"——间隔越大,分类越可靠
01 核心原理(大白话版)
想象地图上有两类城市:红色和蓝色。你要画一条边界线把它们分开。能画的线有无数条,哪条最好?
SVM 的答案是:找一条线,让它离两边最近的点都尽可能远。就像在两堆点之间修一条最宽的"马路",分界线走马路中央。
三个关键概念
2D 里是一条线,3D 里是一个面,更高维时叫超平面。SVM 就是找这个分界超平面。
离分界线最近的那几个点。整条"马路"的宽度完全由它们决定——其他点根本不参与计算。
数据不能线性分开怎么办?用核函数把数据"投影"到更高维空间,在那里往往能线性分开,再投影回来。
线性不可分 → 核技巧
线性核
数据本身线性可分时用,最快最简单。
RBF 核(高斯核)
最常用的核,能处理非线性边界,适合大多数场景。参数 γ 控制影响半径。
多项式核
适合特征有乘积交互关系的数据,如图像识别。
SVM 的优势:在小样本、高维数据上表现出色(文本分类、生物信息学)。缺点是大样本训练慢,对特征缩放敏感,使用前务必标准化。
一步步构建 SVM
SVM 标签用 -1 和 +1(而非 0/1),这样间隔的数学表达式更对称:y·(w·x+b) ≥ 1。
间隔足够宽的点损失为 0;只有挤在"马路"里的点才会产生损失,推动边界向外扩。
L2 正则让 ||w|| 变小(间隔变宽),合页损失把分错的点推回正确侧,两者权衡由 C 控制。
重复次梯度更新,||w|| 逐渐缩小,间隔逐渐扩大,支持向量浮现。
四段拼在一起,加上可视化,就是完整演示代码——看下面。
02 代码
03 学术性讲解
硬间隔 SVM(线性可分)
超平面 w·x + b = 0 将两类分开,目标是最大化间隔 2/‖w‖,等价于:
这是一个凸二次规划问题,有唯一全局最优解。
软间隔 SVM(允许误分类)
引入松弛变量 ξᵢ ≥ 0,允许部分点越过间隔边界:
参数 C 控制"惩罚力度":C 大 → 不容忍误分,间隔窄;C 小 → 允许误分,间隔宽,正则化更强。
对偶问题与核函数
通过 Lagrange 对偶,原问题转化为只依赖内积 xᵢ·xⱼ 的形式。将内积替换为核函数 K(xᵢ,xⱼ) = φ(xᵢ)·φ(xⱼ),即可在不显式计算高维映射 φ 的情况下在高维空间分类(核技巧)。
常用核函数:
- 线性核:K(x,z) = x·z
- 多项式核:K(x,z) = (γx·z + r)ᵈ
- RBF 核:K(x,z) = exp(−γ‖x−z‖²)
VC 维与泛化界
SVM 最大化间隔等价于最小化模型复杂度(VC 维)。根据结构风险最小化理论,泛化误差上界为:
其中 h 为 VC 维,n 为样本数。间隔越大,VC 维越小,泛化越好——这是 SVM 理论上"为什么有效"的核心解释。