第 12 章 支持向量机
支持向量机是一种强大的监督学习算法,既可以用于线性分类,也可以通过核函数处理非线性分类。
12.1 优化目标
支持向量机可以从逻辑回归的代价函数改造而来。
逻辑回归中,如果 y = 1,希望 theta^T x 很大;如果 y = 0,希望 theta^T x 很小。
SVM 使用新的代价函数 cost_1 和 cost_0,并把优化目标写成:
其中 C 类似于正则化强度的倒数。
12.2 大边界的直观理解
SVM 又叫大间隔分类器。
它不仅希望把样本分对,还希望决策边界离训练样本尽量远。这个距离称为间隔。
当 C 很大时,SVM 会更重视把训练样本分类正确。
当 C 较小时,SVM 更能容忍少量误分类,边界可能更平滑,泛化能力可能更好。
12.3 大边界分类背后的数学
向量内积可以理解为一个向量在另一个向量方向上的投影长度乘以另一个向量的长度。
SVM 的优化目标会倾向于找到较小的参数范数,同时满足分类约束。几何上,这对应更大的分类间隔。
在线性可分情况下,SVM 会寻找能最大化间隔的分割超平面。
12.4 核函数 1
核函数用于构造非线性决策边界。
高斯核函数会衡量样本 x 与某个标记点 l 的相似度:
如果 x 离 l 很近,相似度接近 1;如果很远,相似度接近 0。
sigma 控制相似度下降速度。
12.5 核函数 2
使用高斯核时,可以把每个训练样本作为一个标记点。
对于输入 x,计算它与所有标记点的相似度,得到新的特征向量。
C 和 sigma 会影响偏差和方差:
| 参数 | 偏差 / 方差影响 |
|---|---|
C 大 | 低偏差,高方差 |
C 小 | 高偏差,低方差 |
sigma 大 | 特征变化更平滑,可能高偏差 |
sigma 小 | 特征变化更剧烈,可能高方差 |
12.6 使用支持向量机
实际使用 SVM 时,通常调用成熟库,而不是自己从零实现优化算法。
使用建议:
- 特征数量很大、训练样本较少时,可以用线性核。
- 特征数量较小、训练样本中等时,可以尝试高斯核。
- 使用高斯核前一定要做特征缩放。
多类别分类中,可以用一对多方法训练多个 SVM 分类器。