【漫话机器学习系列】221.支持向量(Support Vectors)

364 阅读3分钟

支持向量机(SVM)中的“支持向量”到底是什么?

标签:SVM、机器学习、支持向量机、可视化学习

本文借助一张手绘风格的图(图片来源:Chris Albon),来深入讲解支持向量机(Support Vector Machine)中核心概念之一:支持向量(Support Vectors) 。如果你还对这个概念有点模糊,那么接下来这篇文章一定能让你“恍然大悟”!


一、背景知识:什么是 SVM?

支持向量机(SVM)是一种二分类模型,它的核心思想是:

寻找一个最优超平面,将不同类别的数据分隔开来,并尽可能地让两边的数据点离这个超平面尽可能远。

这种最大间隔的思想使得模型具有良好的泛化能力,尤其适用于样本数量不多但特征维度较高的情况。


二、本文重点:什么是“支持向量”?

我们看下面这张图

图中蓝色圈表示一类样本(例如:正类),红色圈表示另一类样本(负类)。中间那条实线是“分离超平面”,它正好把两类样本区分开。而在它两侧的那两条虚线,是定义“最大间隔”的边界线。

接下来,重点来了:

那些距离分离超平面最近的点,就叫做“支持向量”。

它们决定了这个超平面的位置和方向。换句话说:

  • 如果没有这些支持向量,SVM 就没有依据来划定边界。
  • 如果你把数据中所有非支持向量的点移除,SVM 的分界线仍然不会发生变化!

在图中,这些点已经被标注出圆圈并用箭头标记为“支持向量”。


三、最大间隔的意义

在图中,分离超平面两边的虚线之间的宽度,就是我们常说的“间隔(margin) ”。SVM 的目标就是最大化这个间隔

为什么这么做?

  • 间隔越大,对未知数据的鲁棒性越强。
  • 更大的间隔通常意味着更强的泛化能力。

而正是图中那些最靠近分离超平面的点(即支持向量),决定了这个间隔的大小。


四、SVM 的数学表达式

我们从几何上理解了支持向量,那么从数学上如何定义呢?

SVM 的最优超平面可以定义为:

wx+b=0\vec{w} \cdot \vec{x} + b = 0

其中:

  • w\vec{w} 是法向量(决定方向)
  • b 是偏置项(决定距离原点的远近)

而间隔可以表达为:

Margin=2w\text{Margin} = \frac{2}{\|\vec{w}\|}

SVM 的优化目标是:

min12w2\min \frac{1}{2} \|\vec{w}\|^2 subject to yi(wxi+b)1\text{subject to } y_i(\vec{w} \cdot \vec{x}_i + b) \geq 1


五、支持向量的实际意义

我们回顾下这个概念为什么重要:

模型泛化的关键因子
决定模型参数的点
可以用于特征选择、异常点检测等任务

在某些核方法中,比如高维映射后的核SVM中,支持向量同样是关键,它们的组合决定了整个模型在高维空间的决策边界。


六、结语:为什么要关注“支持向量”?

SVM 并不是一个“黑盒模型”,其决策边界是完全由少数的支持向量决定的。理解支持向量的概念,有助于我们深入理解 SVM 的学习机制、优化方式,以及它在实际工程中的表现。

在模型调优时,比如使用 soft-margin SVM 或核 SVM,支持向量的变化也能直观反映模型的复杂度与过拟合程度。

推荐动手实践:用 scikit-learn 的 SVM 训练一个简单的模型,调用 model.support_vectors_,看看哪些点被选为了支持向量。

—— END ——