本文介绍支持向量机(SVM)的理论推导。
一、SVM 的基本思想
SVM 的目标是找到一个最优超平面,将样本分为不同的类别,并最大化类别间的间隔。
1. 线性可分情况下:
在特征空间中找到一个超平面,使得:
- 样本之间的分类间隔(margin)最大。
- 分类误差最小。
超平面可以表示为:
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0
其中:
- w 是法向量,决定了超平面的方向。
- b 是偏置,决定了超平面到原点的距离。
对于任意样本
(
x
i
,
y
i
)
(x_i ,y_i)
(xi,yi),其中
y
i
y_i
yi ∈{−1,1} 表示类别标签,超平面需要满足:
y
i
(
w
T
x
i
+
b
)
≥
1
y_i(w^Tx_i + b) ≥ 1
yi(wTxi+b)≥1
1. 优化目标:
最大化间隔(margin)等价于最小化
1
2
∥
w
⃗
∥
2
\frac{1}{2} \|\vec{w}\|^2
21∥w∥2:
min
w
,
b
1
2
∥
w
⃗
∥
2
\min\limits_{w,b} \frac{1}{2} \|\vec{w}\|^2
w,bmin21∥w∥2
约束条件:
y
i
(
w
T
x
i
+
b
)
>
1
,
i
=
1
,
2
,
…
,
n
y_i(w^T x_i + b) \gt 1, i = 1, 2, \dots, n
yi(wTxi+b)>1,i=1,2,…,n
二、线性不可分情况
在实际问题中,数据通常线性不可分,此时需要引入:
1. 松弛变量 ξ i ξ_i ξi:
- 允许部分样本点违反约束条件。
- 目标函数变为:
min w , b , ξ 1 2 ∥ w ⃗ ∥ 2 + C ∑ i = 1 n ξ i \min\limits_{w,b,ξ} \frac{1}{2} \|\vec{w}\|^2 +C\sum\limits_{i=1}^n ξ_i w,b,ξmin21∥w∥2+Ci=1∑nξi
其中 C 是惩罚参数,控制误差与间隔的权衡。
2. 核函数:
- 将低维数据映射到高维特征空间,使其线性可分。
- 核函数定义为:
K ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j ) K(x_i, x_j) = ϕ(x_i) \cdot ϕ(x_j) K(xi,xj)=ϕ(xi)⋅ϕ(xj)
常用核函数包括: - 线性核: K ( x i , x j ) = x i ⋅ x j K(x_i, x_j) = x_i \cdot x_j K(xi,xj)=xi⋅xj
- 多项式核: K ( x i , x j ) = ( x i ⋅ x j + c ) d K(x_i, x_j) = (x_i \cdot x_j + c)^d K(xi,xj)=(xi⋅xj+c)d
- 高斯核(RBF 核): K ( x i , x j ) = e x p ( − ∥ x i − x j ∥ 2 / ( 2 σ 2 ) ) K(x_i, x_j) = exp(−∥x_i − x_j ∥^2 /(2σ^2)) K(xi,xj)=exp(−∥xi−xj∥2/(2σ2))
- Sigmoid 核: K ( x i , x j ) = t a n h ( α x i ⋅ x j + c ) K(x_i, x_j) = tanh(αx_i ⋅ x_j +c) K(xi,xj)=tanh(αxi⋅xj+c)
三、SVM 的优化过程
SVM 的优化问题通常通过 拉格朗日对偶问题 解决:
1. 原始问题:
min w , b , ξ 1 2 ∥ w ⃗ ∥ 2 + C ∑ i = 1 n ξ i s . t y i ( w T x i + b ) ≥ 1 − ξ i , ξ i ≥ 0 , i = 1 , 2 , … , n \begin{aligned} \min\limits_{w,b,ξ} \quad & \frac{1}{2} \|\vec{w}\|^2 +C\sum\limits_{i=1}^n ξ_i \\ {s.t} \quad & y_i (w^T x_i + b) ≥ 1−ξ_i ,\ & ξ_i ≥ 0, \quad & i = 1, 2, \ldots, n \end{aligned} w,b,ξmins.t21∥w∥2+Ci=1∑nξiyi(wTxi+b)≥1−ξi, ξi≥0,i=1,2,…,n
实际上,引入核函数后,优化问题需要用
ϕ
(
x
i
)
\phi(x_i)
ϕ(xi) 代替约束条件中的
x
i
x_i
xi,即原始问题变为如下:
min
w
,
b
,
ξ
1
2
∥
w
⃗
∥
2
+
C
∑
i
=
1
n
ξ
i
s
.
t
y
i
(
w
T
ϕ
(
x
i
)
+
b
)
≥
1
−
ξ
i
ξ
i
≥
0
\begin{aligned} \min\limits_{w,b,ξ} \quad & \frac{1}{2} \|\vec{w}\|^2 +C\sum\limits_{i=1}^n ξ_i \\ {s.t} \quad & y_i (w^T \red{\phi(x_i)} + b) ≥ 1−ξ_i \\ & ξ_i ≥ 0 \end{aligned}
w,b,ξmins.t21∥w∥2+Ci=1∑nξiyi(wTϕ(xi)+b)≥1−ξiξi≥0
变换一下约束条件的符号,可以得到等价的标准型:
min
ω
,
b
,
ξ
1
2
∥
ω
⃗
∥
2
−
C
∑
i
=
1
n
ξ
i
s
.
t
1
+
ξ
i
−
y
i
ω
T
ϕ
(
x
i
)
−
y
i
b
≤
0
ξ
i
≤
0
,
i
=
1
,
2
,
…
,
n
(1)
\begin{aligned} \min\limits_{\omega,b,ξ} \quad & \frac{1}{2} \|\vec{\omega}\|^2 - C\sum\limits_{i=1}^n ξ_i \\ {s.t} \quad & 1 + ξ_i - y_i \omega^T \red{\phi(x_i)} - y_i b \leq 0 \\ & ξ_i \leq 0, \quad & i = 1, 2, \ldots, n \end{aligned}\tag{1}
ω,b,ξmins.t21∥ω∥2−Ci=1∑nξi1+ξi−yiωTϕ(xi)−yib≤0ξi≤0,i=1,2,…,n(1)
由于我们往往不知道
ϕ
(
x
i
)
\phi(x_i)
ϕ(xi)的显示表达,因此我们需要想办法把优化问题转换为没有
ϕ
(
x
i
)
\phi(x_i)
ϕ(xi) 的等价问题,因此就引入了对偶问题。
注意:该优化问题强对偶成立,即原始问题的最优解
p
∗
p^*
p∗ 等于对偶问题的
d
∗
d^*
d∗。
2. 对偶问题:
将约束条件引入优化目标,得到对偶形式:
max
α
∑
i
=
1
n
α
i
−
1
2
⋅
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
s
.
t
0
≤
α
i
≤
C
,
∑
i
=
1
n
α
i
y
i
=
0
(2)
\begin{aligned} \max\limits_{α} \quad & \sum\limits_{i=1}^n α_i - \frac{1}{2} \cdot \sum\limits_{i=1}^n \sum\limits_{j=1}^n α_i α_j y_i y_j K(x_i, x_j) \\ {s.t} \quad & 0 \leq α_i \leq C , \quad \sum\limits_{i=1}^n α_i y_i = 0 \end{aligned}\tag{2}
αmaxs.ti=1∑nαi−21⋅i=1∑nj=1∑nαiαjyiyjK(xi,xj)0≤αi≤C,i=1∑nαiyi=0(2)
其中
α
i
α_i
αi是拉格朗日乘子。
3. 优化算法:
对偶问题通常通过 SMO(序列最小优化) 或其他数值方法求解。
补充:对偶函数推导:
式(1)的拉格朗日函数为:
L
(
ω
,
α
,
β
)
=
1
2
∥
w
⃗
∥
2
−
C
∑
i
=
1
n
ξ
i
+
∑
i
=
1
n
α
i
(
1
+
ξ
i
−
y
i
ω
T
ϕ
(
x
i
)
−
y
i
b
)
+
∑
i
=
1
n
β
i
ξ
i
(3)
\begin{aligned} L(\omega, \alpha, \beta) = & \frac{1}{2} \|\vec{w}\|^2 - C\sum\limits_{i=1}^n ξ_i + \sum\limits_{i=1}^n \alpha_i(1 + ξ_i - y_i \omega^T \red{\phi(x_i)} - y_i b) \\ & + \sum\limits_{i=1}^n \beta_iξ_i \\ \end{aligned}\tag{3}
L(ω,α,β)=21∥w∥2−Ci=1∑nξi+i=1∑nαi(1+ξi−yiωTϕ(xi)−yib)+i=1∑nβiξi(3)
在给定
α
,
β
\alpha,\beta
α,β 对偶函数的值,实质上就是对于多有
(
ω
,
ξ
i
,
b
)
(\omega,ξ_i, b)
(ω,ξi,b) 求最小值。即对偶问题为:
max
α
,
β
θ
(
α
,
β
)
=
inf
ω
,
ξ
i
,
b
L
(
ω
,
α
,
β
)
s
.
t
α
i
≥
0
,
β
i
≥
0
,
i
=
1
,
2
,
…
,
n
(4)
\begin{aligned} \max\limits_{\alpha, \beta} \quad & \theta(\alpha,\beta) = \inf\limits_{\omega,ξ_i, b} L(\omega, \alpha, \beta) \\ {s.t} \quad & \alpha_i \geq 0, \quad \beta_i \geq 0, \quad i = 1, 2, \ldots, n \end{aligned}\tag{4}
α,βmaxs.tθ(α,β)=ω,ξi,binfL(ω,α,β)αi≥0,βi≥0,i=1,2,…,n(4)
其中
i
n
f
inf
inf 是极小化的意思。
注意:该问题没有等式约束,这里的
α
i
,
β
i
\alpha_i, \beta_i
αi,βi 都是原始优化问题的不等式约束的拉格朗日乘子。
为了求得拉格朗日函数(式子3)的最小值,需要在对应变量求一阶偏导等于0 即可,可得:
∂
L
∂
ω
=
0
⇒
ω
=
∑
i
=
1
n
α
i
y
i
ϕ
(
x
i
)
∂
L
∂
ξ
i
=
0
⇒
α
i
+
β
i
=
C
∂
L
∂
b
=
0
⇒
∑
i
=
1
n
α
i
y
i
=
0
\begin{aligned} \frac{\partial L}{\partial \omega} = 0 & \Rightarrow \quad \omega = \sum\limits_{i=1}^n \alpha_iy_i\phi(x_i) \\ \frac{\partial L}{\partial ξ_i} = 0 & \Rightarrow \quad \alpha_i + \beta_i = C \\ \frac{\partial L}{\partial b} = 0 & \Rightarrow \quad \sum\limits_{i=1}^n \alpha_iy_i = 0 \end{aligned}
∂ω∂L=0∂ξi∂L=0∂b∂L=0⇒ω=i=1∑nαiyiϕ(xi)⇒αi+βi=C⇒i=1∑nαiyi=0
可得:
1
2
∥
w
⃗
∥
2
=
1
2
ω
T
ω
=
1
2
(
∑
i
=
1
n
α
i
y
i
ϕ
(
x
i
)
)
T
(
∑
j
=
1
n
α
j
y
j
ϕ
(
x
j
)
)
=
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
ϕ
(
x
i
)
T
ϕ
(
x
j
)
\begin{aligned} \frac{1}{2} \|\vec{w}\|^2 & = \frac{1}{2} \omega^T\omega \\ &=\frac{1}{2} (\sum\limits_{i=1}^n \alpha_iy_i\phi(x_i))^T(\sum\limits_{j=1}^n \alpha_jy_j\phi(x_j)) \\ &= \frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n \alpha_i\alpha_jy_iy_j\red{\phi(x_i)^T\phi(x_j)} \end{aligned}
21∥w∥2=21ωTω=21(i=1∑nαiyiϕ(xi))T(j=1∑nαjyjϕ(xj))=21i=1∑nj=1∑nαiαjyiyjϕ(xi)Tϕ(xj)
又有:
−
∑
i
=
1
n
α
i
y
i
ω
T
ϕ
(
x
i
)
=
−
∑
i
=
1
n
α
i
y
i
(
∑
j
=
1
n
α
j
y
j
ϕ
(
x
j
)
)
T
ϕ
(
x
i
)
=
−
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
ϕ
(
x
j
)
T
ϕ
(
x
i
)
\begin{aligned} -\sum\limits_{i=1}^n \alpha_iy_i \omega^T \phi(x_i) & = -\sum\limits_{i=1}^n \alpha_iy_i (\sum\limits_{j=1}^n \alpha_jy_j\phi(x_j))^T \phi(x_i) \\ & = - \sum\limits_{i=1}^n\sum\limits_{j=1}^n \alpha_i\alpha_jy_iy_j\red{\phi(x_j)^T\phi(x_i)} \end{aligned}
−i=1∑nαiyiωTϕ(xi)=−i=1∑nαiyi(j=1∑nαjyjϕ(xj))Tϕ(xi)=−i=1∑nj=1∑nαiαjyiyjϕ(xj)Tϕ(xi)
注意红色部分可以用核函数 K ( x i , x j ) K(x_i, x_j) K(xi,xj) 替换。(妙啊)
带入到式子(4)中,得:
θ
(
α
,
β
)
=
∑
i
=
1
n
α
i
−
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
\theta(\alpha,\beta) = \sum\limits_{i=1}^n \alpha_i - \frac{1}{2} \sum\limits_{i=1}^n\sum\limits_{j=1}^n \alpha_i\alpha_jy_iy_j\red{K(x_i,x_j)}
θ(α,β)=i=1∑nαi−21i=1∑nj=1∑nαiαjyiyjK(xi,xj)
即推导出了对偶问题的目标函数式子(2)。
四、求解
对偶问题通常通过 SMO(序列最小优化) 或其他数值方法求解。
到这里思考一个问题:
我们的目标是求分割平面的
ω
,
b
\omega,b
ω,b ,但是求对偶问题得到的是
α
\alpha
α, 这要怎么办?
目前已经有对偶问题得到了其解
α
\alpha
α, 我们又有
ω
=
∑
i
=
1
n
α
i
y
i
ϕ
(
x
i
)
\omega = \sum\limits_{i=1}^n \alpha_iy_i\phi(x_i)
ω=i=1∑nαiyiϕ(xi)
是否可以推出
ω
\omega
ω 呢? 答案是否定的,因为这里又出现了一个
ϕ
(
x
i
)
\phi(x_i)
ϕ(xi),大前提是我们并不知道
ϕ
(
x
i
)
\phi(x_i)
ϕ(xi) 的具体显示表达。
测试流程(a)
测试样本 x x x 输入,有
- 若 ω T ϕ ( x ) + b ≥ 0 \omega^T\phi(x) + b \geq 0 ωTϕ(x)+b≥0 则 y = +1 ,属于第一类,或正例;
- 若 ω T ϕ ( x ) + b < 0 \omega^T\phi(x) + b \lt 0 ωTϕ(x)+b<0 则 y = -1, 属于第二类,或负例;
对于实际场景,我们并不需要具体的 ω \omega ω, 如果知道 ω T ϕ ( x ) + b \omega^T\phi(x) + b ωTϕ(x)+b 也是可以的,这样就跳过了具体的 ϕ ( x ) \phi(x) ϕ(x)。
那么我们继续看,上述中我们已经求得了
ω
\omega
ω的表达式, 带入可得:
ω
T
ϕ
(
x
)
=
(
∑
i
=
1
n
α
i
y
i
ϕ
(
x
i
)
)
ϕ
(
x
)
=
∑
i
=
1
n
α
i
y
i
ϕ
(
x
i
)
ϕ
(
x
)
=
∑
i
=
1
n
α
i
y
i
K
(
x
i
,
x
)
\begin{aligned} \omega^T\phi(x) &= (\sum\limits_{i=1}^n \alpha_iy_i\phi(x_i))\phi(x) \\ &= \sum\limits_{i=1}^n \alpha_iy_i\red{\phi(x_i)\phi(x)} \\ &= \sum\limits_{i=1}^n \alpha_iy_i\red{K(x_i, x)} \end{aligned}
ωTϕ(x)=(i=1∑nαiyiϕ(xi))ϕ(x)=i=1∑nαiyiϕ(xi)ϕ(x)=i=1∑nαiyiK(xi,x)
问题又来了, ω T ϕ ( x ) + b \omega^T\phi(x) + b ωTϕ(x)+b 中的 b 怎么得到?
我们继续看,回到对偶问题上,对偶问题的解一定满足 KKT 条件,而 KKT 条件中的互补松弛 条件:
∑
i
=
1
n
λ
i
f
i
=
0
,
λ
≥
0
,
f
i
≤
0
\sum\limits_{i=1}^n \lambda_if_i = 0, \quad \lambda \geq 0, f_i \leq 0
i=1∑nλifi=0,λ≥0,fi≤0
对应本示例(结合式子3)表明:
对于
∀
i
=
1
,
2
,
…
,
n
\forall i = 1, 2, \ldots, n
∀i=1,2,…,n
- 要么 α i = 0 \alpha_i=0 αi=0,要么 1 + ξ i − y i ω T ϕ ( x i ) − y i b = 0 1 + ξ_i - y_i \omega^T \red{\phi(x_i)} - y_i b = 0 1+ξi−yiωTϕ(xi)−yib=0
- 要么 β i = 0 \beta_i = 0 βi=0,要么 ξ i = 0 \xi_i = 0 ξi=0
那么我们可以取一个
α
i
\alpha_i
αi 满足
0
<
α
i
<
C
0 \lt \alpha_i \lt C
0<αi<C,则
β
i
=
C
−
α
i
>
0
\beta_i = C - \alpha_i \gt 0
βi=C−αi>0,此时有:
β
i
=
C
−
α
i
>
0
⇒
ξ
i
=
0
\beta_i = C - \alpha_i \gt 0 \quad \Rightarrow \quad \xi_i = 0
βi=C−αi>0⇒ξi=0
同样的:
α
i
≠
0
⇒
1
+
ξ
i
−
y
i
ω
T
ϕ
(
x
i
)
−
y
i
b
=
0
\alpha_i \neq 0 \quad \Rightarrow \quad 1 + ξ_i - y_i \omega^T \red{\phi(x_i)} - y_i b = 0
αi=0⇒1+ξi−yiωTϕ(xi)−yib=0
可以得到 b 的表达式为:
b
=
1
−
y
i
ω
T
ϕ
(
x
i
)
y
i
=
1
−
y
i
∑
j
=
1
n
α
j
y
j
K
(
x
j
,
x
i
)
y
i
\begin{aligned} b &= \frac{1 - y_i \red{\omega^T\phi(x_i)} }{y_i} \\ &= \frac{1 - y_i \red{\sum\limits_{j=1}^n \alpha_jy_j\red{K(x_j, x_i)} }}{y_i} \end{aligned}
b=yi1−yiωTϕ(xi)=yi1−yij=1∑nαjyjK(xj,xi)
至此 b 就算出来了。实际中可以把所有的 满足 0 < α i < C 0 \lt \alpha_i \lt C 0<αi<C 中的 α i \alpha_i αi, 按照上面方法求出对应的 b, 然后求平均。
测试流程(b)
有了上面的推论,我们可以得到最终的测试流程:
输入测试样本 x x x,
- 若 ∑ i = 1 n α i y i K ( x i , x ) + b ≥ 0 \sum\limits_{i=1}^n \alpha_iy_iK(x_i, x) + b \geq 0 i=1∑nαiyiK(xi,x)+b≥0,则 y = +1
- 若 ∑ i = 1 n α i y i K ( x i , x ) + b < 0 \sum\limits_{i=1}^n \alpha_iy_iK(x_i, x) + b \lt 0 i=1∑nαiyiK(xi,x)+b<0,则 y = -1
总结:整个算法学习过程和测试流程都无需知道 ϕ ( x ) \phi(x) ϕ(x), 只需要知道 K ( x i , x j ) K(x_i, x_j) K(xi,xj) 就可以完成。
(至此,结束)