← 返回题目列表

支持向量机(SVM)的基本原理是什么?什么是最大间隔?

高频 中等 第 3 / 25 题 更新于 2026/07/28
支持向量机SVM最大间隔分类

简化版

支持向量机(SVM) 是一种分类模型,核心思想是找一个超平面把两类分开,并让这个超平面到两类最近样本的「间隔(margin)」最大。为什么要最大间隔?因为间隔越大,分类边界离样本越「宽松」,对噪声和新数据越鲁棒、泛化能力越强。决定这个超平面的只有离边界最近的少数样本,它们叫支持向量,其余样本不影响结果。对线性不可分数据,SVM 用软间隔(允许少量越界)和核函数(升到高维找线性边界)来处理。

详细版

核心概念:

超平面:   wᵀx + b = 0            (分界面)
间隔:     两类中离超平面最近的点到它的距离之和 = 2/‖w‖
目标:     最大化间隔 2/‖w‖  ⟺  最小化 ½‖w‖²
约束:     yᵢ(wᵀxᵢ+b) ≥ 1       (每个样本正确分类且在间隔外)

为什么最大间隔更好:

  • 间隔大 = 决策边界离数据远 = 对样本扰动/噪声容忍度高 = 泛化好
  • 这是一种结构风险最小化:不只拟合训练数据,还控制模型复杂度。

支持向量: 恰好落在间隔边界上(yᵢ(wᵀxᵢ+b)=1)的样本,只有它们决定超平面,删掉其他样本结果不变。

优化: 是一个凸二次规划问题,有全局最优解;实际常转对偶问题求解并引入核函数。

完整版教学

一、SVM 要解决的核心问题:哪条分界线最好

对二分类,能把两类分开的超平面往往有无数条。感知机随便找一条能分开的就停了,但直觉告诉我们:紧贴着某一类样本的分界线很危险——新数据稍微偏一点就分错了。

SVM 的洞察是:最好的分界线,应该离两类样本都尽量远,也就是在两类之间「走中间、留最大缓冲」。这个「缓冲带的宽度」就是间隔(margin),SVM 的目标就是最大化间隔,所以又叫最大间隔分类器

   类别 A  ●●●        │缓冲│        ○○○  类别 B
                    ← 间隔 →
              最优超平面走正中间,两边留最大间隔

二、间隔为什么等于 2/‖w‖,目标为什么变成最小化 ½‖w‖²

超平面写作 wᵀx + b = 0。规定两类样本满足:

正类:  wᵀx + b ≥ +1
负类:  wᵀx + b ≤ -1

即所有样本满足 yᵢ(wᵀxᵢ+b) ≥ 1(yᵢ∈{+1,-1})。两条「间隔边界」wᵀx+b=±1 之间的距离(几何间隔)可以推出等于 2/‖w‖

最大化间隔 2/‖w‖,等价于最小化 ‖w‖,为了求导方便写成:

min  ½‖w‖²
s.t. yᵢ(wᵀxᵢ+b) ≥ 1,  对所有 i

这是一个凸二次规划问题:任一局部最优都是全局最优,不会出现非凸训练中的次优局部极小值。需要严谨地区分“最优目标值/决策函数”和“参数一定唯一”:在退化数据或未正则化偏置等情形下,某些参数表示未必唯一。

三、为什么最大间隔能带来好的泛化

这是 SVM 理论上最漂亮的地方。「间隔大」意味着:

  • 决策边界离所有样本都远,样本即使因为噪声抖动一点,也不容易越过边界被分错——对扰动鲁棒
  • 从统计学习理论看,最大化间隔等价于限制了模型的复杂度(VC 维),这是一种结构风险最小化:不只最小化训练误差,还同时控制模型容量,从而上界了泛化误差

所以 SVM 不是「碰巧」泛化好,而是把「泛化」直接写进了优化目标——让边界尽量宽,就是让模型尽量稳

四、支持向量:只有少数样本说了算

求解后会发现一个关键事实:只有恰好落在间隔边界上(yᵢ(wᵀxᵢ+b)=1)的那些样本,才对超平面有贡献。这些样本就叫支持向量(Support Vector)——它们像「撑起间隔的柱子」。

  • 远离边界的样本(在间隔外)对结果毫无影响:把它们删掉、移动(只要不越过边界),超平面完全不变。
  • 对偶展开只包含 αᵢ>0 的支持向量;当前解下,间隔外且正确分类的样本 αᵢ=0。支持向量未必“少”,错标或越界点也可能成为支持向量,因此预测成本和离群点敏感性要看实际支持向量比例。

这也是名字「支持向量机」的由来——机器学出来的分界面,是被支持向量「支撑」起来的。

五、线性不可分怎么办:软间隔 + 核函数

现实数据常常线性不可分(两类交叉,没有超平面能完美分开)。SVM 有两件武器:

  1. 软间隔(Soft Margin):允许少数样本越过间隔甚至分错,用松弛变量 ξ 度量违反程度,并加进目标惩罚。通过参数 C 控制「间隔要多大」和「容忍多少错误」的权衡(详见软间隔专题)。这让 SVM 能容忍噪声、避免为个别点牺牲整体间隔。

  2. 核函数(Kernel):把数据映射到更高维空间,在原空间线性不可分的数据,到高维往往变得线性可分。核技巧的妙处是不用真的算高维坐标,只用核函数算高维内积,代价极小(详见核技巧专题)。

有了这两件武器,SVM 既能扛噪声,又能处理复杂非线性边界。

六、优缺点速览

优点:最大间隔目标有清晰的泛化直觉;线性 SVM 适合高维稀疏特征,核 SVM 则能表示非线性边界。核展开的预测主要依赖支持向量,但支持向量数量可能接近样本数,不能把“支持向量表示”直接等同于“模型一定很稀疏”。

缺点:核 SVM 的训练和存储对样本数敏感,C、γ 与核的选择也会显著影响结果。基于距离或内积的核通常需要统一特征尺度,但应在训练折内拟合缩放器;输出分数若要解释成概率,还需额外校准,多分类则依赖 OvR、OvO 或联合目标。

因此先区分线性与核版本:海量高维稀疏数据可评估线性 SVM;中等样本且确有非线性证据时再尝试 RBF 核,并把预处理和调参放进同一交叉验证流水线。

七、常见追问

  • 为什么间隔是 2/‖w‖? 由点到超平面距离公式,两条 wᵀx+b=±1 间隔为 2/‖w‖
  • SVM 会陷局部最优吗? 不会,凸二次规划有全局最优。
  • 为什么叫支持向量? 因为超平面由落在间隔边界上的少数样本「支撑」。
  • 和逻辑回归比? LR 优化交叉熵,有限间隔样本通常都有非零梯度,并输出模型概率;SVM 优化最大间隔,其对偶展开只含支持向量,更关注边界与违约样本(详见 SVM vs LR 专题)。

八、用算例与工程边界复核

在规范化约束 y_i(wᵀx_i+b)≥1 下,两条支持超平面为 wᵀx+b=±1,它们的距离是 2/||w||。若 ||w||=2,间隔宽度为 1;把 w、b 同乘常数不会改变决策边界,所以必须固定函数间隔尺度。

对象/方案核心机制选择或风险
硬间隔完全可分且无松弛对异常点脆弱
软间隔加入 ξ 与 C允许违约以换泛化
核 SVM对偶中用 K(xi,xj)非线性但训练扩展性差

把推导和选择压缩成执行路径:

scale features
 -> choose linear/kernel
 -> tune C and kernel params by CV
 -> decision from support vectors

最大化的是几何间隔;函数间隔会随 w、b 同比例缩放,单独最大化没有意义。

九、常见误区与追问

  • 误区:SVM 找到的是离所有样本平均最远的分界线。 间隔由最靠近边界的样本决定,不是平均距离。
  • 误区:最大间隔保证任何数据上泛化最好。 它提供容量控制直觉和理论界,但核、C、噪声与分布仍决定效果。
  • 追问:为什么目标写 1/2||w||²? 与最大化 2/||w|| 等价,平方形式凸且求导方便。
  • 追问:b 会被正则化吗? 经典 SVM 目标只惩罚 w,具体库实现应核对。
  • 追问:线性不可分只有核函数一条路吗? 不是,软间隔先允许违约;核函数负责改变表示能力,两者解决不同问题。

十、加强记忆

记忆时抓住这条主线:SVM = 找最大间隔超平面分开两类:能分开的超平面有无数条,SVM 选离两类最近样本最远的那条,因为间隔越大越抗噪、泛化越好(本质是结构风险最小化、限制模型复杂度)。数学上是最大化 2/‖w‖ ⟺ 最小化 ½‖w‖²,约束 yᵢ(wᵀxᵢ+b)≥1,是有全局最优的凸二次规划。决定超平面的只有落在间隔边界上的支持向量,其余样本删了也不影响——这就是名字由来。线性不可分靠软间隔(松弛变量+C 容忍错误)核函数(升维找线性边界) 解决。记牢短板:大数据慢、对 C/γ 和特征缩放敏感、原生不出概率。