第6章 支持向量机
1. 间隔与支持向量
训练样本集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
(
x
m
,
y
m
)
}
,
y
i
∈
{
−
1
,
+
1
}
D=\{(x_1,y_1),(x_2,y_2),...(x_m,y_m)\},y_i\in\{-1,+1\}
D={(x1,y1),(x2,y2),...(xm,ym)},yi∈{−1,+1}
分类学习的最基本想法就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开。

能将训练样本划分开的平面可能有很多个,应该选择位于两类训练样本“正中间”的划分超平面,因为这个超平面的所产生的分类结果是最鲁棒的,泛化能力最强。
分离超平面对应于方程:
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0
其中
w
=
(
w
1
;
w
2
;
.
.
.
w
d
)
w=(w_1;w_2;...w_d)
w=(w1;w2;...wd)为法向量,指向正类,决定了超平面的方向;b为位移项(截距),决定了超平面与原点的距离。可用(w,b)表示。
样本空间中任意一点到超平面(w,b)的距离可写为:
r
=
∣
w
T
x
+
b
∣
∣
∣
w
∣
∣
r=\frac{|w^Tx+b|}{||w||}
r=∣∣w∣∣∣wTx+b∣
复习:点
p
(
x
0
,
y
0
)
p(x_0,y_0)
p(x0,y0)到直线
a
x
+
b
y
+
c
=
0
ax+by+c=0
ax+by+c=0的距离:
d
=
∣
a
x
0
+
b
y
0
+
c
∣
a
2
+
b
2
d=\frac{|ax_0+by_0+c|}{\sqrt{a^2+b^2}}
d=a2+b2∣ax0+by0+c∣
假设超平面(w,b)能将训练样本正确分类,则有:
a
=
{
w
T
x
i
+
b
>
0
,
y
i
=
+
1
;
w
T
x
i
+
b
<
0
,
y
i
=
−
1
(6.1)
a = \begin{cases} w^Tx_i+b>0, y_i=+1;\\ w^Tx_i+b<0, y_i=-1 \end{cases} \tag{6.1}
a={wTxi+b>0,yi=+1;wTxi+b<0,yi=−1(6.1)
距离超平面最近的几个训练样本,被称为“支持向量”。
假设支持向量到超平面的距离为r(其他样本点肯定大于r),所以有:
∣
w
T
x
+
b
∣
∣
∣
w
∣
∣
≥
r
\frac{|w^Tx+b|}{||w||}\ge{r}
∣∣w∣∣∣wTx+b∣≥r
根据(6.1)对正负两类去绝对值得:
{
w
T
x
i
+
b
∣
∣
w
∣
∣
≥
r
,
y
i
=
+
1
;
w
T
x
i
+
b
∣
∣
w
∣
∣
≤
r
,
y
i
=
−
1
\left\{\begin{aligned} \frac{w^Tx_i+b}{||w||}\ge{r},\quad y_i=+1;\\ \frac{w^Tx_i+b}{||w||}\leq{r},\quad y_i=-1 \end{aligned} \right.
⎩⎪⎪⎪⎨⎪⎪⎪⎧∣∣w∣∣wTxi+b≥r,yi=+1;∣∣w∣∣wTxi+b≤r,yi=−1
两边同时除以r得:
{
w
r
T
x
i
+
b
r
≥
+
1
,
y
i
=
+
1
;
w
r
T
x
i
+
b
r
≤
−
1
,
y
i
=
−
1
其
中
w
r
=
w
∣
∣
w
∣
∣
r
,
b
r
=
b
∣
∣
w
∣
∣
r
\left\{\begin{aligned} w_r^Tx_i+b_r \ge{+1},\quad y_i=+1;\\ w_r^Tx_i+b_r \leq{-1},\quad y_i=-1 \end{aligned} \right.\\ 其中w_r=\frac{w}{||w||r},\quad b_r=\frac{b}{||w||r}
{wrTxi+br≥+1,yi=+1;wrTxi+br≤−1,yi=−1其中wr=∣∣w∣∣rw,br=∣∣w∣∣rb
线性缩放,例如2x+2y=0与x+y=0是同一条直线。
w
r
和
b
r
w_r和b_r
wr和br仍是直线的法向量和截距,用w表示
w
r
w_r
wr,b表示
b
r
br
br
所以得到:
{
w
T
x
i
+
b
≥
+
1
,
y
i
=
+
1
;
w
T
x
i
+
b
≤
−
1
,
y
i
=
−
1
(6.3)
\left\{\begin{aligned} w^Tx_i+b \ge{+1},\quad y_i=+1;\\ w^Tx_i+b \leq{-1},\quad y_i=-1 \end{aligned} \right. \tag{6.3}
{wTxi+b≥+1,yi=+1;wTxi+b≤−1,yi=−1(6.3)
合并:
y
i
(
w
T
x
+
b
)
≥
1
y_i(w^Tx+b) \ge 1
yi(wTx+b)≥1
支持向量使等号成立。即
∣
w
T
x
+
b
∣
=
1
|w^Tx+b|=1
∣wTx+b∣=1

所以,间隔为两个异类支持向量到超平面的距离之和为:
γ
=
2
∗
∣
w
T
x
+
b
∣
∣
∣
w
∣
∣
=
2
∣
∣
w
∣
∣
(6.4)
\gamma=2*\frac{|w^Tx+b|}{||w||} = \frac{2}{||w||} \tag{6.4}
γ=2∗∣∣w∣∣∣wTx+b∣=∣∣w∣∣2(6.4)
想要找到“最大间隔”的划分超平面,就是要找满足(6.3)中约束的参数w和b,使得
γ
\gamma
γ最大,即:
max
w
,
b
2
∣
∣
w
∣
∣
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
m
.
(6.5)
\begin{aligned} &\max_{w,b} \;\frac{2}{||w||} \\ &s.t.\;\;y_i(w^Tx_i+b)\ge1, \;i=1,2,...,m. \tag{6.5} \end{aligned}
w,bmax∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,...,m.(6.5)
最大化间隔就是使
∣
∣
w
∣
∣
||w||
∣∣w∣∣最小化,转换为求解凸二次规划问题,即最小化
∣
∣
w
∣
∣
2
||w||^2
∣∣w∣∣2,乘以
1
2
\frac{1}{2}
21为了求导方便,于是重写(6.5)式:
min
w
,
b
1
2
∣
∣
w
∣
∣
2
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
m
.
(6.6)
\begin{aligned} &\min_{w,b} \; \frac{1}{2}||w||^2 \\ &s.t.\;\;y_i(w^Tx_i+b)\ge1, \;i=1,2,...,m. \tag{6.6} \end{aligned}
w,bmin21∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,...,m.(6.6)
这就是支持向量机(SVM)的基本型。
2. 对偶问题
2.1 对偶问题
我们希望求解(6.6)得到大间隔划分超平面所对应的模型
f
(
x
)
=
w
T
x
+
b
(6.7)
f(x)=w^Tx+b \tag{6.7}
f(x)=wTx+b(6.7)
其中w和b是模型参数,。(6.6)是一个凸二次规划问题,可以直接用现成的优化计算包求解,这里是使用拉格朗日乘子法得到其对偶问题。具体来说,
- 1、对(6.6)的每条约束添加拉格朗日乘子
α
i
≥
0
\alpha_i\ge0
αi≥0,该问题的拉格朗日函数可写为:
L ( w , , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) (6.8) L(w,,b,\alpha) = \frac{1}{2}||w||^2 + \sum_{i=1}^m\alpha_i(1-y_i(w^Tx_i+b)) \tag{6.8} L(w,,b,α)=21∣∣w∣∣2+i=1∑mαi(1−yi(wTxi+b))(6.8)
其中 α = ( α 1 ; α 2 ; . . . ; α m ) \alpha=(\alpha_1;\alpha_2;...;\alpha_m) α=(α1;α2;...;αm)。 - 2、令
L
(
w
,
b
,
α
)
L(w,b,\alpha)
L(w,b,α)对w和b的偏导为0,得:
w = ∑ i = 1 m α i y i x i (6.9) w=\sum_{i=1}^m\alpha_iy_ix_i \tag{6.9} w=i=1∑mαiyixi(6.9)
0 = ∑ i = 1 m α i y i (6.10) 0=\sum_{i=1}^m\alpha_iy_i \tag{6.10} 0=i=1∑mαiyi(6.10)
目标函数: min w , b L ( w , b , α ) \min_{w,b}L(w,b,\alpha) minw,bL(w,b,α),因为 y i ( w T x i + b ) ≥ 1 y_i(w^Tx_i+b)\ge1 yi(wTxi+b)≥1,所以, 1 − y i ( w T x i + b ) ≤ 0 , α i ≥ 0 1-y_i(w^Tx_i+b)\leq0,\alpha_i \ge0 1−yi(wTxi+b)≤0,αi≥0,所以, α i \alpha_i αi增大, L ( w , b , α ) L(w,b,\alpha) L(w,b,α)变小。
目标函数变为: min w , b max α i ≥ 0 L ( w , b , α ) \min_{w,b}\max_{\alpha_i\ge0}L(w,b,\alpha) w,bminαi≥0maxL(w,b,α)
由于这个不好求解,一般我们将最小和最大的位置交换一下(需满足KKT条件) ,变成原问题的对偶问题:
max α i ≥ 0 min w , b L ( w , b , α ) \max_{\alpha_i\ge0}\min_{w,b}L(w,b,\alpha) αi≥0maxw,bminL(w,b,α)
- 3、将上面的偏导结果带入(6.8)得到(6.6)的对偶问题:
将(6.9)带入(6.8),即可消去 L ( w , , b , α ) L(w,,b,\alpha) L(w,,b,α)中的w和b,再考虑(6.10)的约束,得到(6.6)的对偶问题:
max α min w , b L ( w , b , α ) , 即 max α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j s . t . ∑ i = 1 m α i y i = 0 , α i ≥ 0 , i = 1 , 2 , . . . , m . (6.11) \begin{aligned} &\max_\alpha \; \min_{w,b}L(w,b,\alpha),即\\ &\max_\alpha \; \sum_{i=1}^{m}\alpha_i - \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j\\ &s.t. \ \sum_{i=1}^m\alpha_iy_i = 0,\\ & \ \ \ \ \ \ \ \alpha_i \ge0,\;i=1,2,...,m. \end{aligned} \tag{6.11} αmaxw,bminL(w,b,α),即αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxjs.t. i=1∑mαiyi=0, αi≥0,i=1,2,...,m.(6.11)
解出 α \alpha α后,求出w和b即可得到模型:
f ( x ) = w T x + b = ∑ i = 1 m α i y i x i T x + b (6.12) \begin{aligned} f(x)&=w^Tx+b\\ &=\sum_{i=1}^m\alpha_iy_ix_i^Tx+b \tag{6.12} \end{aligned} f(x)=wTx+b=i=1∑mαiyixiTx+b(6.12)
2.2 KKT
从对偶问题(6.11)解出的
α
i
\alpha_i
αi是(6.8)中的拉格朗日乘子,它恰对应着训练样本
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)。注意(6.6)中有不等式约束,因此上述过程需满足KKT条件,即要求:
{
α
i
≥
0
;
y
i
f
(
x
i
)
−
1
≥
0
;
α
i
(
y
i
f
(
x
i
)
−
1
)
=
0
\left\{\begin{aligned} &\alpha_i\ge0;\\ &y_if(x_i)-1 \ge 0;\\ &\alpha_i(y_if(x_i)-1)=0 \end{aligned} \right.
⎩⎪⎨⎪⎧αi≥0;yif(xi)−1≥0;αi(yif(xi)−1)=0
于是,对任意训练样本
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)总有
α
i
=
0
或
y
i
f
(
x
i
)
=
1
\alpha_i=0或y_if(x_i)=1
αi=0或yif(xi)=1。
- 若 α i = 0 \alpha_i=0 αi=0,则该样本不会出现在(6.12)的求和中出现,也不会对f(x)有任何影响
- 若
α
i
>
0
\alpha_i>0
αi>0,则必有
y
i
f
(
x
i
)
=
1
y_if(x_i)=1
yif(xi)=1,所对应的样本点位于最大间隔边界上,是一个支持向量。
由此得到支持向量的重要性质:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。
支持向量机:强调了此类学习器的关键是如何从支持向量构建出解;同时也暗示着其复杂度只要与支持向量的数目有关。
2.3 SMO(序列最小优化算法)
可以发现对偶问题式(6.11)是一个二次规划问题,可以使用通用的二次规划算法求解,但问题规模正比于样本数,会造成很大的开销。为了避免这个障碍,可以使用高效的SMO(Sequential Minimal Optimization)算法。
SMO算法的中心思想:每次选出两个
α
\alpha
α进行优化(之所以是两个是因为
α
\alpha
α的约束条件决定了其与标签乘积的累加等于0,因此必须一次同时优化两个,否则就会破坏约束条件),然后固定其他的
α
\alpha
α值。重复此过程,直到达到某个终止条件程序退出并得到我们需要的优化结果。
在参数初始化后,SMO不断执行如下两个步骤直至收敛:
- 选取一对需要更新的变量 α i \alpha_i αi和 α j \alpha_j αj;
- 固定 α i \alpha_i αi和 α j \alpha_j αj以外的参数,求解(6.11)获得更新后的 α i \alpha_i αi和 α j \alpha_j αj。
SMO具体过程:
强推:Python3《机器学习实战》学习笔记(八):支持向量机原理篇之手撕线性SVM
如何选取 α i \alpha_i αi和 α j \alpha_j αj:
注意到只要选取的
α
i
\alpha_i
αi和
α
j
\alpha_j
αj中有一个不满足KKT条件,目标函数迭代后会增大。而且KKT条件违背的程度越大,则变量更新后导致目标函数增幅就越大。
因此,SMO算法先选取一个违背KKT条件程度最大的变量
α
i
\alpha_i
αi,然后再选一个使目标函数增长最快的变量
α
j
\alpha_j
αj,但由于找出
α
j
\alpha_j
αj的开销较大,所以SMO算法采用了一个启发式:使选取的两变量对应的样本之间间隔最大。这样两个变量有很大的差别,与选取两个相似变量相比,这种方法能为目标函数带来更大的变化,从而更快搜索到全局最大值。
SMO算法之所以高效,恰由于在固定其他参数后,仅优化两个参数的过程能做到非常高效。具体来说,仅考虑
α
i
\alpha_i
αi和
α
j
\alpha_j
αj时,(6.11)的约束可以重写为:
α
i
y
i
+
α
j
y
j
=
c
,
α
i
≥
0
,
α
j
≥
0
\alpha_iy_i+\alpha_jy_j=c,\;\alpha_i\ge0,\alpha_j\ge0
αiyi+αjyj=c,αi≥0,αj≥0
其中
c
=
−
∑
k
≠
i
,
j
α
k
y
k
c=-\sum_{k\not=i,j}\alpha_ky_k
c=−k=i,j∑αkyk
c是使
∑
i
=
1
m
α
i
y
i
=
0
\sum_{i=1}^m\alpha_iy_i=0
∑i=1mαiyi=0成立的常数,用
α
i
y
i
+
α
j
y
j
=
c
\alpha_iy_i+\alpha_jy_j=c
αiyi+αjyj=c,消去(6.11)中的变量
α
j
\alpha_j
αj,(
α
j
=
(
c
−
α
i
y
i
)
÷
y
j
\alpha_j =(c-\alpha_iy_i)\div y_j
αj=(c−αiyi)÷yj)则得到一个关于
α
i
\alpha_i
αi的单变量二次规划问题,仅有的约束是
α
i
≥
0
\alpha_i\ge0
αi≥0。这样的二次规划问题具有闭式解,于是不必调用数值优化算法即可高效地计算出更新后的
α
i
\alpha_i
αi和
α
j
\alpha_j
αj。
如何求出w和b?
w:根据公式(6.9)
b:对于任意支持向量
(
x
s
,
y
s
)
(x_s,y_s)
(xs,ys)都有
y
s
f
(
x
s
)
=
1
y_sf(x_s)=1
ysf(xs)=1,即
y
s
(
∑
i
∈
S
α
i
y
i
x
i
T
x
s
+
b
)
=
1
(6.17)
y_s(\sum_{i\in S}\alpha_iy_ix_i^Tx_s+b)=1 \tag{6.17}
ys(i∈S∑αiyixiTxs+b)=1(6.17)
得到:
b
=
1
y
s
−
∑
i
∈
S
α
i
y
i
x
i
T
x
s
b=\frac{1}{y_s}-\sum_{i\in S}\alpha_iy_ix_i^Tx_s
b=ys1−i∈S∑αiyixiTxs
其中
S
=
{
i
∣
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
m
}
S=\{i|\alpha_i\ge0,\;i=1,2,...,m\}
S={i∣αi≥0,i=1,2,...,m}为所有支持向量的下标集。理论上,可选取任意支持向量并通过求解(6.17)获得b,但现实任务中常采用一种更鲁棒的做法:使用所有支持向量求解的平均值
b
=
1
∣
S
∣
∑
s
∈
S
(
1
y
s
−
∑
i
∈
S
α
i
y
i
x
i
T
x
s
)
b=\frac{1}{|S|}\sum_{s\in S}(\frac{1}{y_s}-\sum_{i\in S}\alpha_iy_ix_i^Tx_s)
b=∣S∣1s∈S∑(ys1−i∈S∑αiyixiTxs)
3. 核函数
前面的讨论我们假设训练样本是线性可分的,即存在一个划分超平面能将训练样本正确分类。然而在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面。
解决方法:将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。幸运的是,如果原始空间是有限维,即属性数有限,那就一定存在一个高维特征空间使样本线性可分。
令
ϕ
(
x
)
\phi(x)
ϕ(x)表示将
x
x
x映射后的特征向量,于是,在特征空间中划分超平面对应的模型可表示为:
f
(
x
)
=
w
T
ϕ
(
x
)
+
b
f(x)=w^T\phi(x)+b
f(x)=wTϕ(x)+b
和之前一样,先写出目标函数的拉格朗日函数,接着写出其对偶问题,最后运用SOM求解α。
w和b是模型参数,类似(6.6),有:
min
w
,
b
1
2
∣
∣
w
∣
∣
2
s
.
t
.
y
i
(
w
T
ϕ
(
x
)
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
m
\begin{aligned} &\min_{w,b} \;\frac{1}{2}||w||^2 \\ &s.t.\;\;y_i(w^T\phi(x)+b)\ge1, i=1,2,...,m \end{aligned}
w,bmin21∣∣w∣∣2s.t.yi(wTϕ(x)+b)≥1,i=1,2,...,m
其对偶问题:
max
α
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
i
y
i
y
j
ϕ
(
x
i
)
T
ϕ
(
x
j
)
s
.
t
.
∑
i
=
1
m
α
i
y
i
=
0
,
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
m
.
(6.21)
\begin{aligned} &\max_\alpha \; \sum_{i=1}^m\alpha_i - \frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_iy_iy_j\phi(x_i)^T\phi(x_j)\\ & s.t. \; \sum_{i=1}^m \alpha_iy_i=0,\\ &\;\;\;\;\;\;\alpha_i\ge0,\;i=1,2,...,m. \tag{6.21} \end{aligned}
αmaxi=1∑mαi−21i=1∑mj=1∑mαiαiyiyjϕ(xi)Tϕ(xj)s.t.i=1∑mαiyi=0,αi≥0,i=1,2,...,m.(6.21)
求解(6.21)涉及到计算
ϕ
(
x
i
)
T
ϕ
(
x
j
)
\phi(x_i)^T\phi(x_j)
ϕ(xi)Tϕ(xj),这是样本
x
i
与
x
j
x_i与x_j
xi与xj映射到特征空间之后的内积。特征空间位数可能很高,甚至是无穷维,因此直接计算
ϕ
(
x
i
)
T
ϕ
(
x
j
)
\phi(x_i)^T\phi(x_j)
ϕ(xi)Tϕ(xj)通常是困难的。便引出了核函数(Kernel)的概念所以我们设想这样一个函数:
k
(
x
i
,
x
j
)
=
⟨
ϕ
(
x
i
)
,
ϕ
(
x
j
)
⟩
=
ϕ
(
x
i
)
T
ϕ
(
x
j
)
k(x_i,x_j)=\langle \phi(x_i),\phi(x_j) \rangle=\phi(x_i)^T\phi(x_j)
k(xi,xj)=⟨ϕ(xi),ϕ(xj)⟩=ϕ(xi)Tϕ(xj)
即
x
i
与
x
j
x_i与x_j
xi与xj在特征空间的内积等于它们在原始空间中通过函数
k
(
⋅
,
⋅
)
k(·,·)
k(⋅,⋅)计算的结果。可以用它来替换高维或者无穷维特征空间中的内积,于是(6.21)可重写为:
max
α
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
i
y
i
y
j
k
(
x
i
,
x
j
)
s
.
t
.
∑
i
=
1
m
α
i
y
i
=
0
,
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
m
.
\begin{aligned} & \max_\alpha\;\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_iy_iy_jk(x_i,x_j)\\ &s.t.\; \sum_{i=1}^m\alpha_iy_i=0,\\ & \;\;\;\;\;\;\alpha_i\ge0,\;i=1,2,...,m. \end{aligned}
αmaxi=1∑mαi−21i=1∑mj=1∑mαiαiyiyjk(xi,xj)s.t.i=1∑mαiyi=0,αi≥0,i=1,2,...,m.
求解后得到:
f
(
x
)
=
w
T
ϕ
(
x
)
+
b
=
∑
i
=
1
m
α
i
y
i
ϕ
(
x
i
)
T
ϕ
(
x
)
+
b
=
∑
i
=
1
m
α
i
y
i
k
(
x
,
x
i
)
+
b
(6.24)
\begin{aligned} f(x)&=w^T\phi(x)+b\\ &=\sum_{i=1}^m\alpha_iy_i\phi(x_i)^T\phi(x)+b\\ &=\sum_{i=1}^m\alpha_iy_ik(x,x_i)+b \tag{6.24} \end{aligned}
f(x)=wTϕ(x)+b=i=1∑mαiyiϕ(xi)Tϕ(x)+b=i=1∑mαiyik(x,xi)+b(6.24)
这里的函数
k
(
⋅
,
⋅
)
k(·,·)
k(⋅,⋅)就是核函数(kernel function),可以不必直接计算高维甚至无穷维特征空间中的内积。(6.24)显出模型最优解可通过训练样本的核函数展开,这一展示亦称“支持向量展式”。
现实任务中通常不知道映射
ϕ
(
⋅
)
\phi(·)
ϕ(⋅)的具体形式,也就不知道核函数
k
(
⋅
,
⋅
)
k(·,·)
k(⋅,⋅)是否存在,或者是什么样的。

几种常用核函数:
特别地,文本数据一般用线性核,情况不明可尝试高斯核。
除了这些常用的核函数,要产生核函数还可以使用组合的方式:
若
κ
1
和
κ
2
κ_1 和 κ_2
κ1和κ2都是核函数,则
a
κ
1
+
b
κ
2
aκ_1+bκ_2
aκ1+bκ2 也是核函数,其中 a>0,b>0。
若
κ
1
和
κ
2
κ_1 和 κ_2
κ1和κ2都是核函数,则其直积
κ
1
⊗
κ
2
(
x
,
z
)
=
κ
1
(
x
,
z
)
κ
2
(
x
,
z
)
κ_1⊗κ_2(x,z)=κ_1(x,z)κ_2(x,z)
κ1⊗κ2(x,z)=κ1(x,z)κ2(x,z)也是核函数。
若
κ
1
κ_1
κ1是核函数,则对于任意函数
g
(
x
)
,
κ
(
x
,
z
)
=
g
(
x
)
κ
1
(
x
,
z
)
g
(
z
)
g(x),κ(x,z)=g(x)κ_1(x,z)g(z)
g(x),κ(x,z)=g(x)κ1(x,z)g(z)也是核函数。
核函数举例:
每个样本有两个属性x和y,两个样本点
v
1
=
(
x
1
,
y
1
)
,
v
2
=
(
x
2
,
y
2
)
v_1=(x_1,y_1),v_2=(x_2,y_2)
v1=(x1,y1),v2=(x2,y2),其映射后的特征向量
ϕ
(
x
,
y
)
=
(
x
2
,
2
x
y
,
y
2
)
\phi(x,y)=(x^2,\sqrt2xy,y^2)
ϕ(x,y)=(x2,2xy,y2),对应核函数
k
(
v
1
,
v
2
)
=
⟨
v
1
,
v
2
⟩
2
k(v_1,v_2)=\langle v_1,v_2\rangle^2
k(v1,v2)=⟨v1,v2⟩2
证明:
v
1
,
v
2
v_1,v_2
v1,v2在特征空间的内积为
⟨
ϕ
(
v
1
)
,
ϕ
(
v
2
)
⟩
=
ϕ
(
v
1
)
T
ϕ
(
v
2
)
=
(
x
1
2
,
2
x
1
y
1
,
y
1
2
)
T
(
x
2
2
,
2
x
2
y
2
,
y
2
2
)
=
x
1
2
x
2
2
+
2
x
1
x
2
y
1
y
2
+
y
1
2
y
2
2
=
(
x
1
x
2
+
y
1
y
2
)
2
=
⟨
v
1
,
v
2
⟩
2
=
k
(
v
1
,
v
2
)
\begin{aligned} \langle\phi(v_1),\phi(v_2)\rangle&=\phi(v_1)^T\phi(v_2)\\ &=(x_1^2,\sqrt2x_1y_1,y_1^2)^T(x_2^2,\sqrt2x_2y_2,y_2^2)\\ &=x_1^2x_2^2+2x_1x_2y_1y_2+y_1^2y_2^2\\ &=(x_1x_2+y_1y_2)^2\\ &=\langle v_1,v_2\rangle^2\\ &=k(v_1,v_2) \end{aligned}
⟨ϕ(v1),ϕ(v2)⟩=ϕ(v1)Tϕ(v2)=(x12,2x1y1,y12)T(x22,2x2y2,y22)=x12x22+2x1x2y1y2+y12y22=(x1x2+y1y2)2=⟨v1,v2⟩2=k(v1,v2)
4. 软间隔与正则化
前面讨论的都是假定训练样本在样本空间或特征空间是线性可分的,即存在一个超平面能将不同类的样本完全划分开。但是,现实任务很难找到合适的核函数,即使找到,也难说这不是过拟合造成的结果。
解决办法:软间隔——允许支持向量机在一些样本上出错
前面介绍的是硬间隔——所有样本都必须划分正确。

硬间隔:必须满足约束
y
i
(
w
T
x
i
+
b
)
≥
1
(6.28)
\;y_i(w^Tx_i+b)\ge1\tag{6.28}
yi(wTxi+b)≥1(6.28)
软间隔:允许某些样本不满足约束(6.28)。

当然,在最大化间隔的同时,不满足约束的样本应该尽可能少。于是,优化目标为:

含义:如果分类正确,那么函数间隔必定大于等于1,此时损失为0;如果分类错误,那么函数间隔必定小于0,此时损失为1。
当 C 为无穷大时,(6.29)迫使所有样本均满足约束(6.28),因为此时对误分类的惩罚无限大,也即要求全部样本分类正确。当 C 取有限值时,(6.29)允许一些样本不满足约束。
0/1损失函数非凸、非连,所以式(6.29)不易直接求解。于是在实际任务中,我们采用一些凸的连续函数来取替它,这样的函数就称为替代损失函数。
三种常用的替代损失函数:

若用hinge损失,则(6.29)变成:
min
w
,
b
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
m
m
a
x
(
0
,
1
−
y
i
(
w
T
x
i
+
b
)
)
(6.34)
\min_{w,b}\;\frac{1}{2}||w||^2+C\sum_{i=1}^mmax(0,1-y_i(w^Tx_i+b))\tag{6.34}
w,bmin21∣∣w∣∣2+Ci=1∑mmax(0,1−yi(wTxi+b))(6.34)
引入“松弛变量”
ξ
i
≥
0
\;\xi_i\ge0
ξi≥0,可将(6.34)重写为:
min
w
,
b
,
ξ
i
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
m
ξ
i
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
−
ξ
i
,
ξ
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
m
.
(6.35)
\min_{w,b,\xi_i}\;\frac{1}{2}||w||^2+C\sum_{i=1}^m\xi_i\tag{6.35}\\ s.t. \;\;y_i(w^Tx_i+b)\ge1-\xi_i,\\ \;\;\;\;\;\;\;\xi_i\ge0,\;i=1,2,...,m.
w,b,ξimin21∣∣w∣∣2+Ci=1∑mξis.t.yi(wTxi+b)≥1−ξi,ξi≥0,i=1,2,...,m.(6.35)
这就是常用的“软间隔支持向量机”
显然,(6.35)中每个样本都有一个对应的松弛变量,用以表示该样本不满足约束(6.28)的程度。这也是一个二次规划问题。
- 1、通过拉格朗日乘子法把 m 个约束转换 m 个拉格朗日乘子,得到该问题的拉格朗日函数:
L ( w , b , α , ξ , μ ) = 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ξ i + ∑ i = 1 m α i ( 1 − ξ i − y i ( w T x i + b ) ) − ∑ i = 1 m μ i ξ i (6.36) \begin{aligned} L(w,b,\alpha,\xi,\mu)=&\frac{1}{2}||w||^2+C\sum_{i=1}^m\xi_i\\ &+\sum_{i=1}^m\alpha_i(1-\xi_i-y_i(w^Tx_i+b))-\sum_{i=1}^m\mu_i\xi_i \tag{6.36} \end{aligned} L(w,b,α,ξ,μ)=21∣∣w∣∣2+Ci=1∑mξi+i=1∑mαi(1−ξi−yi(wTxi+b))−i=1∑mμiξi(6.36)
其中, α i ≥ 0 , μ i ≥ 0 \alpha_i\ge0,\mu_i\ge0 αi≥0,μi≥0是拉格朗日乘子。 - 2、分别对
w
,
b
,
ξ
i
w,b,\xi_i
w,b,ξi求偏导为零,得:
w = ∑ i = 1 m α i y i x i 0 = ∑ i = 1 m α i y i C = α i + μ i w=\sum_{i=1}^m\alpha_iy_ix_i \\ 0=\sum_{i=1}^m\alpha_iy_i \\ C=\alpha_i+\mu_i w=i=1∑mαiyixi0=i=1∑mαiyiC=αi+μi - 3、带入(6.36)得到(6.35)的对偶问题:
max α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j s . t . ∑ i = 1 m α i y i = 0 , 0 ≤ α i ≤ C , i = 1 , 2 , . . . m . (6.40) \begin{aligned} &\max_\alpha\;\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_i^Tx_j\tag{6.40}\\ &s.t. \;\;\sum_{i=1}^m\alpha_iy_i=0,\\ &\;\;\;\;\;\;\;0\leq\alpha_i\leq C,\;i=1,2,...m. \end{aligned} αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxjs.t.i=1∑mαiyi=0,0≤αi≤C,i=1,2,...m.(6.40)
软间隔与硬间隔的对偶问题唯一的差别:对偶变量的约束条件不一样。
软间隔: 0 ≤ α i ≤ C 0\leq\alpha_i\leq C 0≤αi≤C;
硬间隔: 0 ≤ α i 0\leq\alpha_i 0≤αi - 4、和之前一样,使用SMO算法求解对偶问题,解出所有样本对应的拉格朗日乘子。
软间隔支持向量机,KKT条件要求:
{
α
i
≥
0
,
μ
i
≥
0
,
y
i
f
(
x
i
)
−
1
+
ξ
i
≥
0
,
α
i
(
y
i
f
(
x
i
)
−
1
+
ξ
i
)
=
0
,
ξ
i
≥
0
,
μ
i
ξ
i
=
0
\left\{ \begin{aligned} &\alpha_i\ge0,\;\mu_i\ge0,\\ &y_if(x_i)-1+\xi_i\ge0,\\ &\alpha_i(y_if(x_i)-1+\xi_i)=0,\\ &\xi_i\ge0,\;\mu_i\xi_i=0 \end{aligned} \right.
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧αi≥0,μi≥0,yif(xi)−1+ξi≥0,αi(yif(xi)−1+ξi)=0,ξi≥0,μiξi=0
KKT条件理解:
- 对于任意训练样本
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),总有
α
i
=
0
或
y
i
f
(
x
i
)
=
1
−
ξ
i
\alpha_i=0或y_if(x_i)=1-\xi_i
αi=0或yif(xi)=1−ξi
- 若 α i = 0 \alpha_i=0 αi=0,则该样本不会对f(x)有任何影响;
- 若
α
i
>
0
\alpha_i>0
αi>0,则必有
y
i
f
(
x
i
)
=
1
−
ξ
i
y_if(x_i)=1-\xi_i
yif(xi)=1−ξi,即该样本是支持向量:
根据 C = α i + μ i C=\alpha_i+\mu_i C=αi+μi可知:- 若 α i < C \alpha_i<C αi<C,则 μ i > 0 \mu_i>0 μi>0,进而有 ξ i = 0 \xi_i=0 ξi=0,则该样本恰在最大间隔边界上;
- 若
α
i
=
C
\alpha_i=C
αi=C,则
μ
i
=
0
\mu_i=0
μi=0(因为
μ
i
ξ
i
=
0
\mu_i\xi_i=0
μiξi=0,所以
ξ
i
\xi_i
ξi可以为大于等于0的任意数):
- 若 ξ i ≤ 1 \xi_i\leq1 ξi≤1,则该样本落在最大间隔内部;
- 若 ξ i > 1 \xi_i>1 ξi>1,则该样本被错误分类。
特别地,在 R. Collobert. 的论文Large Scale Machine Learning 中提到,常数 C 一般取训练集大小的倒数( C = 1 m C=\frac{1}{m} C=m1)。
上面是采用hinge损失函数。若果使用对率损失函数
ℓ
l
o
g
\ell_{log}
ℓlog来代替0/1损失,则几乎就得到了对率回归模型(3.27)。
支持向量机与对率回归的优化目标相近,通常情况下它们的性能也相当。
- 对率回归:具有自然的概率意义,即在给出预测标记的同时也给出了概率;可直接用于多分类任务
- 支持向量机:不具有概率意义,欲得到概率输出需进行特殊处理,不可直接用于多分类任务
无论使用何种损失函数,SVM的目标函数都可以描述为以下形式(6.42):

结构风险(structural risk):用于描述模型
f
f
f的某些性质。用来描述划分超平面“间隔”大小。
经验风险(empirical risk):用于描述模型与训练数据的契合程度。用来表述训练集上的误差。
参数 C 用于权衡这两种风险。
从最小化经验风险的角度来看,
Ω
(
f
)
Ω(f)
Ω(f)表述了我们希望得到具有何种性质的模型(例如复杂度较小的模型),这为引入领域知识和用户意图提供了途径;另一方面,Ω(f) 还有助于削减假设空间,从而降低了最小化训练误差的过拟合风险。
从这个角度来说,(6.42)称为“正则化”(regularization)问题,
Ω
(
f
)
Ω(f)
Ω(f)为正则化项,C 为正则化常数。
L
p
L_p
Lp范数是常用的正则化项,其中
L
2
L_2
L2范数
∣
∣
w
∣
∣
2
||w||_2
∣∣w∣∣2倾向于w的分量取值尽量均衡,即非零分量个数尽量稠密,而
L
0
L_0
L0范数
∣
∣
w
∣
∣
0
||w||_0
∣∣w∣∣0和
L
1
L_1
L1范数
∣
∣
w
∣
∣
1
||w||_1
∣∣w∣∣1则倾向于w的分量尽量稀疏,即非零分量个数尽量少。
正则化可理解为一种“罚函数法”,即对不希望得到的结果施以惩罚,从而使得优化过程趋向于希望目标。
前面学习的模型大多都是在最小化经验风险的基础上,再考虑结构风险(避免过拟合)。
而SVM是从最小化结构风险来展开的。
5. 支持向量回归(SVR)
同样是希望学得线性模型 f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b来做预测,使得 f ( x ) 与 y f(x)与y f(x)与y尽可能接近。
- 传统回归模型:基于模型输出 f ( x ) f(x) f(x)与真实值 y y y之间的差别来计算损失,当且仅当 f ( x ) f(x) f(x)与 y y y完全相同时,损失才为零。
- 支持向量回归(SVR):假设我们能容忍f(x)与y之间最多有
ϵ
\epsilon
ϵ的偏差,即仅当
f
(
x
)
f(x)
f(x)与
y
y
y之间的误差绝对值大于
ϵ
\epsilon
ϵ时,才计算损失。
如上图,这相当于以
f
(
x
)
f(x)
f(x)为中心,构建一个宽度为2
ϵ
\epsilon
ϵ的间隔带,若训练样本落在次间隔带,则认为是被预测正确的。
SVR问题的目标函数可形式化为:
min
w
,
b
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
m
ℓ
ϵ
(
f
(
x
i
)
−
y
i
)
(6.43)
\min_{w,b}\;\frac{1}{2}||w||^2+C\sum_{i=1}^m\ell_\epsilon(f(x_i)-y_i) \tag{6.43}
w,bmin21∣∣w∣∣2+Ci=1∑mℓϵ(f(xi)−yi)(6.43)
其中
C
C
C为正则化常数,
ℓ
ϵ
\ell_\epsilon
ℓϵ是ϵ−不敏感损失(ϵ−insensitive loss)函数。
ℓ
ϵ
(
z
)
=
{
0
,
i
f
∣
z
∣
≤
ϵ
;
∣
z
∣
−
ϵ
,
o
t
h
e
r
s
i
z
e
.
(6.44)
\ell_\epsilon(z)=\begin{cases} 0,& \mathrm{if}\;|z|\leq\epsilon;\\ |z|-\epsilon,&\mathrm{othersize.} \end{cases} \tag{6.44}
ℓϵ(z)={0,∣z∣−ϵ,if∣z∣≤ϵ;othersize.(6.44)
引入松弛变量
ξ
i
、
ξ
^
i
\xi_i、\hat\xi_i
ξi、ξ^i,分别表示间隔带两侧的松弛程度,它们可有所不同。将(6.43)重写为:
min
w
,
b
,
ξ
i
,
ξ
^
i
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
m
(
ξ
i
+
ξ
^
i
)
s
.
t
.
f
(
x
i
)
−
y
i
≤
ϵ
+
ξ
i
,
y
i
−
f
(
x
i
)
≤
ϵ
+
ξ
^
i
,
ξ
i
≥
0
,
ξ
^
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
m
.
\begin{aligned} &\min_{w,b,\xi_i,\hat\xi_i} \; \frac{1}{2}||w||^2+C\sum_{i=1}^m(\xi_i+\hat\xi_i)\\ &\;\;s.t. \; f(x_i)-y_i\leq \epsilon+\xi_i,\\ &\;\;\;\;\;\;\;\;y_i-f(x_i)\leq \epsilon+\hat\xi_i,\\ &\;\;\;\;\;\;\;\;\xi_i\ge0,\hat\xi_i\ge0,\;i=1,2,...,m. \end{aligned}
w,b,ξi,ξ^imin21∣∣w∣∣2+Ci=1∑m(ξi+ξ^i)s.t.f(xi)−yi≤ϵ+ξi,yi−f(xi)≤ϵ+ξ^i,ξi≥0,ξ^i≥0,i=1,2,...,m.
引入拉格朗日乘子
μ
i
≥
0
,
μ
^
i
≥
0
,
α
i
≥
0
,
α
^
i
≥
0
\mu_i\ge0,\hat\mu_i\ge0,\alpha_i\ge0,\hat\alpha_i\ge0
μi≥0,μ^i≥0,αi≥0,α^i≥0,得到拉格朗日函数:

讲求得的偏导带入(6.46),得到SVR得对偶问题:

KKT条件:

然后使用SMO算法求解拉格朗日乘子,最后得到SVR的解:

6. 核方法
补充:为什么要使用对偶问题(SVM)
1.对偶问题将原始问题中的约束转为了对偶问题中的等式约束
2.方便核函数的引入
3.改变了问题的复杂度。由求特征向量w转化为求比例系数a,在原始问题下,求解的复杂度与样本的维度有关,即w的维度。在对偶问题下,只与样本数量有关。
(对偶问题的理解)
2万+

被折叠的 条评论
为什么被折叠?



