支持向量机(Support Vector Machine, SVM)是统计学习中最优美的模型之一。它的核心思想极其简洁:在所有能正确分类的超平面中,选择间隔最大的那一个。这一节我们从线性可分的最简单情形出发,一步步建立硬间隔最大化的完整理论——从问题的提出,到对偶形式的推导,再到解的存在唯一性证明。
定义(线性可分性) 给定训练数据集 T={(x1,y1),(x2,y2),…,(xN,yN)},其中 xi∈Rn,yi∈{+1,−1},i=1,2,…,N。若存在某个超平面 S:
w⋅x+b=0
能将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,即对所有 yi=+1 的实例有 w⋅xi+b>0,对所有 yi=−1 的实例有 w⋅xi+b<0,则称数据集 T 为线性可分的(linearly separable)。
等价地,线性可分意味着存在 (w,b) 使得:
yi(w⋅xi+b)>0,∀i=1,2,…,N
直觉上,线性可分就是说在特征空间里能找到一张"平板"(超平面),把两类点完全隔开,没有任何一个点被错分。
超平面 w⋅x+b=0 由法向量 w∈Rn 和截距 b∈R 唯一确定。法向量 w 指向超平面的"正侧",垂直于超平面本身;b 控制超平面离原点的偏移量——原点到超平面的有符号距离为 b/∥w∥。
给定超平面后,对任意新输入 x,分类决策函数为:
f(x)=sign(w⋅x+b)
几何意义很清晰:看新点落在超平面的哪一侧,就归为哪一类。
对于线性可分数据,能正确分类的超平面有无穷多个(感知机的收敛解就取决于初始化)。线性可分支持向量机要在这无穷多个解中找到一个"最优"的——间隔最大的那个。
定义(线性可分支持向量机) 给定线性可分训练数据集 T,通过间隔最大化学习得到的分离超平面为 w∗⋅x+b∗=0,以及对应的分类决策函数 f(x)=sign(w∗⋅x+b∗),称为线性可分支持向量机。
要量化"间隔"到底有多大,我们需要精确定义距离的度量方式。
定义(函数间隔) 对于给定超平面 (w,b),定义超平面关于样本点 (xi,yi) 的函数间隔为:
γ^i=yi(w⋅xi+b)
定义超平面关于训练数据集 T 的函数间隔为所有样本点函数间隔的最小值:
γ^=i=1,…,Nminγ^i
函数间隔的符号反映分类的正确性:γ^i>0 时分类正确,γ^i<0 时分类错误。其绝对值可以相对地表示点距超平面的远近——值越大,"确信度"越高。
函数间隔有一个根本缺陷:不具有尺度不变性。将 w 和 b 同时乘以正常数 λ,超平面本身不变,但函数间隔变成了原来的 λ 倍:
yi(λw⋅xi+λb)=λ⋅yi(w⋅xi+b)=λγ^i
仅仅通过放大 w 的模长,就能让函数间隔任意大——但超平面和它与数据点的实际距离根本没变。因此,函数间隔不能直接作为最大化的目标。
定义(几何间隔) 对于给定超平面 (w,b),定义超平面关于样本点 (xi,yi) 的几何间隔为:
γi=yi(∥w∥w⋅xi+∥w∥b)=∥w∥γ^i
定义超平面关于训练数据集 T 的几何间隔为 γ=miniγi。
几何间隔就是点到超平面的有符号欧氏距离。它对 (w,b) 的等比例缩放不敏感:
∥λw∥yi(λw⋅xi+λb)=λ∥w∥λ⋅yi(w⋅xi+b)=γi
γi=∥w∥γ^i,γ=∥w∥γ^
当 ∥w∥=1 时两者相等。函数间隔是"未归一化的距离",几何间隔才是"真正的距离"。
为什么要最大化间隔?
- 鲁棒性:间隔越大,决策边界离最近的训练点越远,对测试数据的扰动越不敏感。
- 泛化能力:VC 维理论表明,间隔越大,分类器的 VC 维越低,泛化误差上界越紧。
目标:最大化几何间隔,同时要求每个样本的几何间隔都不小于 γ:
w,bmax∥w∥γ^s.t.yi(w⋅xi+b)≥γ^,i=1,…,N
约束的规范化:令函数间隔为 1。 由于函数间隔有缩放自由度,我们令 γ^=1(将 (w,b) 缩放为 (w/γ^,b/γ^) 即可)。此时:
- 约束变为 yi(w⋅xi+b)≥1
- 几何间隔 γ=1/∥w∥
- 最大化 γ 等价于最小化 21∥w∥2
原始问题(线性可分 SVM)
w,bmin21∥w∥2
s.t.yi(w⋅xi+b)≥1,i=1,2,…,N
这是一个凸二次规划(QP):目标函数是严格凸的二次函数,约束是线性不等式,全局最优解唯一。
定理(存在唯一性) 若训练数据集 T 线性可分,则原始问题存在唯一的最优解 (w∗,b∗)。
证明要点:
- 存在性:可行域非空(线性可分保证)且目标函数下有界,连续函数在紧集上取到最小值。
- w∗ 的唯一性:若存在两个最优解 w1=w2,其中点 (w1+w2)/2 可行且 ∥(w1+w2)/2∥<∥w1∥=∥w2∥(范数严格凸性),与最优性矛盾。
- b∗ 的唯一性:由正类和负类支持向量的约束取等号直接确定。■
试试切换下面的三条线,观察间隔宽度的差异:
间隔宽度 (margin)1.61
三条线都能分开数据,但 SVM 选间隔最大的那条。黄色圈标出的是支持向量——决定边界位置的关键点。
那些刚好满足 yi(w⋅xi+b)=1 的点叫支持向量——它们"撑住"间隔边界。
将原始问题转化为对偶问题有三大好处:(1)揭示解的稀疏结构;(2)数据只以内积形式出现,为核技巧打开大门;(3)当 N≪n 时对偶更高效。
对每个约束引入乘子 αi≥0:
L(w,b,α)=21∥w∥2−i=1∑Nαi[yi(w⋅xi+b)−1]
由 Slater 条件,强对偶性成立:minw,bmaxα≥0L=maxα≥0minw,bL。
∇wL=w−i=1∑Nαiyixi=0⇒w∗=i=1∑Nαiyixi
∂b∂L=−i=1∑Nαiyi=0⇒i=1∑Nαiyi=0
第一个等式意义深远:最优权重是训练样本的线性组合,系数为 αiyi。
将 w∗ 代入 L 并化简:
21∥w∗∥2=21i,j∑αiαjyiyj(xi⋅xj)
i∑αiyi(w∗⋅xi)=i,j∑αiαjyiyj(xi⋅xj)
两项相减加上 ∑αi,得到对偶目标:
对偶问题
αmaxi=1∑Nαi−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)
s.t.i=1∑Nαiyi=0,αi≥0,i=1,…,N
关键特征:数据只以内积 xi⋅xj 出现——将内积替换为核函数就能做非线性分类。
在最优解处,互补松弛条件:
αi∗[yi(w∗⋅xi+b∗)−1]=0,i=1,…,N
这意味着:
- αi∗=0:点在间隔外,不影响决策边界(非支持向量)。
- αi∗>0:yi(w∗⋅xi+b∗)=1,点恰在间隔边界上(支持向量)。
只有支持向量对最终分类超平面有贡献。 删掉非支持向量,最优解不变。这就是 SVM 名字的由来和模型稀疏性的数学根源。
w∗=i∈SV∑αi∗yixi
b∗=yj−i∈SV∑αi∗yi(xi⋅xj)(取任一支持向量 j)
f(x)=sign(i∈SV∑αi∗yi(xi⋅x)+b∗)
预测只需计算新样本与支持向量的内积,计算量与支持向量数成正比。
硬间隔要求所有点正确分类且在间隔外——现实数据有噪声,一两个离群点就可能让问题无解或扭曲边界。本节引入松弛变量和惩罚参数,得到实际应用中真正使用的线性支持向量机。
对每个样本引入松弛变量 ξi≥0,将硬约束放松为:
yi(w⋅xi+b)≥1−ξi,ξi≥0
ξi 的几何含义:
- ξi=0:样本在间隔边界外(满足硬约束)
- 0<ξi<1:在间隔内但正确分类
- ξi=1:恰在决策超平面上
- ξi>1:被错误分类
w,b,ξmin21∥w∥2+Ci=1∑Nξi
s.t.yi(w⋅xi+b)≥1−ξi,ξi≥0,i=1,…,N
C>0 的作用(偏差-方差权衡):
- C 大 → 对误分类惩罚严厉,间隔窄,容易过拟合
- C 小 → 容许更多违反,间隔宽,可能欠拟合
- C→∞ 退化为硬间隔 SVM
拖动下面的滑块,观察 C 对间隔和决策边界的影响:
拖动滑块改变 C 值:C 小则间隔宽、容忍更多违反(欠拟合);C 大则间隔窄、严格拟合训练数据(过拟合风险)。
引入两组乘子:αi≥0(对应主约束)和 μi≥0(对应 ξi≥0):
L=21∥w∥2+Ci∑ξi−i∑αi[yi(w⋅xi+b)−1+ξi]−i∑μiξi
∂w∂L=0:w=i=1∑Nαiyixi
∂b∂L=0:i=1∑Nαiyi=0
∂ξi∂L=0:C−αi−μi=0⇒μi=C−αi
由 μi≥0 得 αi≤C。这就是软间隔的箱约束:0≤αi≤C。
所有含 ξi 的项因为 C−αi−μi=0 完全消去。最终得到:
软间隔 SVM 的对偶问题:
αmaxi=1∑Nαi−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)
s.t.i=1∑Nαiyi=0,0≤αi≤C,i=1,…,N
与硬间隔目标函数完全相同,唯一区别是 αi 多了上界 C。
利用 KKT 条件,训练样本分为三类:
| αi∗ 值 | ξi∗ | 样本位置 | 身份 |
|---|
| =0 | =0 | 间隔外:yif(xi)>1 | 非支持向量 |
| ∈(0,C) | =0 | 间隔边界上:yif(xi)=1 | 自由支持向量 |
| =C | >0 | 间隔内或错分:yif(xi)<1 | 有界支持向量 |
自由支持向量(0<αi<C)最为重要——用它们计算 b∗:
b∗=yj−i=1∑Nαi∗yi(xi⋅xj),j∈{i:0<αi∗<C}
有界支持向量(αi=C)的影响力被限制在 C——这保证了模型对离群值的鲁棒性。
定理(等价性) 软间隔 SVM 等价于:
w,bminCi=1∑N[1−yi(w⋅xi+b)]++21∥w∥2
其中 [z]+=max(0,z) 就是合页损失(hinge loss)。
证明: 在最优解处 ξi∗=max(0,1−yi(w⋅xi+b))=[1−yif(xi)]+,代入原目标函数即得。□
记函数间隔 m=y⋅f(x):
ℓhinge(m)=max(0,1−m)={01−mm≥1m<1
- 当 m≥1 时损失为零——不只分类正确,还要有足够"间隔"
- 是 0-1 损失的凸上界:[1−m]+≥1[m≤0]
- 不处处可微,但处处有次梯度
| 损失函数 | 表达式 | 对应模型 |
|---|
| 0-1 损失 | 1[m≤0] | 理想但非凸 |
| 合页损失 | max(0,1−m) | SVM |
| 指数损失 | e−m | AdaBoost |
| 对数损失 | log(1+e−m) | Logistic 回归 |
w,bmin经验风险i=1∑Nℓ(yi,f(xi))+正则化λ∥w∥2
- Hinge + L2 = SVM
- Logistic + L2 = Logistic 回归(weight decay)
- Hinge + L1 = 稀疏 SVM
深度学习中的 "loss + weight decay" 与 SVM 在数学结构上完全同构。
对偶问题的标准求解方法是 SMO(Sequential Minimal Optimization, Platt 1998):每次只更新两个 αi(等式约束要求至少改两个变量)。
核心更新公式:
αjnew=αjold+ηyj(Ei−Ej),η=Kii+Kjj−2Kij
然后剪切到 [L,H]∩[0,C] 的合法范围内。
下面的可视化展示了 SMO 的逐步求解过程:
选取 C、D 为工作对,初始化 α₃=0.3, α₄=0.3
拉格朗日乘子 α
α10.00
α20.00
α30.30
α40.30
α50.00
α60.00
约束 α3y3 + α4y4 = const
y = -1y = +1当前工作对支持向量 (α>0)
SMO 每次选取一对 α 进行优化,沿约束线移动到最优点。虚线圈标出当前工作对,黄色实圈为已激活的支持向量。
SMO 的优雅之处:不需要矩阵运算,内存友好,收敛快。这是 libsvm 和 sklearn 底层使用的算法。
线性分类器只能画超平面。对环形分布、XOR 型数据,无论怎么调参都无法线性分开。核心思想:把数据映射到高维空间,使其线性可分,然后在高维做线性 SVM。 核函数让这个过程在计算上可行——你永远不需要显式计算高维坐标。
四个点:(1,1)→+1,(−1,−1)→+1,(1,−1)→−1,(−1,1)→−1。无论怎么画直线都分不开。
定义映射 ϕ(x)=(x12,2x1x2,x22),四点变为:
ϕ(1,1)=(1,2,1),ϕ(−1,−1)=(1,2,1)
ϕ(1,−1)=(1,−2,1),ϕ(−1,1)=(1,−2,1)
新空间中超平面 z2=0 完美分开两类。非线性问题在特征空间中变成了线性问题。
定义。 函数 K:X×X→R 称为核函数,如果存在映射 ϕ:X→H 使得:
K(x,z)=⟨ϕ(x),ϕ(z)⟩
SVM 对偶问题中数据只通过内积 xi⋅xj 出现。将内积替换为 K(xi,xj)=⟨ϕ(xi),ϕ(xj)⟩,就等价于在高维特征空间中做线性 SVM——但无需显式计算 ϕ(x)。
对 x,z∈R2,映射 ϕ(x)=(x12,2x1x2,x22) 的内积:
⟨ϕ(x),ϕ(z)⟩=x12z12+2x1x2z1z2+x22z22=(x⋅z)2
核函数 K(x,z)=(x⋅z)2 只需 O(d) 计算,等价于在三维特征空间做内积。对一般 d 维输入和 p 次多项式,特征空间维度为 (pd+p)(指数级),但核计算始终 O(d)。
下面的可视化展示了核技巧如何把非线性可分数据"拉直":
特征空间 φ(x) = (x₁², x₂², √2·x₁x₂)
类别 0(内圈)类别 1(外圈)决策边界
核技巧将线性不可分数据映射到高维空间,使其变得线性可分。左图为输入空间中的决策边界,右图为特征空间中的线性分离。
什么函数有资格当核函数?Mercer 定理给出完整回答。
定义(正定核)。 K:X×X→R 称为正定核,如果满足:
- 对称性:K(x,z)=K(z,x)
- 正半定性:对任意 {x1,…,xn} 和 c1,…,cn∈R:
i=1∑nj=1∑ncicjK(xi,xj)≥0
即 Gram 矩阵 Gij=K(xi,xj) 半正定。
定理。 K 是合法核函数 ⟺ K 是正定核 ⟺ 对任何有限样本集,Gram 矩阵半正定。
必要性证明: 若 K(x,z)=⟨ϕ(x),ϕ(z)⟩,则:
i,j∑cicjK(xi,xj)=i∑ciϕ(xi)2≥0
充分性(构造性): 定义 ϕ(x)=K(⋅,x)(映射为函数),则 ⟨ϕ(x),ϕ(z)⟩=K(x,z)(再生性质)。构造出的空间称为再生核 Hilbert 空间(RKHS)。
- 线性组合:a1K1+a2K2(ai≥0)仍是正定核
- 乘积:K1⋅K2 仍是正定核(Schur 乘积定理)
- 极限:逐点收敛的正定核序列的极限仍是正定核
- 指数:exp(K) 仍是正定核
这意味着你可以通过组合已知核构造新核,无需显式写出 ϕ。
K(x,z)=x⋅z
特征空间 = 输入空间。适用于高维稀疏数据(文本 TF-IDF、基因组),d≫N 时通常已够用。
K(x,z)=(γx⋅z+r)p
特征空间维度 (pd+p)。p=2,3 最常见,p 太大易过拟合。适合存在特征交互的场景。
K(x,z)=exp(−γ∥x−z∥2)
对应无穷维特征空间。 证明:展开 exp(2γx⋅z)=∑n=0∞n!(2γ)n(x⋅z)n,每一项是 n 次多项式核,无穷求和对应无穷维特征。
γ 的含义:
- γ 大 → 核衰减快,决策边界曲折,易过拟合
- γ 小 → 核衰减慢,边界平滑,趋近线性
RBF 是最常用的默认选择,能逼近任意连续决策边界。
K(x,z)=tanh(γx⋅z+r)
与两层神经网络的联系:每个隐藏单元计算 tanh(w⋅x+b)。注意:不是对所有参数都正定,已较少使用。
| 核函数 | 特征空间维度 | 超参数 | 典型场景 |
|---|
| 线性核 | d | 无 | 文本、高维稀疏 |
| 多项式核 | (pd+p) | γ,r,p | 图像特征 |
| RBF 核 | ∞ | γ | 通用默认 |
| Sigmoid 核 | 不确定 | γ,r | 已少用 |
选择指南: 先试线性核 → 默认 RBF → 有领域知识时用多项式。数据必须先标准化。用网格搜索 + 交叉验证选 C 和 γ。
输入: 训练集 T,核函数 K,惩罚参数 C
步骤 1. 求解对偶问题:
αmin21i,j∑αiαjyiyjK(xi,xj)−i∑αi
s.t.i∑αiyi=0,0≤αi≤C
步骤 2. 计算阈值(取自由支持向量平均):
b∗=∣Sfree∣1j∈Sfree∑(yj−i∑αi∗yiK(xi,xj))
步骤 3. 决策函数:
f(x)=sign(i∈SV∑αi∗yiK(xi,x)+b∗)
预测复杂度:O(∣SV∣⋅d),只需遍历支持向量。
SMO 直接适用于核化版本——将 xi⋅xj 替换为 K(xi,xj):
- 误差:Ei=∑k∈SVαkykK(xk,xi)+b−yi
- 二阶项:η=Kii+Kjj−2Kij(ϕ(xi)−ϕ(xj) 在特征空间中的范数平方)
| 阶段 | 复杂度 |
|---|
| 训练(SMO) | O(N2d) ~ O(N3d) |
| 预测(单样本) | O(∥SV∥⋅d) |
| 核矩阵存储 | O(N2)(通常用 LRU 缓存) |
大规模时的替代方案:随机 Fourier 特征(Rahimi & Recht 2007)将 RBF 核近似为有限维映射,转化为线性 SVM。
SVM 本质是二分类器。多类扩展:
- 一对一(OvO):(2K) 个分类器,投票。libsvm/sklearn 默认。
- 一对多(OvA):K 个分类器,取 fi(x) 最大的类。