第 8 章 支持向量机
支持向量机(Support Vector Machine, SVM)解决的是分类边界问题。它和逻辑回归一样可以做二分类,但关注点不同:逻辑回归关心类别概率,支持向量机更关心分类边界离样本有多远。
本章先讲线性可分情况下的最大间隔,再讲软间隔和核函数。
8.1 分类超平面
二分类问题中,先把标签写成:
线性分类器用一个超平面划分类别:
其中:
| 符号 | 含义 |
|---|---|
| 输入特征向量 | |
| 决定超平面方向的权重向量 | |
| 控制超平面平移的偏置 | |
| 样本到分类边界一侧的带符号分数 |
预测规则为:
如果
二维平面中,超平面就是一条直线;三维空间中,超平面就是一个平面;更高维时仍然叫超平面。
8.2 间隔
对于一个样本
其中
支持向量机不仅要求分对,还希望样本离分类边界尽量远。样本到超平面的距离为:
考虑标签以后,几何间隔可以写成:
SVM 的目标是让离边界最近的样本也尽量远。这个“最近样本到边界的距离”就是分类间隔。
8.3 硬间隔 SVM
如果数据线性可分,可以要求所有样本都被正确分类,并且满足:
在这个约束下,两个支持超平面为:
它们之间的距离是:
最大化间隔等价于最小化
约束为:
这就是硬间隔 SVM。硬间隔要求所有训练样本完全可分,对噪声非常敏感。
8.4 支持向量
支持向量是离分类边界最近的样本。在线性可分情况下,它们满足:
这些样本决定了最终边界的位置。离边界很远的样本即使移动一点,通常也不会改变分类超平面。
这也是“支持向量机”名字的来源:真正支撑分类边界的是少数支持向量。
8.5 软间隔 SVM
现实数据往往不是完全线性可分的。可能有噪声点,也可能类别本身有重叠。软间隔 SVM 允许少量样本违反间隔约束。
引入松弛变量
优化目标变成:
其中
| 含义 | 可能结果 | |
|---|---|---|
| 较大 | 更重视训练样本分类正确 | 间隔可能变窄,方差变大 |
| 较小 | 更允许违反间隔 | 间隔更宽,模型更平滑 |
8.6 合页损失
合页损失(Hinge Loss)是 SVM 常用的损失函数。
软间隔 SVM 也可以从损失函数角度理解。对单个样本,合页损失为:
如果样本不仅分对,而且离边界足够远,即
如果样本分对但离边界太近,或者直接分错,损失大于 0。
因此 SVM 的目标可以写成:
第一项控制间隔,第二项惩罚训练样本违反间隔。
8.7 核函数
如果数据不能用直线或超平面分开,可以把样本映射到更高维空间:
然后在高维空间中做线性分类。
核函数的作用是:不显式计算
这样可以在不真正构造高维特征的情况下,得到非线性分类边界。
常见核函数:
| 核函数 | 形式 | 说明 |
|---|---|---|
| 线性核 | 不做非线性映射 | |
| 多项式核 | 构造多项式特征 | |
| 高斯核 | 按距离衡量相似度 |
多项式核中,
8.8 高斯核
高斯核也叫径向基函数核(Radial Basis Function Kernel, RBF Kernel):
如果
| 影响 | |
|---|---|
| 较小 | 只有很近的点才相似,边界更弯曲 |
| 较大 | 更远的点也相似,边界更平滑 |
使用高斯核前必须做特征缩放。因为高斯核依赖距离,某个特征数值范围过大时,会主导距离计算。
8.9 SVM 和逻辑回归
| 模型 | 损失函数 | 关注点 | 输出 |
|---|---|---|---|
| 逻辑回归 | 交叉熵 | 概率估计 | 概率 |
| SVM | 合页损失 | 最大间隔 | 类别或间隔分数 |
逻辑回归会持续关心概率是否更接近真实标签。SVM 更关心样本是否在正确一侧,并且离边界是否足够远。只要样本已经分对且间隔足够大,合页损失就是 0。
8.10 使用建议
- 样本数不大、特征维度较高时,线性 SVM 常常有效。
- 数据存在明显非线性边界时,可以尝试高斯核。
- 高斯核 SVM 在样本很多时训练成本较高。
- 特征缩放对 SVM 很重要,尤其是使用高斯核时。
- 多分类通常用一对多或一对一方式组合多个二分类 SVM。