SVM与核方法核心25 分钟kp-016#SVM#软间隔#铰链损失

软间隔 SVM 与铰链损失

进度

一句话定义

软间隔 SVM 给每个样本引入松弛变量 ξi ≥ 0 允许违反间隔,目标变为 min 12‖ w ‖2 + C∑i ξi,等价于在 hinge 损失上做 L2 正则化——C 是「容错换间隔」的旋钮。

为什么重要

真实数据有噪声与重叠,硬间隔常常不可行;软间隔才是实际使用的 SVM。它与正则化经验风险(kp-002/008)的等价性是「几何视角 = 统计视角」的最佳案例,理解后可以把 SVM 放回通用框架统一记忆,而不是当成孤立算法。

前置知识

最大间隔与线性 SVM 的原问题、对偶与 KKT;损失函数:从 0-1 损失到代理损失 的 hinge 损失定义。

核心概念

  • 松弛变量 ξi:样本 i 违反间隔的量(ξi > 0 在间隔内,ξi > 1 已被错分)。
  • 惩罚系数 C:每单位违反的价格;C → ∞ 回到硬间隔,C 小则容忍更多违反、间隔更「宽」。
  • hinge 损失:L(y, f) = max(0, 1 - y f(x))。
  • 等效正则形式:min 1n∑ max(0, 1 - yi f(xi)) + λ ‖ w ‖2,λ = 12nC。
  • KKT 互补松弛的三段结构:αi = 0(间隔外)/ 0 < αi < C(恰在边界)/ αi = C(违反者)。

直观类比

修隔离道路时遇到无法绕开的违章建筑(噪声样本):硬间隔要求全部拆除(不可行),软间隔允许「交罚款让建筑压在路缘上」——C 是罚款单价。罚款便宜(C 小)就多容忍几栋楼换条更宽的路;罚款昂贵(C 大)宁可把路修窄也要少容忍。

原理与机制

软间隔原问题:

minw, b, ξ   12‖ w ‖2 + C∑i=1n ξi    s.t.    yi(w^⊤ xi + b) ≥ 1 - ξi,  ξi ≥ 0

约束两边乘 yi 移项得 ξi ≥ 1 - yi f(xi),配合 ξi ≥ 0 恰为 ξi ≥ max(0, 1 - yi f(xi));最优化时 ξi 取下界,故目标等价于 12‖ w ‖2 + C ∑i max(0, 1 - yi f(xi))——松弛变量就是 hinge 损失的辅助变量表示,约束优化版与损失+正则版逐字等价。

KKT 三段结构是直觉地图:ξi = 0 且在间隔外(yi f ≥ 1)→ αi = 0,不参与解;恰在边界(yi f = 1)→ 0 < αi < C,是普通支持向量;ξi > 0(间隔内或错分)→ αi = C,是被「罚款」的样本。训练后按 yi f(xi) 检查每段样本数量即可诊断 C 是否合适。

对偶形式与 kp-015 几乎相同,唯一变化是约束变为 0 ≤ αi ≤ C(盒约束),这就是经典 SMO 算法处理的问题形式。

公式与推导

等价性的最后一步(把 ξ 代入目标):

minw, b  12‖ w ‖2 + C∑i max(0,  1 - yi(w^⊤ xi + b))  ⟺  minw, b  1n∑i max(0, 1 - yi f(xi))hinge + 12nC‖ w ‖2

两式相差常数因子 nC,故 SVM = hinge 损失 + L2 正则的经验风险最小化,与岭回归、逻辑回归同属一个家族,只是损失不同(对照 kp-003 的损失谱系)。

图示

 ○ ○ ○              × ×
   ○  ξ=0.6┊        × ×
    ○──╲   ┊  ╱──×
        ╲ ξ┊ξ╱        间隔带内的样本被罚 C·ξ
   ──────╲┊╱─────     ξ = 违反量(距离式)
    ξ>1 的样本已被错分
   C↑ → 间隔窄、容忍少、拟合强
   C↓ → 间隔宽、容忍多、更平滑

实例或案例

在带类别重叠的数据上扫 C,观察训练精度与间隔(正则强度)的权衡:

from sklearn.datasets import make_blobs
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import cross_val_score

X, y = make_blobs(n_samples=400, centers=2, cluster_std=3.5, random_state=0)
for C in (0.01, 0.1, 1, 10, 100):
    m = make_pipeline(StandardScaler(), SVC(kernel="linear", C=C))
    print(f"C={C:>6}: CV={cross_val_score(m, X, y, cv=5).mean():.3f}")

C 过小时欠拟合、过大时向硬间隔退化对噪声敏感,CV 曲线峰值处即权衡点——与 kp-008 选 λ 完全同构(C ∝ 1/λ)。

常见误区

  • 把 ξi 当成「距离误差」记进损失后误以为目标非凸:目标对 (w, b, ξ) 是凸二次规划,永远有全局最优。
  • 认为 C 大一定好(追求训练集干净):重叠数据上大 C 等于硬间隔硬拟合噪声,泛化崩坏。
  • 忘记 hinge 损失不输出概率:需要概率时要么另配校准(Platt scaling),要么直接用逻辑回归。

与其他知识点的关系

损失函数:从 0-1 损失到代理损失 中 hinge 作为 0-1 的凸上界家族成员在此落地;正则化:岭回归、Lasso 与弹性网 的 λ 与本节 C 是同一权衡的两种参数化;核技巧与常用核函数 的对偶带盒约束后由 SMO 高效求解;不平衡数据与代价敏感学习 可用样本级权重(C 按类缩放)实现代价敏感。

自测题

  1. 写出软间隔原问题,并说明 ξi 的取值含义。

- 要点:min 12‖ w‖2 + C∑ξi,s.t. yi f(xi) ≥ 1 - ξi, ξi ≥ 0;ξ = 0 间隔外、0 < ξ ≤ 1 间隔内未错分、ξ > 1 错分。

  1. 证明/说明软间隔 SVM 等价于 hinge + L2 正则。

- 要点:ξ 的最优值即 max(0, 1 - yi f(xi)),代回目标即得;仅差常数因子。

  1. KKT 三段结构与 C 的关系?

- 要点:0 ≤ α ≤ C 盒约束;α = C 是被罚样本、0 < α < C 是边界支持向量、α = 0 无贡献;C 决定盒子上限。

延伸阅读

李航《统计学习方法》第 7.2 节;Hastie 等《The Elements of Statistical Learning》第 12.2 节。