一文彻底搞懂 SVM:支持向量机全流程解析与数学推导
支持向量机(SVM)是机器学习中经典的二分类模型,它通过找到一个最优的超平面,最大化正负样本的分类间隔,实现对数据的有效分类。本篇博客将从问题定义开始,逐步推导 SVM 的完整数学过程,包括优化目标、拉格朗日对偶理论、KKT 条件的应用和最终决策函数的构造。推导过程力求数学完备,同时以通俗语言讲解每一步推导背后的逻辑。
支持向量机(SVM)的数学推导全解
支持向量机(SVM)是机器学习中经典的二分类模型,它通过找到一个最优的超平面,最大化正负样本的分类间隔,实现对数据的有效分类。本篇博客将从问题定义开始,逐步推导 SVM 的完整数学过程,包括优化目标、拉格朗日对偶理论、KKT 条件的应用和最终决策函数的构造。推导过程力求数学完备,同时以通俗语言讲解每一步推导背后的逻辑。
1. 问题定义
1.1 超平面与分类
假设我们有一个训练数据集 D={(xi,yi)}i=1ND = \{(\mathbf{x}_i, y_i)\}_{i=1}^ND={(xi,yi)}i=1N,其中 xi∈Rn\mathbf{x}_i \in \mathbb{R}^nxi∈Rn 是特征向量,yi∈{−1,+1}y_i \in \{-1, +1\}yi∈{−1,+1} 是分类标签。目标是找到一个超平面,将正类样本 yi=+1y_i = +1yi=+1 和负类样本 yi=−1y_i = -1yi=−1 尽可能分开。
超平面
一个超平面可以写成如下数学形式:
w⊤x+b=0, \mathbf{w}^\top \mathbf{x} + b = 0, w⊤x+b=0,
其中:
- w∈Rn\mathbf{w} \in \mathbb{R}^nw∈Rn 是法向量,决定了超平面的方向;
- b∈Rb \in \mathbb{R}b∈R 是偏置,决定了超平面到原点的距离。
分类的条件
对于任意样本点 xi\mathbf{x}_ixi:
- 如果 yi=+1y_i = +1yi=+1(正类),样本应该被分布在超平面的一个侧面,满足 w⊤xi+b>0\mathbf{w}^\top \mathbf{x}_i + b > 0w⊤xi+b>0;
- 如果 yi=−1y_i = -1yi=−1(负类),样本应该被分布在超平面的另一个侧面,满足 w⊤xi+b<0\mathbf{w}^\top \mathbf{x}_i + b < 0w⊤xi+b<0。
为了统一地描述正负样本的分类关系,我们引入 yiy_iyi(取值为 +1+1+1 或 −1-1−1),将分类条件重新表达为:
yi(w⊤xi+b)>0,∀i. y_i (\mathbf{w}^\top \mathbf{x}_i + b) > 0, \quad \forall i. yi(w⊤xi+b)>0,∀i.
-
对于正类样本(yi=+1y_i = +1yi=+1):
分类条件是 w⊤xi+b>0\mathbf{w}^\top \mathbf{x}_i + b > 0w⊤xi+b>0,这意味着点 xi\mathbf{x}_ixi 位于超平面的正侧面。乘以 yi=+1y_i = +1yi=+1 后,条件仍然满足:
yi(w⊤xi+b)=(w⊤xi+b)>0. y_i (\mathbf{w}^\top \mathbf{x}_i + b) = (\mathbf{w}^\top \mathbf{x}_i + b) > 0. yi(w⊤xi+b)=(w⊤xi+b)>0. -
对于负类样本(yi=−1y_i = -1yi=−1):
分类条件是 w⊤xi+b<0\mathbf{w}^\top \mathbf{x}_i + b < 0w⊤xi+b<0,这意味着点 xi\mathbf{x}_ixi 位于超平面的负侧面。乘以 yi=−1y_i = -1yi=−1 后,负号翻转,使得条件仍然满足:
yi(w⊤xi+b)=−(w⊤xi+b)>0. y_i (\mathbf{w}^\top \mathbf{x}_i + b) = -(\mathbf{w}^\top \mathbf{x}_i + b) > 0. yi(w⊤xi+b)=−(w⊤xi+b)>0.
因此,不论正类还是负类,yi(w⊤xi+b)y_i (\mathbf{w}^\top \mathbf{x}_i + b)yi(w⊤xi+b) 在分类正确时都大于 000,可以用统一的条件描述分类关系。
1.2 分类间隔
样本到超平面的几何距离
要量化样本与超平面之间的关系,我们关注样本到超平面的几何距离。对于样本点 xi\mathbf{x}_ixi,到超平面的几何距离公式为:
∣w⊤xi+b∣∥w∥, \frac{| \mathbf{w}^\top \mathbf{x}_i + b |}{\|\mathbf{w}\|}, ∥w∥∣w⊤xi+b∣,
其中 ∥w∥=w⊤w\|\mathbf{w}\| = \sqrt{\mathbf{w}^\top \mathbf{w}}∥w∥=w⊤w 是法向量的欧几里得范数。
分类间隔的定义
我们希望找到一个超平面,使得正负样本之间的间隔最大化。这里需要明确两种“分类间隔”的定义和区别:
- 几何间隔:单个样本到超平面的几何距离;
几何间隔用于度量单个样本点到超平面的距离。对于任意样本点 xi\mathbf{x}_ixi,到超平面的几何距离定义为:
∣w⊤xi+b∣∥w∥, \frac{| \mathbf{w}^\top \mathbf{x}_i + b |}{\|\mathbf{w}\|}, ∥w∥∣w⊤xi+b∣,
其中:
- w\mathbf{w}w 是超平面的法向量;
- ∥w∥=w⊤w\|\mathbf{w}\| = \sqrt{\mathbf{w}^\top \mathbf{w}}∥w∥=w⊤w 是法向量的欧几里得范数。
对于支持向量机的优化目标,我们关心的并不是任意样本到超平面的几何距离,而是距离最近的样本点到超平面的几何距离。这些最近的样本点被称为支持向量。
为了方便后续推导,我们可以通过归一化 w\mathbf{w}w 和 bbb,调整几何间隔的表达形式。
分类器归一化假设
我们在优化问题中引入了归一化假设,即通过调整 w\mathbf{w}w 和 bbb,让支持向量到超平面的几何距离恰好为 111。在这种归一化条件下,支持向量满足:
yi(w⊤xi+b)=1. y_i (\mathbf{w}^\top \mathbf{x}_i + b) = 1. yi(w⊤xi+b)=1.
对于其他样本点,由于几何距离大于 111,满足:
yi(w⊤xi+b)≥1,∀i. y_i (\mathbf{w}^\top \mathbf{x}_i + b) \geq 1, \quad \forall i. yi(w⊤xi+b)≥1,∀i.
在归一化条件下,单个样本点到超平面的几何距离为:
几何间隔=1∥w∥. \text{几何间隔} = \frac{1}{\|\mathbf{w}\|}. 几何间隔=∥w∥1.
- 分类间隔:正类支持向量与负类支持向量之间的距离。
分类间隔描述的是正类支持向量与负类支持向量之间的距离,具体是:
- 最近的正类支持向量到超平面的距离;
- 最近的负类支持向量到超平面的距离。
两侧支持向量之间的总距离(即分类间隔)是:
分类间隔=2∥w∥. \text{分类间隔} = \frac{2}{\|\mathbf{w}\|}. 分类间隔=∥w∥2.
关系说明
- 分类间隔是两倍的几何间隔(因为它考虑的是正负支持向量之间的总距离)。
- 几何间隔则仅描述单个点(支持向量)到超平面的距离。
在支持向量机中,最大化分类间隔实际上是等价于最大化几何间隔,因为两者的比例是固定的。
1.3 问题转化
最大化分类间隔
在分类问题中,我们追求样本与超平面的距离尽可能大,即最大化分类间隔。如果分类间隔更大,分类器对样本的判别能力就更强,也就是说分类器的泛化能力更好。
我们希望选择的超平面尽可能“远离”样本点。这是因为:
- 如果样本点离超平面更远,即分类间隔更大,那么分类器的鲁棒性更好;
- 这样的分类器对于未知样本的预测会更稳定,具有更好的泛化能力。
问题简化
为了最大化分类间隔 2∥w∥\frac{2}{\|\mathbf{w}\|}∥w∥2,我们可以将问题转化为最小化 ∥w∥\|\mathbf{w}\|∥w∥,即:
minw,b∥w∥. \min_{\mathbf{w}, b} \|\mathbf{w}\|. w,bmin∥w∥.
为了计算方便,通常我们最小化的是 12∥w∥2\frac{1}{2} \|\mathbf{w}\|^221∥w∥2(平方形式的目标函数使得偏导数更简单)。因此,目标函数变为:
minw,b12∥w∥2. \min_{\mathbf{w}, b} \frac{1}{2} \|\mathbf{w}\|^2. w,bmin21∥w∥2.
同时,分类间隔的归一化条件导致如下约束条件:
yi(w⊤xi+b)≥1,∀i. y_i (\mathbf{w}^\top \mathbf{x}_i + b) \geq 1, \quad \forall i. yi(w⊤xi+b)≥1,∀i.
支持向量的引入
从上述归一化条件可以看出:
- 分类结果由那些紧贴支持向量边界的点决定。这些点满足:
yi(w⊤xi+b)=1. y_i (\mathbf{w}^\top \mathbf{x}_i + b) = 1. yi(w⊤xi+b)=1. - 对于其他离超平面更远的点,yi(w⊤xi+b)>1y_i (\mathbf{w}^\top \mathbf{x}_i + b) > 1yi(w⊤xi+b)>1,它们对分类器的位置没有直接影响。
因此,我们可以通过只关注 支持向量 来确定分类器的位置。支持向量是使 yi(w⊤xi+b)=1y_i (\mathbf{w}^\top \mathbf{x}_i + b) = 1yi(w⊤xi+b)=1 的点。这一性质使得 SVM 具有稀疏性:最终模型只依赖于支持向量,而不依赖于其他点。
转换为优化问题
最终,SVM 的目标可以总结为:找到一个超平面,最小化 12∥w∥2\frac{1}{2} \|\mathbf{w}\|^221∥w∥2,同时满足约束条件:
yi(w⊤xi+b)≥1,∀i. y_i (\mathbf{w}^\top \mathbf{x}_i + b) \geq 1, \quad \forall i. yi(w⊤xi+b)≥1,∀i.
这就构成了一个带约束的优化问题,其核心思想是:
- 通过最大化分类间隔(对应最小化 ∥w∥\|\mathbf{w}\|∥w∥)找到最优超平面;
- 分类结果仅依赖于支持向量。
2. 优化问题建模
在上述归一化假设下,SVM 的目标是最大化分类间隔,等价于最小化 ∣w∣|\mathbf{w}|∣w∣,即:
minw,b12∥w∥2 \min_{\mathbf{w}, b} \frac{1}{2} \|\mathbf{w}\|^2 w,bmin21∥w∥2
同时满足约束条件:
s.t. yi(w⊤xi+b)≥1,∀i. \text{s.t. } y_i (\mathbf{w}^\top \mathbf{x}_i + b) \geq 1, \quad \forall i. s.t. yi(w⊤xi+b)≥1,∀i.
这就构成了一个典型的 约束优化问题 。直接优化上述问题并不方便,因此我们引入拉格朗日乘子法。
3. 拉格朗日乘子法
3.1 拉格朗日函数构造
为将约束融入优化目标,引入拉格朗日乘子 αi≥0\alpha_i \geq 0αi≥0(i=1,…,Ni = 1, \dots, Ni=1,…,N),定义拉格朗日函数:
L(w,b,α)=12∥w∥2−∑i=1Nαi[yi(w⊤xi+b)−1] L(\mathbf{w}, b, \boldsymbol{\alpha}) = \frac{1}{2} \|\mathbf{w}\|^2 - \sum_{i=1}^N \alpha_i \left[ y_i (\mathbf{w}^\top \mathbf{x}_i + b) - 1 \right] L(w,b,α)=21∥w∥2−i=1∑Nαi[yi(w⊤xi+b)−1]
其中,α=[α1,α2,…,αN]⊤\boldsymbol{\alpha} = [\alpha_1, \alpha_2, \dots, \alpha_N]^\topα=[α1,α2,…,αN]⊤ 是拉格朗日乘子向量。
拉格朗日函数将约束条件通过 αi\alpha_iαi 融入优化目标,使得我们可以处理无约束优化问题。
3.2 KKT 条件
KKT 条件是约束优化问题的必要条件。在最优解处,需满足以下条件:
-
原始约束条件:
yi(w⊤xi+b)−1≥0,∀i;y_i (\mathbf{w}^\top \mathbf{x}_i + b) - 1 \geq 0, \quad \forall i;yi(w⊤xi+b)−1≥0,∀i;
这是问题本身的约束条件,确保支持向量机的分类间隔正确。 -
拉格朗日乘子非负性:
αi≥0,∀i;\alpha_i \geq 0, \quad \forall i;αi≥0,∀i;
拉格朗日乘子只能对违反约束的情况施加惩罚,因此必须非负。 -
互补松弛条件:
αi[yi(w⊤xi+b)−1]=0,∀i;\alpha_i \left[ y_i (\mathbf{w}^\top \mathbf{x}_i + b) - 1 \right] = 0, \quad \forall i;αi[yi(w⊤xi+b)−1]=0,∀i;
表示对于每个样本,只有在分类间隔恰好为 1 的情况下 αi\alpha_iαi 才可能非零(支持向量的定义),否则 αi=0\alpha_i = 0αi=0。 -
梯度为零条件:
∂L∂w=0,∂L∂b=0.\frac{\partial L}{\partial \mathbf{w}} = 0, \quad \frac{\partial L}{\partial b} = 0.∂w∂L=0,∂b∂L=0.
确保在最优解处,目标函数对优化变量的梯度为零。
总结:
KKT 条件是连接原始优化问题与对偶问题的关键桥梁,只有在满足 KKT 条件的情况下,通过拉格朗日方法求解得到的解,才能与原始问题的最优解等价 。这是支持向量机优化过程严谨性和数学完备性的核心保障。
4. 求解过程
4.1 求偏导
-
对 w\mathbf{w}w 求偏导:
∂L∂w=w−∑i=1Nαiyixi=0 \frac{\partial L}{\partial \mathbf{w}} = \mathbf{w} - \sum_{i=1}^N \alpha_i y_i \mathbf{x}_i = 0 ∂w∂L=w−i=1∑Nαiyixi=0
解得:
w=∑i=1Nαiyixi \mathbf{w} = \sum_{i=1}^N \alpha_i y_i \mathbf{x}_i w=i=1∑Nαiyixi
这表示最优的 w\mathbf{w}w 是由支持向量加权求和得到的,其中 αi\alpha_iαi 是权重,yiy_iyi 是类别,xi\mathbf{x}_ixi 是样本。 -
对 bbb 求偏导:
∂L∂b=−∑i=1Nαiyi=0 \frac{\partial L}{\partial b} = -\sum_{i=1}^N \alpha_i y_i = 0 ∂b∂L=−i=1∑Nαiyi=0
解得:
∑i=1Nαiyi=0 \sum_{i=1}^N \alpha_i y_i = 0 i=1∑Nαiyi=0
这表示支持向量的拉格朗日乘子加权和在类别上必须平衡。
4.2 对偶问题
将 w=∑i=1Nαiyixi\mathbf{w} = \sum_{i=1}^N \alpha_i y_i \mathbf{x}_iw=∑i=1Nαiyixi 代入拉格朗日函数 LLL 中,消去 w\mathbf{w}w 和 bbb,得到仅关于 α\boldsymbol{\alpha}α 的函数:
首先,将 12∥w∥2\frac{1}{2} \|\mathbf{w}\|^221∥w∥2 展开:
12∥w∥2=12(∑i=1Nαiyixi)⊤(∑j=1Nαjyjxj). \frac{1}{2} \|\mathbf{w}\|^2 = \frac{1}{2} \left( \sum_{i=1}^N \alpha_i y_i \mathbf{x}_i \right)^\top \left( \sum_{j=1}^N \alpha_j y_j \mathbf{x}_j \right). 21∥w∥2=21(i=1∑Nαiyixi)⊤(j=1∑Nαjyjxj).
利用向量的内积展开公式:
12∥w∥2=12∑i=1N∑j=1Nαiαjyiyj(xi⊤xj). \frac{1}{2} \|\mathbf{w}\|^2 = \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j (\mathbf{x}_i^\top \mathbf{x}_j). 21∥w∥2=21i=1∑Nj=1∑Nαiαjyiyj(xi⊤xj).
拉格朗日函数 LLL 中的第一项为:
−12∥w∥2=−12∑i=1N∑j=1Nαiαjyiyj(xi⊤xj). -\frac{1}{2} \|\mathbf{w}\|^2 = -\frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j (\mathbf{x}_i^\top \mathbf{x}_j). −21∥w∥2=−21i=1∑Nj=1∑Nαiαjyiyj(xi⊤xj).
再看第二项:
∑i=1Nαi. \sum_{i=1}^N \alpha_i. i=1∑Nαi.
因此,对偶问题的目标函数为:
maxα∑i=1Nαi−12∑i=1N∑j=1Nαiαjyiyj(xi⊤xj). \max_{\boldsymbol{\alpha}} \sum_{i=1}^N \alpha_i - \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j (\mathbf{x}_i^\top \mathbf{x}_j). αmaxi=1∑Nαi−21i=1∑Nj=1∑Nαiαjyiyj(xi⊤xj).
4.3 求解 α\boldsymbol{\alpha}α
优化上述对偶问题后,得到最优解 α∗=[α1∗,α2∗,…,αN∗]⊤\boldsymbol{\alpha}^* = [\alpha_1^*, \alpha_2^*, \dots, \alpha_N^*]^\topα∗=[α1∗,α2∗,…,αN∗]⊤,从中可得法向量:
w=∑i=1Nαi∗yixi. \mathbf{w} = \sum_{i=1}^N \alpha_i^* y_i \mathbf{x}_i. w=i=1∑Nαi∗yixi.
支持向量是那些对应 αi∗>0\alpha_i^* > 0αi∗>0 的样本点。
5. 最终结果
在支持向量机中,我们通过优化对偶问题的拉格朗日乘子 αi∗\alpha_i^*αi∗ 来求解超平面。最终的结果包括偏置项 bbb 和分类决策函数 f(x)f(\mathbf{x})f(x)。这一部分不仅适用于线性可分数据,还可以通过引入核函数扩展到非线性可分问题。
5.1 偏置项 bbb
对于任意支持向量 xk\mathbf{x}_kxk(满足 αk∗>0\alpha_k^* > 0αk∗>0 的样本),根据支持向量的约束条件:
yk(w⊤xk+b)=1, y_k (\mathbf{w}^\top \mathbf{x}_k + b) = 1, yk(w⊤xk+b)=1,
将 w\mathbf{w}w 的表达式 w=∑i=1Nαi∗yixi\mathbf{w} = \sum_{i=1}^N \alpha_i^* y_i \mathbf{x}_iw=∑i=1Nαi∗yixi 代入得到:
b=yk−∑i=1Nαi∗yi(xi⊤xk). b = y_k - \sum_{i=1}^N \alpha_i^* y_i (\mathbf{x}_i^\top \mathbf{x}_k). b=yk−i=1∑Nαi∗yi(xi⊤xk).
注意:
- 理论上,任意支持向量都可以用来计算 bbb;
- 在实际计算中,取所有支持向量的结果求平均以减少数值误差。
5.2 决策函数
根据支持向量机的原理,分类决策函数为:
f(x)=sign(w⊤x+b). f(\mathbf{x}) = \text{sign} \left( \mathbf{w}^\top \mathbf{x} + b \right). f(x)=sign(w⊤x+b).
将 w\mathbf{w}w 的表达式代入:
f(x)=sign(∑i=1Nαi∗yi(xi⊤x)+b). f(\mathbf{x}) = \text{sign} \left( \sum_{i=1}^N \alpha_i^* y_i (\mathbf{x}_i^\top \mathbf{x}) + b \right). f(x)=sign(i=1∑Nαi∗yi(xi⊤x)+b).
这表明:
- 决策函数仅依赖于支持向量,因为 αi∗=0\alpha_i^* = 0αi∗=0 对应的样本不参与决策;
- 决策函数只需要计算支持向量与待分类样本 x\mathbf{x}x 的内积 xi⊤x\mathbf{x}_i^\top \mathbf{x}xi⊤x。
5.3 核函数的引入:处理非线性可分问题
在许多实际问题中,数据并非线性可分。这时我们可以通过核方法(Kernel Trick),将原始特征映射到一个更高维的特征空间,使得数据在高维空间中线性可分。
核函数的作用
核函数是一种函数,用来高效地计算两个样本在映射空间中的内积,而不需要显式地进行映射。记映射函数为 ϕ(⋅)\phi(\cdot)ϕ(⋅),核函数定义为:
K(xi,xj)=ϕ(xi)⊤ϕ(xj). K(\mathbf{x}_i, \mathbf{x}_j) = \phi(\mathbf{x}_i)^\top \phi(\mathbf{x}_j). K(xi,xj)=ϕ(xi)⊤ϕ(xj).
使用核函数替代内积
在对偶问题和决策函数中,所有的内积 xi⊤xj\mathbf{x}_i^\top \mathbf{x}_jxi⊤xj 都可以替换为核函数 K(xi,xj)K(\mathbf{x}_i, \mathbf{x}_j)K(xi,xj)。因此,决策函数扩展为:
f(x)=sign(∑i=1Nαi∗yiK(xi,x)+b). f(\mathbf{x}) = \text{sign} \left( \sum_{i=1}^N \alpha_i^* y_i K(\mathbf{x}_i, \mathbf{x}) + b \right). f(x)=sign(i=1∑Nαi∗yiK(xi,x)+b).
通过核函数,支持向量机可以有效地处理非线性可分问题,而不需要显式地在高维空间中操作。这使得 SVM 成为一种强大的非线性分类方法。
常见核函数
以下是一些常见的核函数及其用途:
-
线性核:
K(xi,xj)=xi⊤xj K(\mathbf{x}_i, \mathbf{x}_j) = \mathbf{x}_i^\top \mathbf{x}_j K(xi,xj)=xi⊤xj
等价于标准线性 SVM,不做特征映射。 -
多项式核:
K(xi,xj)=(xi⊤xj+c)d K(\mathbf{x}_i, \mathbf{x}_j) = (\mathbf{x}_i^\top \mathbf{x}_j + c)^d K(xi,xj)=(xi⊤xj+c)d
适用于捕获多项式关系的数据,ddd 是多项式的次数。 -
高斯核(RBF 核):
K(xi,xj)=exp(−∥xi−xj∥22σ2) K(\mathbf{x}_i, \mathbf{x}_j) = \exp\left(-\frac{\|\mathbf{x}_i - \mathbf{x}_j\|^2}{2\sigma^2}\right) K(xi,xj)=exp(−2σ2∥xi−xj∥2)
非线性分类的常用选择,适合处理复杂的非线性边界。 -
Sigmoid 核:
K(xi,xj)=tanh(axi⊤xj+c) K(\mathbf{x}_i, \mathbf{x}_j) = \tanh(a \mathbf{x}_i^\top \mathbf{x}_j + c) K(xi,xj)=tanh(axi⊤xj+c)
与神经网络的激活函数相关。
6. 总结
通过完整推导,我们展示了如何从最大化分类间隔的思想出发,构造支持向量机的优化问题,并通过拉格朗日乘子法与 KKT 条件求解,最终得到决策函数。
SVM 的关键在于:
- 支持向量的稀疏性:最终模型 仅依赖于支持向量 ;
- 对偶问题的计算效率:利用对偶问题可高效处理高维数据;
- 扩展到核函数:通过内积替换可轻松扩展至非线性问题。
支持向量机的这一套理论奠定了其在机器学习领域的经典地位。
更多推荐
所有评论(0)