← 返回题目列表

什么是支持向量?为什么说 SVM 只由支持向量决定?

高频 中等 第 2 / 25 题 更新于 2026/08/02
支持向量机SVM支持向量对偶

简化版

支持向量(Support Vector) 是训练样本里离决策超平面最近、恰好落在(或越过)间隔边界上的那些样本。SVM 的超平面完全由这少数支持向量决定——因为在最优解里,只有支持向量对应的拉格朗日乘子 α>0,其余样本 α=0、对 w 没有贡献。直观理解:支持向量像「撑起间隔的柱子」,删掉或移动非支持向量(只要不越过间隔边界),超平面纹丝不动;而移动任何一个支持向量,超平面就会改变。这带来 SVM 的稀疏性和对远处离群点的鲁棒性。

详细版

支持向量的三种位置(软间隔下):

类型位置松弛 ξ乘子 α
间隔边界上恰在 yᵢ(wᵀxᵢ+b)=1ξ=00<α<C
间隔内(越界但分对)在边界和超平面之间0<ξ≤1α=C
分错越过超平面ξ>1α=C
非支持向量间隔外、分对ξ=0α=0

为什么只由支持向量决定:

  • 对偶解出 w = Σ αᵢ yᵢ xᵢ只有 α>0 的样本进入求和
  • α>0 的样本就是支持向量;非支持向量 α=0,对 w 无贡献。
  • 所以删掉非支持向量,wb 都不变。

意义: 模型稀疏(只存支持向量)、预测只需和支持向量算内积、对非支持向量的离群点不敏感。

完整版教学

一、支持向量到底是哪些样本

回顾 SVM 的目标:找一个超平面,让它到两类最近样本的间隔最大。求解完成后,样本可以按「离超平面多远」分成两拨:

  • 一拨在间隔之外、且分类正确:它们离边界很远,是「安全」的样本。
  • 一小拨恰好压在间隔边界上、或者进入了间隔带、甚至被分错:它们离边界最近、最「危险」。

后一拨就是支持向量。硬间隔下,支持向量就是恰好落在 yᵢ(wᵀxᵢ+b)=1 边界上的点;软间隔下,还包括进入间隔带和被分错的点。它们的共同特征是:离决策边界最近、直接顶着间隔

二、从拉格朗日对偶看「只由支持向量决定」

SVM 求解会转成对偶问题,给每个样本一个拉格朗日乘子 αᵢ ≥ 0。最优解有一个漂亮结论——权重向量可以写成样本的加权和:

w = Σᵢ αᵢ yᵢ xᵢ

关键在于 KKT 互补松弛条件决定了大部分 αᵢ = 0:

  • 间隔外、分类正确的样本:约束「不紧」(yᵢ(wᵀxᵢ+b) > 1),对应 αᵢ = 0
  • 恰在间隔边界上/间隔内/分错的样本:约束「紧」,对应 αᵢ > 0

于是 w = Σ αᵢ yᵢ xᵢ 这个求和里,只有 αᵢ>0 的样本(即支持向量)真正贡献,αᵢ=0 的样本(非支持向量)项直接是 0、对 w 毫无影响。这就是「SVM 只由支持向量决定」的数学根据。

三、直观验证:删掉/移动样本会怎样

用「撑柱子」的比喻最好理解:

  • 删掉一个非支持向量(间隔外分对的点):它本来 α=0、不贡献 w,删了超平面完全不变。你可以删掉大量这样的样本,SVM 结果一模一样。
  • 移动一个非支持向量(只要不越过间隔边界进入危险区):同样不影响超平面。
  • 移动/删掉一个支持向量:它 α>0、直接决定 w,超平面会随之改变——柱子动了,撑起的面就变了。

所以 SVM 的决策面就像被少数几根「柱子」(支持向量)顶在正中间,其余样本只是旁观者。

四、这个性质带来什么好处

  1. 核预测成本由支持向量数决定:训练后核展开只需保存支持向量及系数,f(x)=Σ αᵢ yᵢ K(xᵢ,x)+b;支持向量越少,预测越快。但困难数据上支持向量可能占很高比例,不能预设它一定远少于全部样本。
  2. 对「远处离群点」鲁棒:一个远离边界、分类正确的离群点是非支持向量,α=0,对模型没影响——SVM 不会为迁就它而改变边界。(但注意:靠近边界或分错的离群点会成为支持向量、影响很大,所以 SVM 并非对所有离群点都免疫。)
  3. 理论意义:模型复杂度和支持向量数量相关,支持向量少往往意味着模型更简洁、泛化更好;支持向量占比还能作为泛化误差的一个估计。

五、软间隔下支持向量的细分

引入软间隔(参数 C、松弛 ξ)后,支持向量分三类(见详细版表):

  • α=C 的点:进入间隔带甚至被分错的「问题样本」。
  • 0<α<C 的点:恰好压在间隔边界上的「标准支持向量」,常用来反解偏置 b。
  • α=0:非支持向量。

C 越小,间隔越宽、允许越界的样本越多、支持向量越多;C 越大,越不容忍越界、间隔越窄。理解这点有助于理解 C 对模型的影响。

六、常见追问

  • 支持向量越多越好还是越少好? 一般越少越好(模型更简洁、泛化更强、预测更快);支持向量特别多可能意味着数据难分或 C/γ 设置不当、有过拟合风险。
  • 为什么核 SVM 预测要保留支持向量? 因为预测式 f(x)=ΣαᵢyᵢK(xᵢ,x)+b 显式依赖支持向量,无法像线性 SVM 那样只存一个 w。
  • 偏置 b 怎么算?0<α<C(恰在间隔边界上)的支持向量满足 yᵢ(wᵀxᵢ+b)=1 反解,通常对多个取平均。
  • SVM 对离群点鲁棒吗?远处、分类正确的离群点鲁棒(非支持向量);对靠近边界/分错的离群点敏感(会变成支持向量)。

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

对偶决策函数是 f(x)=Σ_i α_i y_i K(x_i,x)+b。若 1000 个训练样本中只有 80 个 α_i>0,预测只需这 80 个支持向量的核计算;α_i=0 的样本不直接出现在决策展开式中。

对象/方案核心机制选择或风险
α=0间隔外非支持向量不直接影响当前决策函数
0<α<C通常恰在间隔边界满足 y f(x)=1
α=C在间隔内或误分,也可能边界退化受软间隔上界约束

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

solve dual α
 -> keep α_i > tolerance
 -> compute b from suitable margin SVs
 -> predict with kernel expansion

“删掉非支持向量模型完全不变”只对已求得的当前最优解表达式成立;删后重新训练可能改变约束集合与最优解。

八、常见误区与追问

  • 误区:支持向量一定是被误分类的点。 硬间隔支持向量正确分类且位于间隔边界;软间隔还包含间隔内和误分类点。
  • 误区:支持向量越多模型一定越好。 数量影响推理成本,也反映间隔与噪声,不能单独作为效果指标。
  • 追问:为什么 α=0 的样本不参与预测? 对偶展开中对应项系数为 0,核贡献消失。
  • 追问:所有 α=C 的点都误分类吗? 不一定,它也可能正确分类但位于间隔内。
  • 追问:数值上如何判断支持向量? 求解器使用容差判断 α 是否显著大于 0,不能依赖浮点精确等于零。

九、加强记忆

记忆时从 KKT 看支持向量:对偶解为 w=Σαᵢyᵢxᵢαᵢ=0 的当前间隔外正确样本不进入展开,αᵢ>0 的样本才是支持向量。软间隔中,0<α<C 通常位于间隔边界,α=C 表示约束达到上界,样本可能在间隔内或被错分;具体还要结合退化情形。减小 C 往往容忍更多违约并可能增加支持向量,但不是对所有数据严格单调。支持向量数量直接影响核预测成本,却不能单独推出泛化好坏;远处正确点在当前解下无影响,错标离群点仍可能成为关键支持向量。