1. 线性支持向量机(SVM)基本原理
1.1 线性SVM要解决的问题
给定训练样本集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) , y i ∈ { − 1 , + 1 } } D = \{ ( \bm{x_1}, y_1), (\bm{x_2}, y_2), ..., (\bm{x_m}, y_m), y_i \in \{ -1, +1 \} \} D={(x1,y1),(x2,y2),...,(xm,ym),yi∈{−1,+1}}, 支持向量机的基本思想就是基于训练集 D D D在样本空间中找到一个超平面,将不同类别的样本分开。但是能够将训练样本分开的超平面有很多,我们应该找哪一个呢?
![](https://i-blog.csdnimg.cn/blog_migrate/6b54944482f79c7adbf7c9c6e4b5df95.png)
直观上看,应该寻找两类训练样本中“正中间”的超平面,即图1中最粗的线。这条线能够将两类样本分隔开,并且对新的样本泛化能力强,最具鲁棒性。
在样本空间中,超平面可以用如下线性方程描述:
w
T
x
+
b
=
0
(1)
\bm{w}^T \bm{x} + b = 0 \tag{1}
wTx+b=0(1)
其中
w
=
(
w
1
;
w
2
;
,
.
.
.
,
w
d
)
\bm{w} = (w_1; w_2;,...,w_d)
w=(w1;w2;,...,wd)为法向量,决定了超平面的方向,
b
b
b为位移项,决定了超平面与原点之间的距离。我们将超平面记为
(
w
,
b
)
(\bm{w}, b)
(w,b).
假设超平面
(
w
,
b
)
(\bm{w}, b)
(w,b)能够将训练样本正确分类,即对于
(
x
i
,
y
i
)
∈
D
(\bm{x_i}, y_i) \in D
(xi,yi)∈D,若
y
i
=
+
1
y_i = +1
yi=+1,则有
w
T
x
i
+
b
>
0
\bm{w}^T \bm{x}_i + b > 0
wTxi+b>0;若
y
i
=
−
1
y_i = -1
yi=−1,则有
w
T
x
i
+
b
<
0
\bm{w}^T \bm{x}_i + b < 0
wTxi+b<0。通过缩放,令:
{
w
T
x
i
+
b
≥
+
1
,
y
i
=
+
1
w
T
x
i
+
b
≤
−
1
,
y
i
=
−
1
(2)
\left\{ \begin{aligned} \bm{w}^T \bm{x}_i + b \geq +1, y_i = +1 \\ \bm{w}^T \bm{x}_i + b \leq -1, y_i = -1 \\ \end{aligned} \right. \tag{2}
{wTxi+b≥+1,yi=+1wTxi+b≤−1,yi=−1(2)
如图2所示,距离超平面最近的这几个点使得式
(
2
)
(2)
(2)等号成立,它们被称为“支持向量”(support vector),两个异类支持向量到超平面的距离之和为:
γ
=
2
∣
∣
w
∣
∣
,
(3)
\gamma = \dfrac{2}{||\bm{w}||}, \tag{3}
γ=∣∣w∣∣2,(3)
它被称“间隔”(margin)。
![](https://i-blog.csdnimg.cn/blog_migrate/4494c3513f30ea5830b8604bf3138ad0.png)
要找到“最大间隔”(maximum margin)的超平面,也就是要找到满足式
(
2
)
(2)
(2)中约束参数
w
\bm w
w和
b
b
b,使得
γ
\gamma
γ最大,即:
max
w
,
b
2
∣
∣
w
∣
∣
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
m
.
(4)
\begin{aligned} & \max \limits_{\bm w, b} \dfrac{2}{||\bm w||} \\ & s.t. \ y_i(\bm{w}^T \bm{x}_i + b) \geq 1, \ i = 1,2,..., m. \\ \end{aligned} \tag{4}
w,bmax∣∣w∣∣2s.t. yi(wTxi+b)≥1, i=1,2,...,m.(4)
为了方便后续的计算,我们将式
(
4
)
(4)
(4)重写为:
min
w
,
b
1
2
∣
∣
w
∣
∣
2
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
m
.
(5)
\begin{aligned} & \min \limits_{\bm w, b} \dfrac{1}{2} ||\bm w||^2\\ & s.t. \ y_i(\bm{w}^T \bm{x}_i + b) \geq 1, \ i = 1,2,..., m. \\ \end{aligned} \tag{5}
w,bmin21∣∣w∣∣2s.t. yi(wTxi+b)≥1, i=1,2,...,m.(5)
这就是SVM的基本型。
1.2 对偶问题
式(5)是一个凸二次规划(convex quadratic programming)问题,能直接用现成的优化计算包求解,但是我们可有用更高效的办法。对式(5)每条约束添加拉格朗日乘子
α
i
≥
0
\alpha_i \geq0
αi≥0,则该问题的拉格朗日函数可以写为:
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
i
=
1
m
α
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
(6)
L(\bm w, b, \bm \alpha) = \dfrac{1}{2} ||\bm w||^2 + \sum_{i=1}^{m} \alpha_i(1 - y_i(\bm {w}^T \bm {x}_i + b) ) \tag{6}
L(w,b,α)=21∣∣w∣∣2+i=1∑mαi(1−yi(wTxi+b))(6)
其中,
α
=
(
α
1
;
α
2
;
.
.
.
;
α
m
)
\bm \alpha=(\alpha_1;\alpha_2;...;\alpha_m)
α=(α1;α2;...;αm)。令
L
(
w
,
b
,
α
)
L(\bm w, b, \bm \alpha)
L(w,b,α)对
w
\bm w
w 和
b
b
b的偏导为零可得:
w
=
∑
i
=
1
m
α
i
y
i
x
i
,
(7)
\bm w = \sum_{i=1}^{m} \alpha_i y_i \bm {x}_i,\tag{7}
w=i=1∑mαiyixi,(7)
0 = ∑ i = 1 m α i y i , (8) 0 = \sum_{i=1}^{m} \alpha_i y_i ,\tag{8} 0=i=1∑mαiyi,(8)
将式(7)和(8)代入式(6)中,得到式(6)的对偶问题:
max
α
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
i
x
i
T
x
j
T
s
.
t
.
∑
i
=
1
m
α
i
y
i
=
0
,
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
m
.
(9)
\begin{aligned} & \max_{\bm \alpha} \sum_{i=1}^{m} \alpha_i - \dfrac{1}{2} \sum_{i=1}^{m}\sum_{j=1}^{m} \alpha_i \alpha_j y_i y_i \bm {x}_i^T \bm {x}_j^T \\ \tag{9} & s.t. \ \sum _{i=1}^{m} \alpha_i y_i = 0, \\ & \qquad \alpha_i \geq 0, \ i = 1,2,...,m.\\ \end{aligned}
αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyixiTxjTs.t. i=1∑mαiyi=0,αi≥0, i=1,2,...,m.(9)
求解得到
α
\bm \alpha
α后,可以求得
w
\bm w
w 和
b
b
b,最终得到分类模型:
f
(
x
)
=
w
T
x
+
b
=
∑
i
=
1
m
α
i
y
i
x
i
T
x
+
b
.
(10)
\begin{aligned} f(x) & = \bm {w}^T \bm {x} + b \\ & = \sum_{i=1}^{m} \alpha_i y_i \bm {x}_i^T \bm x + b . \end{aligned} \tag{10}
f(x)=wTx+b=i=1∑mαiyixiTx+b.(10)
上述过程需要满足KKT条件(Karush-Kuhn-Tucher),即求:
{
α
i
≥
0
;
y
i
f
(
x
i
)
−
1
≥
0
;
α
i
(
y
i
f
(
x
i
)
−
1
)
≥
0
;
(11)
\left\{ \begin{aligned} \alpha_i \geq 0; \\ y_i f(\bm {x}_i) - 1 \geq 0; \\ \alpha_i (y_i f(\bm {x}_i) - 1) \geq 0; \\ \end{aligned} \right. \tag{11}
⎩⎪⎨⎪⎧αi≥0;yif(xi)−1≥0;αi(yif(xi)−1)≥0;(11)
于是,对于任意训练样本 ( x i , y i ) (\bm {x}_i, y_i) (xi,yi),总有 α i = 0 \alpha_i = 0 αi=0 或 y i f ( x i ) = 1 y_i f(\bm {x}_i) = 1 yif(xi)=1。若 α i = 0 \alpha_i = 0 αi=0,则该样本不会再式(10)中出现,也就不会对分类器有任何影响;若 α i ≥ 0 \alpha_i \geq 0 αi≥0,则必有 y i f ( x i ) = 1 y_i f(\bm {x}_i) = 1 yif(xi)=1,所对应的样本点位于最大间隔边界上,是一个支持向量。因此,最终模型仅与支持向量有关。