1 背景
假设样本为 { x i , y i } i = 1 N \begin{Bmatrix} x_i,y_i \end{Bmatrix}_{i=1}^{N} {xi,yi}i=1N,其中 y ∈ { 1 , − 1 } y\in{\begin{Bmatrix} 1,-1 \end{Bmatrix}} y∈{1,−1}, 意图构造分类器 y ^ = s i g n ( w T x + b ) \hat y=sign(w^Tx+b) y^=sign(wTx+b)
若样本可分,则满足条件的 w , b w,b w,b 有无穷多组解。
支持向量机解决的问题就是从这无穷多组解中,找到泛化性能最好的一组。
2 思想
假设样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi) 到超平面
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0 的距离为
d
i
d_i
di ,
则泛化性能最好的
w
^
,
b
^
\hat{w},\hat{b}
w^,b^ 满足:
w
^
,
b
^
=
a
r
g
m
a
x
w
,
b
(
m
i
n
(
d
1
,
d
2
,
.
.
.
,
d
N
)
)
\hat{w},\hat{b} = \underset{w,b}{argmax}(min(d_1,d_2,...,d_N))
w^,b^=w,bargmax(min(d1,d2,...,dN))。
从几何角度去解释即:找到一超平面,使得所有样本点到平面的最小距离最大化。
3 推导
根据线性代数的知识,
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi) 到超平面
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0 的距离为
d
i
=
1
∣
∣
w
∣
∣
∣
w
T
x
i
+
b
∣
d_i = \frac{1}{||w||}|w^Tx_i+b|
di=∣∣w∣∣1∣wTxi+b∣
结合
y
i
∈
{
1
,
−
1
}
y_i\in{\begin{Bmatrix} 1,-1 \end{Bmatrix}}
yi∈{1,−1},可去掉绝对值符号
d
i
=
1
∣
∣
w
∣
∣
(
w
T
x
i
+
b
)
y
i
d_i = \frac{1}{||w||}(w^Tx_i+b)y_i
di=∣∣w∣∣1(wTxi+b)yi
由于对
w
,
b
w,b
w,b 等比例缩放,得到的是同一超平面,因此存在
w
,
b
w,b
w,b 满足
m
i
n
{
(
w
T
x
i
+
b
)
y
i
}
i
=
1
N
=
1
min\begin{Bmatrix} (w^Tx_i+b)y_i \end{Bmatrix}_{i=1}^{N} = 1
min{(wTxi+b)yi}i=1N=1
因此,可将问题简化为
w
^
,
b
^
=
a
r
g
m
a
x
w
,
b
1
∣
∣
w
∣
∣
s
.
t
m
i
n
(
w
T
x
i
+
b
)
y
i
=
1
\begin{aligned} &\hat{w},\hat{b} = \underset{w,b}{argmax}\frac{1}{||w||} \\ s.t \ &\ \ \ min(w^Tx_i+b)y_i=1 \end{aligned}
s.t w^,b^=w,bargmax∣∣w∣∣1 min(wTxi+b)yi=1
将公式进一步变形可得
w
^
,
b
^
=
a
r
g
m
i
n
w
,
b
1
2
w
T
w
s
.
t
(
w
T
x
i
+
b
)
y
i
≥
1
\begin{aligned} &\hat{w},\hat{b} = \underset{w,b}{argmin}\frac{1}{2}w^Tw \\ s&.t \ \ \ \ (w^Tx_i+b)y_i \geq 1 \end{aligned}
sw^,b^=w,bargmin21wTw.t (wTxi+b)yi≥1
定义
L
(
w
,
b
,
λ
)
=
1
2
w
T
w
−
∑
i
=
1
N
λ
i
[
(
w
T
x
i
+
b
)
y
i
−
1
]
s
.
t
(
w
T
x
i
+
b
)
y
i
−
1
≥
0
,
λ
i
≥
0
\begin{aligned} L(w,b,\lambda) &= \frac{1}{2}w^Tw - \sum_{i=1}^{N}{\lambda_i[(w^Tx_i+b)y_i-1]} \\ s.t &\ \ \ \ (w^Tx_i+b)y_i-1\geq0,\ \ \lambda_i\geq0 \end{aligned}
L(w,b,λ)s.t=21wTw−i=1∑Nλi[(wTxi+b)yi−1] (wTxi+b)yi−1≥0, λi≥0
由于
λ
i
≥
0
\lambda_i\geq0
λi≥0
m
a
x
λ
≥
0
L
(
w
,
b
,
λ
)
=
{
1
2
w
T
w
(
w
T
x
i
+
b
)
y
i
−
1
≥
0
+
∞
(
w
T
x
i
+
b
)
y
i
−
1
<
0
\underset{\lambda\geq0}{max}L(w,b,\lambda) = \left\{ \begin{matrix} \frac{1}{2}w^Tw \ \ \ \ &(w^Tx_i+b)y_i-1\geq0 \\ +\infty \ \ \ \ &(w^Tx_i+b)y_i-1\lt0 \end{matrix} \right.
λ≥0maxL(w,b,λ)={21wTw +∞ (wTxi+b)yi−1≥0(wTxi+b)yi−1<0
m i n w , b , λ i ≥ 0 L ( w , b , λ ) = m i n w , b ( 1 2 w T w , + ∞ ) = m i n w , b 1 2 w T w \underset{w,b,\lambda_i\geq0}{min}L(w,b,\lambda) = \underset{w,b}{min}(\frac{1}{2}w^Tw,+\infty) = \underset{w,b}{min}{\frac{1}{2}w^Tw} w,b,λi≥0minL(w,b,λ)=w,bmin(21wTw,+∞)=w,bmin21wTw
因此,可去掉
(
w
T
x
i
+
b
)
y
i
−
1
≥
0
(w^Tx_i+b)y_i-1\geq0
(wTxi+b)yi−1≥0 的约束,将原问题变形为
L
(
w
^
,
b
^
,
λ
^
)
=
m
i
n
w
,
b
m
a
x
λ
L
(
w
,
b
,
λ
)
s
.
t
λ
≥
0
L(\hat{w},\hat{b},\hat\lambda) = \underset{w,b}{min}\underset{\lambda}{max}L(w,b,\lambda) \ \ s.t \ \ \lambda\geq0
L(w^,b^,λ^)=w,bminλmaxL(w,b,λ) s.t λ≥0
上式即为SVM的原问题。
4 计算
在上述SVM的原问题中,不能直接将 L ( w , b , λ ) L(w,b,\lambda) L(w,b,λ) 对 λ \lambda λ 求导,考虑到函数 f ( w ) = 1 2 w T w f(w)=\frac{1}{2}w^Tw f(w)=21wTw 为凸函数,且约束条件 λ i ≥ 0 \lambda_i\geq0 λi≥0 满足Slater条件。
所以,SVM的原问题可等价转化为其对偶问题求解,也即
L
(
w
^
,
b
^
,
λ
^
)
=
m
a
x
λ
m
i
n
w
,
b
L
(
w
,
b
,
λ
)
=
m
a
x
λ
m
i
n
w
,
b
(
1
2
w
T
w
−
∑
i
=
1
N
λ
i
[
(
w
T
x
i
+
b
)
y
i
−
1
]
)
s
.
t
λ
≥
0
\begin{aligned} L(\hat{w},\hat{b},\hat\lambda) &= \underset{\lambda}{max}\underset{w,b}{min}L(w,b,\lambda) \\ &= \underset{\lambda}{max}\underset{w,b}{min}(\frac{1}{2}w^Tw - \sum_{i=1}^{N}{\lambda_i[(w^Tx_i+b)y_i-1])} \ \ s.t \ \ \lambda\geq0 \end{aligned}
L(w^,b^,λ^)=λmaxw,bminL(w,b,λ)=λmaxw,bmin(21wTw−i=1∑Nλi[(wTxi+b)yi−1]) s.t λ≥0
对
b
b
b求导可得
∑
i
=
1
N
λ
i
y
i
=
0
\sum_{i=1}^{N}\lambda_iy_i = 0
i=1∑Nλiyi=0
对
w
w
w求导可得
w
=
∑
i
=
1
N
λ
i
y
i
x
i
w =\sum_{i=1}^{N}\lambda_iy_ix_i
w=i=1∑Nλiyixi
将结果带入
L
(
w
,
b
,
λ
)
L(w,b,\lambda)
L(w,b,λ),化简可得
L
(
w
^
,
b
^
,
λ
^
)
=
m
a
x
λ
(
∑
i
=
1
N
λ
i
−
1
2
∑
i
=
1
N
∑
j
=
1
N
λ
i
λ
j
y
i
y
j
x
i
T
x
j
)
L(\hat{w},\hat{b},\hat\lambda) = \underset{\lambda}{max}(\sum_{i=1}^{N}{\lambda_i} - \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}{\lambda_i\lambda_jy_iy_jx_i^Tx_j})
L(w^,b^,λ^)=λmax(i=1∑Nλi−21i=1∑Nj=1∑NλiλjyiyjxiTxj)
s . t 0 ≤ λ i ≤ C , ∑ i = 1 N λ i y i = 0 s.t \ \ \ \ 0 \leq \lambda_i \leq C, \ \ \ \ \sum_{i=1}^{N}{\lambda_iy_i}=0 s.t 0≤λi≤C, i=1∑Nλiyi=0
5 SMO算法
为了求出满足条件的
λ
\lambda
λ, 结合约束条件
∑
i
=
1
N
λ
i
y
i
=
0
\sum_{i=1}^{N}{\lambda_iy_i}=0
∑i=1Nλiyi=0,可使用SMO算法成对更新
λ
i
,
λ
j
\lambda_i, \lambda_j
λi,λj。
详细过程见SMO算法详解,这里直接给出结论
记 x i , x j x_i, x_j xi,xj 的内积为 K i j K_{ij} Kij, η = K 11 + K 12 − 2 K 12 \eta = K_{11}+K_{12}-2K_{12} η=K11+K12−2K12,误差 E i = w T x i + b − y i E_i = w^Tx_i+b-y_i Ei=wTxi+b−yi
5.1 更新 λ \lambda λ
更新后的
λ
j
\lambda_j
λj
λ
j
n
e
w
=
λ
j
o
l
d
+
y
j
(
E
i
−
E
j
)
η
\lambda_j^{new} = \lambda_j^{old} + \frac{y_j(E_i-E_j)}{\eta}
λjnew=λjold+ηyj(Ei−Ej)
结合约束条件
0
≤
λ
i
≤
C
0 \leq \lambda_i \leq C
0≤λi≤C
λ
j
n
e
w
=
m
i
n
(
m
a
x
(
λ
j
n
e
w
,
L
)
,
H
)
\lambda_j^{new} = min(max(\lambda_j^{new}, L), H)
λjnew=min(max(λjnew,L),H)
其中
L
=
{
m
a
x
(
0
,
λ
j
o
l
d
−
λ
i
o
l
d
)
(
y
i
≠
y
j
)
m
a
x
(
0
,
λ
j
o
l
d
+
λ
i
o
l
d
−
C
)
(
y
i
=
y
j
)
L = \left\{ \begin{matrix} max(0, \lambda_j^{old}-\lambda_i^{old}) \ \ \ \ \ \ \ \ \ &(y_i \neq y_j) \\ max(0, \lambda_j^{old}+\lambda_i^{old}-C) \ \ \ \ \ \ \ \ \ &(y_i = y_j) \end{matrix} \right.
L={max(0,λjold−λiold) max(0,λjold+λiold−C) (yi=yj)(yi=yj)
H = { m i n ( C , C + λ j o l d − λ i o l d ) ( y i ≠ y j ) m i n ( C , λ j o l d + λ i o l d ) ( y i = y j ) H = \left\{ \begin{matrix} min(C, C+\lambda_j^{old}-\lambda_i^{old}) \ \ \ \ \ \ \ \ \ &(y_i \neq y_j) \\ min(C, \lambda_j^{old}+\lambda_i^{old}) \ \ \ \ \ \ \ \ \ &(y_i = y_j) \end{matrix} \right. H={min(C,C+λjold−λiold) min(C,λjold+λiold) (yi=yj)(yi=yj)
结合约束条件
∑
i
=
1
N
λ
i
y
i
=
0
\sum_{i=1}^{N}{\lambda_iy_i}=0
∑i=1Nλiyi=0,更新
λ
i
\lambda_i
λi
λ
i
n
e
w
=
λ
i
o
l
d
+
y
i
y
j
(
λ
j
o
l
d
−
λ
j
n
e
w
)
\lambda_i^{new} = \lambda_i^{old} + y_iy_j(\lambda_j^{old}-\lambda_j^{new})
λinew=λiold+yiyj(λjold−λjnew)
5.2 更新 b b b
根据互补松弛条件
记
b
i
=
E
i
−
(
λ
i
n
e
w
−
λ
i
o
l
d
)
y
i
K
i
i
−
(
λ
j
n
e
w
−
λ
j
o
l
d
)
y
j
K
i
j
+
b
o
l
d
b_i = E_i - (\lambda_i^{new}-\lambda_i^{old})y_iK_{ii} - (\lambda_j^{new}-\lambda_j^{old})y_jK_{ij} + b^{old}
bi=Ei−(λinew−λiold)yiKii−(λjnew−λjold)yjKij+bold
记
b
j
=
E
j
−
(
λ
i
n
e
w
−
λ
i
o
l
d
)
y
i
K
i
j
−
(
λ
j
n
e
w
−
λ
j
o
l
d
)
y
j
K
j
j
+
b
o
l
d
b_j = E_j - (\lambda_i^{new}-\lambda_i^{old})y_iK_{ij} - (\lambda_j^{new}-\lambda_j^{old})y_jK_{jj} + b^{old}
bj=Ej−(λinew−λiold)yiKij−(λjnew−λjold)yjKjj+bold
更新
b
b
b
b
n
e
w
=
{
b
i
(
0
<
λ
i
<
C
)
b
j
(
0
<
λ
j
<
C
)
b
i
+
b
j
2
(
o
t
h
e
r
s
)
b^{new} = \left\{ \begin{matrix} b_i \ \ \ \ \ \ \ \ \ &(0 \lt \lambda_i \lt C) \\ b_j \ \ \ \ \ \ \ \ \ &(0 \lt \lambda_j \lt C) \\ \frac{b_i+b_j}{2} \ \ \ \ \ \ \ \ \ &(others) \\ \end{matrix} \right.
bnew=⎩⎨⎧bi bj 2bi+bj (0<λi<C)(0<λj<C)(others)