机器学习 · 互动实验室

支持向量机

分界线两边留出一条街,黄圈里的点决定它的位置

01尝试分界线02留出间隔03找到支持向量
看这里
蓝色通道待寻找点一下播放,看间隔如何形成
合格不合格黄圈:支持向量拖动一个点,观察边界

文字版:支持向量机在做什么

能把两类点分开的直线有无数条,支持向量机要找的是其中「最不勉强」的那一条:它在分界线两侧留出一条尽可能宽的空街,让两类都离界线远远的。这条街的宽度叫间隔,而决定街道位置的,往往只是贴在街边的那么几个点。

画面上正在发生什么

播放寻找过程,先出现几条都能把两类分开的候选线,然后画面收敛到带间隔的那一条。被黄圈标出来的就是支持向量——它们正好压在间隔的边界上。拖动一个远离边界的点,分界线纹丝不动;拖动一个黄圈里的点,整条界线立刻跟着动。这就是「支持」这个词的来历。

调节「分错的惩罚 C」再看一次。C 很大时模型不允许任何点越界,哪怕为此把通道挤得很窄;C 变小则允许少数点越界甚至分错,换来一条更宽、更稳的通道。

什么时候它会骗你

  • 少数几个点就能左右整条边界。这是 SVM 的特点也是它的风险:如果支持向量里混进了标注错误的样本,整条分界线会被它拽偏。放入一个「难分的点」就能看到这种效果。
  • C 调大不等于模型更好。C 越大,模型越不容忍训练集上的错误,边界会被硬掰成贴合每个点的形状——训练成绩很好看,换批数据就垮。C 是正则化强度的倒数,要用交叉验证选,不是越严越好。
  • SVM 对量纲同样敏感。间隔是用距离度量的,不做标准化时,取值范围大的特征会主导间隔的计算方向。

常见问题

支持向量到底是什么?
就是那些落在间隔边界上、或者越过了间隔的训练样本。模型的分界线完全由它们决定,其余样本删掉也不影响结果。这使得 SVM 的模型很紧凑,但也意味着它对这几个点的标注质量格外敏感。
为什么要最大化间隔?
直觉上,留出的空街越宽,新样本落进来时越不容易掉到错的一侧,泛化能力越好;理论上,最大间隔对应着一个结构风险更小的解,而且这个优化问题是凸的,有唯一最优解,不会像神经网络那样陷入局部极小。
SVM 和逻辑回归怎么选?
样本量不大、特征维度高、需要清晰边界时 SVM 往往更稳;需要输出概率、需要解释每个变量的贡献、或者样本量很大时逻辑回归更合适。SVM 原生不给概率,要另外做校准;它在大规模数据上的训练成本也明显更高。

本页为教学合成数据,间隔宽度与支持向量由页面用对偶坐标下降法实时求解。

作者与维护:覃秉丰 · 关于覃秉丰 · 引用本页讲解

继续学习