4. 硬间隔SVM:优化目标推导、拉格朗日乘子法、对偶问题转换
各位同学,今天我们来啃硬间隔SVM最核心的一块骨头——优化目标推导、拉格朗日乘子法,以及对偶问题转换。
说实话,这部分是SVM的“灵魂”。我当年刚学的时候,也被一堆数学符号绕得头晕。但后来在实际项目中做环境数据分类时,才真正体会到:搞懂这些推导,你才能理解SVM为什么这么强。
4.1 从几何直观到数学表达
我们先回顾一下核心思想:硬间隔SVM要找一条“最宽”的马路,把两类样本隔开。
这条马路的“宽度”,在数学上叫间隔(margin)。我们的目标就是最大化这个间隔。
假设我们有训练样本集:
(x₁, y₁), (x₂, y₂), ..., (xₙ, yₙ)
其中 xᵢ ∈ Rᵈ, yᵢ ∈ {+1, -1}
分类超平面方程为:
wᵀx + b = 0
对于硬间隔SVM,所有样本必须被正确分类,且距离超平面至少为1:
yᵢ(wᵀxᵢ + b) ≥ 1, ∀i
嗯,这里要注意:为什么是“≥1”而不是“≥0”?
因为“1”是一个归一化的尺度。你可以想象成:我们把支持向量所在的平面定义为 wᵀx + b = ±1。这样间隔宽度就是 2/||w||。
核心优化目标:
最大化间隔 → 最小化 ||w||²
最终形式:
min ½||w||²
s.t. yᵢ(wᵀxᵢ + b) ≥ 1, ∀i
我个人习惯把这个问题叫做“原始问题”。它是一个凸二次规划问题,理论上可以直接求解。但为什么我们不直接解?
因为——维度灾难。当特征维度很高时(比如环境数据中有几百个传感器指标),直接求解 w 的计算量会爆炸。
4.2 拉格朗日乘子法:引入“惩罚”
这时候,拉格朗日乘子法就派上用场了。
它的核心思想是:把带约束的优化问题,转化为无约束的优化问题。
具体做法是:为每个约束条件 yᵢ(wᵀxᵢ + b) ≥ 1 引入一个拉格朗日乘子 αᵢ ≥ 0。
构造拉格朗日函数:
L(w, b, α) = ½||w||² - Σᵢ αᵢ [yᵢ(wᵀxᵢ + b) - 1]
这里 α = (α₁, α₂, ..., αₙ)ᵀ 是拉格朗日乘子向量。
我刚开始做这个推导时,总搞不清楚为什么是“减号”。后来想明白了:因为约束条件是“≥”,所以拉格朗日项前面是负号。如果是“≤”约束,前面就是正号。
避坑指南:
我曾经在写代码时,把拉格朗日函数的符号搞反了,结果优化出来的分类器完全不对。调试了两天才发现是符号问题。所以大家一定要记住:约束是“≥”时,拉格朗日项前面是负号。
4.3 对偶问题转换:化繁为简
有了拉格朗日函数,我们就可以进行对偶转换了。
原始问题是:
min_{w,b} max_{α≥0} L(w, b, α)
对偶问题是:
max_{α≥0} min_{w,b} L(w, b, α)
在凸优化中,当满足KKT条件时,原始问题和对偶问题的最优解相等。这就是强对偶性。
我们先求 min_{w,b} L(w, b, α):
对 w 求偏导并令为0:
∂L/∂w = w - Σᵢ αᵢ yᵢ xᵢ = 0
→ w = Σᵢ αᵢ yᵢ xᵢ
对 b 求偏导并令为0:
∂L/∂b = - Σᵢ αᵢ yᵢ = 0
→ Σᵢ αᵢ yᵢ = 0
把这两个结果代回拉格朗日函数,经过化简(这里省略中间步骤,大家课后可以自己推一遍),得到对偶问题:
max_α Σᵢ αᵢ - ½ Σᵢ Σⱼ αᵢ αⱼ yᵢ yⱼ xᵢᵀxⱼ
s.t. αᵢ ≥ 0, ∀i
Σᵢ αᵢ yᵢ = 0
你看,对偶问题中只出现了 α 变量,而且约束条件变得非常简单(只有非负和线性等式约束)。
更重要的是:目标函数中出现了 xᵢᵀxⱼ 这个内积项。这为后续引入核函数埋下了伏笔。
对偶问题的优势:
- 变量个数从 d+1(w和b)变为 n(α),当 n ≪ d 时优势明显
- 约束条件更简单,容易求解
- 自然引入核函数,可以处理非线性问题
- 支持向量对应 αᵢ > 0 的样本,具有稀疏性
4.4 KKT条件:最优解的必要条件
对偶问题的最优解必须满足KKT条件:
1. 原始可行性:yᵢ(wᵀxᵢ + b) ≥ 1
2. 对偶可行性:αᵢ ≥ 0
3. 互补松弛:αᵢ [yᵢ(wᵀxᵢ + b) - 1] = 0
4. 梯度为0:w = Σᵢ αᵢ yᵢ xᵢ, Σᵢ αᵢ yᵢ = 0
互补松弛条件特别有意思。它告诉我们:
- 如果 αᵢ > 0,那么 yᵢ(wᵀxᵢ + b) = 1,即该样本在间隔边界上——这就是支持向量
- 如果 yᵢ(wᵀxᵢ + b) > 1,那么 αᵢ = 0,即该样本对模型没有贡献
说白了,只有支持向量才决定最终的分类超平面。其他样本即使有再多,只要不是支持向量,对模型就没影响。
我在做空气质量分类项目时,采集了10万个样本,但最终支持向量只有几百个。这意味着模型非常“轻量”,推理速度极快。
4.5 知识体系总览
下面我用一张图来总结本章的核心逻辑:
4.6 实际项目中的体会
最后分享一点实战经验。
我在做河流水质分类项目时,原始特征有50多个(pH值、溶解氧、氨氮等指标)。如果直接求解原始问题,需要优化51个变量(50个w + 1个b)。
但样本量只有200个左右。转换成对偶问题后,只需要优化200个α变量。而且最终只有30多个支持向量,模型非常简洁。
注意事项:
- 硬间隔SVM要求数据完全线性可分——这在环境数据中很少见
- 如果数据有噪声,硬间隔会导致过拟合
- 实际项目中,我们通常使用软间隔SVM(下一章会讲)
- 对偶问题虽然变量多,但可以用SMO算法高效求解
嗯,到这里,硬间隔SVM的优化目标推导、拉格朗日乘子法、对偶问题转换就讲完了。
你想想看,从几何直观的“找最宽马路”,到数学上的凸优化问题,再到拉格朗日对偶转换——每一步都有它存在的道理。搞懂这些,你才算真正入了SVM的门。
公众号:蓝海资料掘金营,微信deep3321