SVM原理
SVM(Support Vector Machines)又称为支持向量机,是一种二分类的模型,其主要思想为找到空间中的一个能够将所有数据样本划开的超平面 W T X + b = 0 W^{T}X+b=0 WTX+b=0,并且使得数据集中所有数据到这个超平面的距离最短。
SVM大概可以分为三种情况:
- 线性可分情况下的线性分类器,这是最原始的SVM,它最核心的思想就是最大的分类间隔(margin maximization);
- 线性不可分情况下的线性分类器,引入了软间隔(soft margin)的概念;
- 线性不可分情况下的非线性分类器,是SVM与核函数(kernel function)的结合。
参考:
https://www.cnblogs.com/pinard/p/6100722.html
https://zhuanlan.zhihu.com/p/29862011
1 线性可分情况下的线性SVM分类器
在保证决策面方向不变且不会出现错分样本的情况下移动决策面,会在原来的决策面两侧找到两个极限位置(越过该位置就会产生错分现象),如虚线所示。虚线的位置由决策面的方向和距离原决策面最近的几个样本的位置决定。而这两条平行虚线正中间的分界线就是在保持当前决策面方向不变的前提下的最优决策面。两条虚线之间的垂直距离就是这个最优决策面对应的分类间隔。显然每一个可能把数据集正确分开的方向都有一个最优决策面(有些方向无论如何移动决策面的位置也不可能将两类样本完全分开),而不同方向的最优决策面的分类间隔通常是不同的,那个具有“最大间隔”的决策面就是SVM要寻找的最优解。而这个真正的最优解对应的两侧虚线所穿过的样本点,就是SVM中的支持样本点,称为支持向量。
1.2 分类间隔
在数据可分的时候,SVM就是一个线性的分类器。由点到直线的距离求图中的
d
d
d,这个d就是”分类间隔”。我们目的是为了找出一个分类效果好的超平面作为分类器。分类器的好坏的评定依据是分类间隔W=2d的大小,即分类间隔W越大,我们认为这个超平面的分类效果越好。此时,求解超平面的问题就变成了求解分类间隔W最大化的问题。W的最大化也就是d最大化的。
1.3 约束条件
为了求解w的最大值。我们不得不面对如下问题:
- 如何判断超平面是否将样本点正确分类?
- 知道相求距离d的最大值,首先需要找到支持向量上的点,怎么在众多的点中选出支持向量上的点呢?
如果我们的超平面方程能够完全正确地对上图的样本点进行分类,就会满足下面的方程: w T x i + b ≥ 0 y i = 1 w^Tx_i+b \ge 0 \qquad y_i =1 wTxi+b≥0yi=1 w T x i + b ≤ 0 y i = − 1 w^Tx_i+b \le 0 \qquad y_i =-1 wTxi+b≤0yi=−1 假设决策面正好处于间隔区域的中轴线上,并且相应的支持向量对应的样本点到决策面的距离为d,由点到直线的距离,那么公式进一步写成: w T x i + b ∣ ∣ w ∣ ∣ ≥ d y i = 1 \frac{w^Tx_i+b}{||w||} \ge d \qquad y_i =1 ∣∣w∣∣wTxi+b≥dyi=1 w T x i + b ∣ ∣ w ∣ ∣ ≤ d y i = − 1 \frac{w^Tx_i+b}{||w||} \le d \qquad y_i =-1 ∣∣w∣∣wTxi+b≤dyi=−1其中||w||表示w的二范数,求所有元素的平方和,然后再开方。对于所有分类标签为1的样本点,它们到直线的距离都大于等于d(支持向量上的样本点到超平面的距离)。对于所有分类标签为-1的样本点,它们到直线的距离都小于等于d。公式两边都除以d,就可以得到: w d T x i + b d ≥ 1 y i = 1 w_d^Tx_i+b_d \ge 1 \qquad y_i =1 wdTxi+bd≥1yi=1 w d T x i + b d ≤ 1 y i = − 1 w_d^Tx_i+b_d \le 1 \qquad y_i =-1 wdTxi+bd≤1yi=−1 其中: w d = w ∣ ∣ w ∣ ∣ d , b d = b ∣ ∣ w ∣ ∣ d w_d = \frac{w}{||w||d}, b_d = \frac{b}{||w||d} wd=∣∣w∣∣dw,bd=∣∣w∣∣db对于存在分类间隔的两类样本点,我们一定可以找到一些超平面面,使其对于所有的样本点均满足下面的条件:( w d w_d wd , y d y_d yd 改为 w w w , y y y )对于任意 x i x_i xi 有: y i ( w T x i + b ) ≥ 1 y_i(w^Tx_i+b)\geq 1 yi(wTxi+b)≥1
1.4 线性SVM优化问题基本描述
我们的优化目标是是d最大化,并且是用支持向量上的样本点求解d的最大化的问题的,对于任意支持向量上的样本点:
∣
w
T
x
i
+
b
∣
=
1
|w^Tx_i+b|=1
∣wTxi+b∣=1
d
=
1
∣
∣
w
∣
∣
d =\frac{1}{||w||}
d=∣∣w∣∣1
求解d的最大化问题变成了||w||的最小化问题。进而||w||的最小化问题等效于:
m
i
n
1
2
∣
∣
w
∣
∣
2
min\frac{1}{2}||w||^2
min21∣∣w∣∣2
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
,
n
y_i(w^Tx_i+b)\geq1,i = 1,2,..,n
yi(wTxi+b)≥1,i=1,2,..,n
1.5 求解线性可分SVM
1.5.1 凸集
如果集合中任意2个元素连线上的点也在集合中,那么这个集合就是凸集,凸函数:
f
(
α
x
1
+
(
1
−
α
)
x
2
)
≤
α
f
(
x
1
)
+
(
1
−
α
)
f
(
x
2
)
f(\alpha x_1 + (1-\alpha)x_2) \leq \alpha f(x_1)+(1-\alpha)f(x_2)
f(αx1+(1−α)x2)≤αf(x1)+(1−α)f(x2) 我们的目标函数是一个凸函数,(非凸函数,只能获得局部最优解)
1.5.2 优化问题
无约束优化问题: m i n f ( x ) minf(x) minf(x)有等式约束的优化问题: m i n f ( x ) minf(x) minf(x) s . t . h i ( x ) = 0 , i = 1 , 2 , . . . , n s.t. h_i(x) = 0,i=1,2,...,n s.t.hi(x)=0,i=1,2,...,n有不等式约束的优化问题: m i n f ( x ) minf(x) minf(x) s . t . g i ( x ) ≤ 0 , i = 1 , 2 , . . . , n s.t. g_i(x) \leq 0,i=1,2,...,n s.t.gi(x)≤0,i=1,2,...,n h j ( x ) = 0 , j = 1 , 2 , . . . , m h_j(x) = 0,j=1,2,...,m hj(x)=0,j=1,2,...,m
- 第一类的优化问题,常常使用的方法是费马大定理(Fermat),即求取函数f(x)的导数,令其为零,可以求得候选最优值,进行验证。
- 第二类的优化问题,常常使用的方法就是拉格朗日乘数法(Lagrange Multiplier) ,即把等式约束 h i ( x ) h_i(x) hi(x) 用一个系数与f(x)写为一个式子,称为拉格朗日函数 F ( x , α ) = f ( x ) + α h ( x ) F(x,\alpha) = f(x)+\alpha h(x) F(x,α)=f(x)+αh(x),而系数 α \alpha α 称为拉格朗日乘子。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值。
- 第三类的优化问题,常常使用的方法就是KKT条件。同样地,把所有的等式、不等式约束与f(x)写为一个式子,也叫拉格朗日函数,系数也称拉格朗日乘子,通过一些条件,可以求出最优值的必要条件,这个条件称为KKT条件。
1.5.3 拉格朗日函数及KKT条件推导
拉格朗日方程的目的:将约束条件放到目标函数中,从而将有约束优化问题转换为无约束优化问题。我们要求解的是最小化问题,所以一个直观的想法是如果我能够构造一个函数,使得该函数在可行解区域内与原目标函数完全一致,而在可行解区域外的数值非常大,甚至是无穷大,那么这个没有约束条件的新目标函数的优化问题就与原来有约束条件的原始目标函数的优化问题是等价的问题。
KKT条件:
把所有的不等式约束、等式约束和目标函数全部写为一个式子
L
(
x
,
u
,
v
)
=
f
(
x
)
+
u
∗
g
(
x
)
+
v
∗
h
(
x
)
L(x,u,v)= f(x) + u*g(x)+v*h(x)
L(x,u,v)=f(x)+u∗g(x)+v∗h(x),KKT条件是说最优值必须满足以下条件:
- L ( x , u , v ) 对 x L(x,u,v)对x L(x,u,v)对x求导为零
- h ( x ) = 0 h(x) =0 h(x)=0;
- u ∗ g ( x ) = 0 u*g(x) = 0 u∗g(x)=0
其中 u > = 0 , v > = 0 , g ( x ) < = 0 u>=0,v>=0,g(x)<=0 u>=0,v>=0,g(x)<=0,当有对应的值满足以上KKT条件时,则为不等式约束的优化问题的极值
推导KKT条件: 当不等式约束的优化问题满足以上条件时,存在极值
(1)拉格朗日函数对x取下确界 (固定
u
,
v
u,v
u,v):
L
(
x
,
u
,
v
)
=
f
(
x
)
+
u
∗
g
(
x
)
+
v
∗
h
(
x
)
L(x,u,v)= f(x) + u*g(x)+v*h(x)
L(x,u,v)=f(x)+u∗g(x)+v∗h(x)
k
(
u
,
v
)
=
m
i
n
x
L
(
x
,
u
,
v
)
<
L
(
x
∗
,
u
,
v
)
=
f
(
x
∗
)
+
u
∗
g
(
x
∗
)
+
v
∗
h
(
x
∗
)
<
f
(
x
∗
)
k(u,v) = min_xL(x,u,v)<L(x^*,u,v)=f(x^*) + u*g(x^*)+v*h(x^*)<f(x^*)
k(u,v)=minxL(x,u,v)<L(x∗,u,v)=f(x∗)+u∗g(x∗)+v∗h(x∗)<f(x∗)此时,
k
(
u
,
v
)
k(u,v)
k(u,v) 给出了原问题最优解的一个下界,此时问题转为求解:
m
a
x
u
,
v
k
(
u
,
v
)
max_{u,v}k(u,v)
maxu,vk(u,v)即
m
i
n
x
m
a
x
u
,
v
L
(
x
,
u
,
v
)
min_xmax_{u,v}L(x,u,v)
minxmaxu,vL(x,u,v)
(2)证明:
m
i
n
x
m
a
x
u
L
(
x
,
u
)
=
m
a
x
u
m
i
n
x
L
(
x
,
u
)
min_xmax_uL(x,u) = max_umin_xL(x,u)
minxmaxuL(x,u)=maxuminxL(x,u)
-
由于: u g ( x ) ≤ 0 ug(x)\leq0 ug(x)≤0 有: m a x u L ( x , u ) = f ( x ) max_uL(x,u)=f(x) maxuL(x,u)=f(x) m i n x f ( x ) = m i n x m a x u L ( x , u ) min_xf(x) = min_xmax_uL(x,u) minxf(x)=minxmaxuL(x,u)
-
m a x u m i n x L ( x , u ) = m a x u [ m i n x f ( x ) + m i n x u g ( x ) ] = m a x u m i n x f ( x ) + m a x u m i n x u g ( x ) = m i n x f ( x ) + m a x u m i n x u g ( x ) \begin{aligned} max_umin_xL(x,u) &=max_u[min_xf(x)+min_xug(x)]\\ &=max_umin_xf(x)+max_umin_xug(x) \\ &= min_xf(x)+max_umin_xug(x) \end{aligned} maxuminxL(x,u)=maxu[minxf(x)+minxug(x)]=maxuminxf(x)+maxuminxug(x)=minxf(x)+maxuminxug(x) u g ( x ) = { 0 , if u = 0 or g ( x ) = 0 − k , if u ≥ 0 or g ( x ) ≤ 0 ug(x) = \begin{cases} 0, & \text{if $u=0$ or $g(x)=0$ } \\ -k, & \text{if $u\ge0$ or $g(x)\le0$} \end{cases} ug(x)={0,−k,if u=0 or g(x)=0 if u≥0 or g(x)≤0 ∴ m a x u m i n x u g ( x ) = 0 a n d : u = 0 o r g ( x ) = 0 \therefore max_umin_xug(x) =0 \qquad and : u=0 \qquad or\qquad g(x)=0 ∴maxuminxug(x)=0and:u=0org(x)=0 ∴ m a x u m i n x L ( x , u ) = m a x u m i n x f ( x ) + m a x u m i n x u g ( x ) = m a x u m i n x f ( x ) = m i n x f ( x ) \therefore max_umin_xL(x,u) = max_umin_xf(x)+max_umin_xug(x) =max_umin_xf(x)= min_xf(x) ∴maxuminxL(x,u)=maxuminxf(x)+maxuminxug(x)=maxuminxf(x)=minxf(x)得证: m i n x m a x u L ( x , u ) = m a x u m i n x L ( x , u ) min_xmax_uL(x,u) = max_umin_xL(x,u) minxmaxuL(x,u)=maxuminxL(x,u)
我们将
m
a
x
u
m
i
n
x
L
(
x
,
u
)
max_umin_xL(x,u)
maxuminxL(x,u)称为原问题的对偶问题,并且当满足一定条件时原问题、对偶问题以及
m
i
n
f
(
x
)
minf(x)
minf(x)的解是相同的,且在最优解有:
u
=
0
u=0
u=0 or
g
(
x
∗
)
=
0
g(x^*)=0
g(x∗)=0
L
(
x
,
u
)
L(x,u)
L(x,u)在
x
∗
x^*
x∗处的偏导为0 表明
f
(
x
∗
)
f(x^*)
f(x∗)在极值点
x
∗
x^*
x∗处的梯度是各个
h
i
(
x
)
h_i(x)
hi(x)和梯度
g
k
(
x
)
g_k(x)
gk(x) 的线性组合
1.5.4 求解SVM拉格朗日函数
将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数:
原始目标函数:
m
i
n
1
2
∣
∣
w
∣
∣
2
min\frac{1}{2}||w||^2
min21∣∣w∣∣2
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
,
i
=
1
,
2
,
.
.
,
n
1- y_i(w^Tx_i+b)\leq0,i = 1,2,..,n
1−yi(wTxi+b)≤0,i=1,2,..,n
拉格朗日目标函数:
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
2
−
∑
i
=
1
n
α
i
(
y
i
(
w
T
x
i
+
b
)
−
1
)
L(w,b,\alpha) = \frac{1}{2}||w||^2- \sum_{i=1}^n \alpha_i(y_i(w^Tx_i+b)-1)
L(w,b,α)=21∣∣w∣∣2−i=1∑nαi(yi(wTxi+b)−1)其中
α
i
α_i
αi 是拉格朗日乘子,
α
i
α_i
αi 大于等于0,是构造新目标函数时引入的系数变量。
原始目标约束函数满足KKT条件,求解其对偶问题:
m
a
x
α
m
i
n
w
,
b
L
(
w
,
b
,
α
)
max_\alpha min_{w,b}L(w,b,\alpha)
maxαminw,bL(w,b,α)
分别对
w
,
b
w,b
w,b 求导,令求导后的式子等于0,得到基于w和b的极小值:
w
=
∑
i
=
1
n
α
i
y
i
x
i
w = \sum_{i=1}^n \alpha_iy_ix_i
w=i=1∑nαiyixi
∑
i
=
1
n
α
i
y
i
=
0
\sum_{i=1}^n \alpha_iy_i = 0
i=1∑nαiyi=0
将其带入拉格朗日函数中:
原问题变为求解:
m
a
x
α
L
(
α
)
=
∑
i
=
1
n
α
i
−
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
x
i
T
x
j
max_\alpha L(\alpha) = \sum_{i=1}^n α_i - \frac{1}{2}\sum_{i=1}^n\sum_{j=1}^nα_iα_jy_iy_jx_i^Tx_j
maxαL(α)=i=1∑nαi−21i=1∑nj=1∑nαiαjyiyjxiTxj
s
.
t
.
∑
i
=
1
n
α
i
y
i
=
0
,
i
=
1
,
2
,
.
.
.
,
n
s.t. \sum_{i=1}^n α_iy_i = 0, i = 1,2,...,n
s.t.i=1∑nαiyi=0,i=1,2,...,n
1.5.5 SMO算法
SMO表示序列最小化(Sequential Minimal Optimizaion) 工作原理是:每次循环中选择两个
α
\alpha
α进行优化处理。一旦找到了一对合适的
α
\alpha
α,那么就增大其中一个同时减小另一个。这里所谓的”合适”就是指两个
α
\alpha
α必须符合以下两个条件,条件之一就是两个
α
\alpha
α必须要在间隔边界之外,而且第二个条件则是这两个
α
\alpha
α还没有进进行过区间化处理或者不在边界上。
SMO算法的解法:
将目标函数变形,在前面增加一个符号,将最大值问题转换成最小值问题:
m
i
n
α
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
x
i
T
x
j
−
∑
i
=
1
n
α
i
min_α \frac{1}{2}\sum_{i=1}^n\sum_{j=1}^nα_iα_jy_iy_jx_i^Tx_j-\sum_{i=1}^n α_i
minα21i=1∑nj=1∑nαiαjyiyjxiTxj−i=1∑nαi
s
.
t
.
∑
i
=
1
n
α
i
y
i
=
0
,
i
=
1
,
2
,
.
.
.
,
n
s.t. \sum_{i=1}^n α_iy_i = 0, i = 1,2,...,n
s.t.i=1∑nαiyi=0,i=1,2,...,n详细算法见第5章
1.5.6 线性可分SVM:求解w,b
求解
w
w
w
根据:
w
=
∑
i
=
1
n
α
i
y
i
x
i
w = \sum_{i=1}^n \alpha_iy_ix_i
w=∑i=1nαiyixi,求出对应的
w
∗
w^*
w∗:
w
∗
=
∑
i
=
1
n
α
i
∗
y
i
x
i
w^* = \sum_{i=1}^n \alpha^*_iy_ix_i
w∗=i=1∑nαi∗yixi
支持向量求解
根据KKT条件中的对偶互补条件
α
i
∗
(
y
i
(
w
T
x
i
+
b
)
−
1
)
=
0
\alpha_i*(y_i(w^Tx_i+b) -1)=0
αi∗(yi(wTxi+b)−1)=0 ,如果
α
i
>
0
α_i>0
αi>0 则有
y
i
(
w
T
x
i
+
b
)
=
1
y_i(w^Tx_i+b)=1
yi(wTxi+b)=1 即点在支持向量上,否则如果
α
i
=
0
α_i=0
αi=0 则有
y
i
(
w
T
x
i
+
b
)
≥
1
y_i(w^Tx_i+b)≥1
yi(wTxi+b)≥1,即样本在支持向量上或者已经被正确分类。
求解
b
b
b
对于任意支持向量
(
x
s
,
y
s
)
(x_s,y_s)
(xs,ys),有:
y
s
(
w
T
x
s
+
b
)
=
y
s
(
∑
i
=
1
n
α
i
y
i
x
i
T
x
s
+
b
)
=
1
y_s(w^Tx_s+b) =y_s( \sum_{i=1}^n \alpha_iy_ix_i^Tx_s+b)= 1
ys(wTxs+b)=ys(i=1∑nαiyixiTxs+b)=1假设我们有
S
S
S个支持向量,则对应我们求出
S
S
S个
b
∗
b^*
b∗,理论上这些
b
∗
b^*
b∗ 都可以作为最终的结果, 但是我们一般采用一种更健壮的办法,即求出所有支持向量所对应的
b
∗
b^*
b∗,然后将其平均值作为最后的结果。注意到对于严格线性可分的SVM,b的值是有唯一解的,也就是这里求出的所有
b
∗
b^*
b∗都是一样的
这样最终的分类超平面为:
w
∗
⋅
x
+
b
∗
=
0
w^∗\cdot x+b^∗=0
w∗⋅x+b∗=0,最终的分类决策函数为:
f
(
x
)
=
s
i
g
n
(
w
∗
⋅
x
+
b
∗
)
f(x)=sign(w^∗\cdot x+b^∗)
f(x)=sign(w∗⋅x+b∗)
2 线性不可分情况下的线性SVM分类器
2.1 软间隔
实际上,对于上述目标函数,是存在一个假设的,即数据100%线性可分。但是,目前为止,我们知道几乎所有数据都不那么”干净”。这时我们就可以通过引入所谓的松弛变量(slack variable)(为了便于在更大的可行域内求解),来允许有些数据点可以处于超平面的错误的一侧,为此要引入“软间隔”(soft margin)的概念。前面介绍的支持向量机形式是要求所有样本都满足约束,即所有样本都必须划分正确,这称为“硬间隔”(hard margin),而软间隔则是允许某些样本不满足约束 y i ( w T x i + b ) ≥ 1 y_i(w^Tx_i+b)\geq1 yi(wTxi+b)≥1,在最大化间隔的同时,不满足约束条件的样本应该尽可能少,新的约束条件为: y i ( w T x i + b ) ≥ 1 − ε i y_i(w^Tx_i+b)\geq1-\varepsilon_i yi(wTxi+b)≥1−εi同时,对于每一个松弛变量 ε i ≥ 0 \varepsilon_i\geq 0 εi≥0,支付一个代价 ε i ≥ 0 \varepsilon_i\geq 0 εi≥0,目标函数变为: m i n 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 n ε i min \frac{1}{2}||w||^2 + C\sum_{i=1}^n \varepsilon_i min21∣∣w∣∣2+Ci=1∑nεi s . t . y i ( w T x i + b ) ≥ 1 − ε i s.t. y_i(w^Tx_i+b)\geq1-\varepsilon_i s.t.yi(wTxi+b)≥1−εi ε i ≥ 0 \varepsilon_i \geq 0 εi≥0这里, C > 0 C>0 C>0为惩罚参数,可以理解为我们一般回归和分类问题正则化时候的参数。C越大,对误分类的惩罚越大,C越小,对误分类的惩罚越小。也就是说,我们希望 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21∣∣w∣∣2 尽量小,误分类的点尽可能的少。C是协调两者关系的正则化惩罚系数。在实际应用中,需要调参来选择。
2.2 线性分类SVM的软间隔最大化目标函数的优化
将软间隔最大化的约束问题用拉格朗日函数转化为无约束问题如下:
L
(
w
,
b
,
ε
,
α
,
u
)
=
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
n
ε
i
−
∑
i
=
1
n
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
+
ε
i
]
−
∑
i
=
1
n
u
i
ε
i
L(w,b,\varepsilon,\alpha,u) = \frac{1}{2}||w||^2+C\sum_{i=1}^n\varepsilon_i - \sum_{i=1}^n\alpha_i[y_i(w^Tx_i+b)-1+\varepsilon_i]-\sum_{i=1}^nu_i\varepsilon_i
L(w,b,ε,α,u)=21∣∣w∣∣2+Ci=1∑nεi−i=1∑nαi[yi(wTxi+b)−1+εi]−i=1∑nuiεi要优化的目标函数为:
m
i
n
w
,
b
,
ε
m
a
x
α
i
,
u
i
L
(
w
,
b
,
ε
,
α
,
u
)
min_{w,b,\varepsilon}max_{\alpha_i,u_i}L(w,b,\varepsilon,\alpha,u)
minw,b,εmaxαi,uiL(w,b,ε,α,u)这个优化目标也满足KKT条件,也就是说,可以通过拉格朗日对偶将我们的优化问题转化为等价的对偶问题来求解如下:
m
a
x
α
i
,
u
i
m
i
n
w
,
b
,
ε
L
(
w
,
b
,
ε
,
α
,
u
)
max_{\alpha_i,u_i}min_{w,b,\varepsilon}L(w,b,\varepsilon,\alpha,u)
maxαi,uiminw,b,εL(w,b,ε,α,u)分别对
w
,
b
,
ε
w,b,\varepsilon
w,b,ε 求导=0,得到基于
w
,
b
,
ε
w,b,\varepsilon
w,b,ε的极小值:
w
=
∑
i
=
1
n
α
i
y
i
x
i
w = \sum_{i=1}^n \alpha_iy_ix_i
w=i=1∑nαiyixi
∑
i
=
1
n
α
i
y
i
=
0
\sum_{i=1}^n \alpha_iy_i = 0
i=1∑nαiyi=0
C
−
α
i
−
u
i
=
0
C-\alpha_i-u_i= 0
C−αi−ui=0带入目标优化函数中:
L
(
w
,
b
,
ε
,
α
,
u
)
=
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
n
ε
i
−
∑
i
=
1
n
α
i
[
y
i
(
w
T
x
i
+
b
)
−
1
+
ε
i
]
−
∑
i
=
1
n
u
i
ε
i
L(w,b,\varepsilon,\alpha,u) = \frac{1}{2}||w||^2+C\sum_{i=1}^n\varepsilon_i - \sum_{i=1}^n\alpha_i[y_i(w^Tx_i+b)-1+\varepsilon_i]-\sum_{i=1}^nu_i\varepsilon_i
L(w,b,ε,α,u)=21∣∣w∣∣2+Ci=1∑nεi−i=1∑nαi[yi(wTxi+b)−1+εi]−i=1∑nuiεi优化目标变为:
m
i
n
α
(
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
x
i
T
x
j
−
∑
i
=
1
n
α
i
)
min_α (\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^nα_iα_jy_iy_jx_i^Tx_j-\sum_{i=1}^n α_i )
minα(21i=1∑nj=1∑nαiαjyiyjxiTxj−i=1∑nαi)
s
.
t
.
∑
i
=
1
n
α
i
y
i
=
0
,
i
=
1
,
2
,
.
.
.
,
n
s.t. \sum_{i=1}^n α_iy_i = 0, i = 1,2,...,n
s.t.i=1∑nαiyi=0,i=1,2,...,n
0
≤
α
i
≤
C
0 \leq α_i \leq C
0≤αi≤C
2.3 软间隔最大化时的支持向量
因为我们对每个样本
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)引入了松弛变量
ε
i
\varepsilon_i
εi。我们从下图来研究软间隔最大化时支持向量的情况,第
i
i
i 个点到对应类别支持向量的距离为
ε
i
∣
∣
w
∣
∣
2
\frac{\varepsilon_i}{||w||^2}
∣∣w∣∣2εi。根据软间隔最大化时KKT条件中的对偶互补条件:
α
i
∗
(
y
i
(
w
T
x
i
+
b
)
−
1
+
ε
i
∗
)
=
0
α^∗_i(y_i(w^Tx_i+b)−1+\varepsilon^∗_i)=0
αi∗(yi(wTxi+b)−1+εi∗)=0
ε
i
∗
u
i
∗
=
0
\varepsilon^∗_iu_i^*=0
εi∗ui∗=0a) 如果
α
=
0
α=0
α=0,那么
ε
i
=
0
,
y
i
(
w
T
x
i
+
b
)
−
1
≥
0
\varepsilon_i=0,y_i(w^Tx_i+b)−1≥0
εi=0,yi(wTxi+b)−1≥0,即样本在间隔边界上或者已经被正确分类。如图中所有远离间隔边界的点。
b) 如果
0
<
α
<
C
0<α<C
0<α<C,那么
ε
i
=
0
,
y
i
(
w
T
x
i
+
b
)
−
1
=
0
\varepsilon_i=0,y_i(w^Tx_i+b)−1=0
εi=0,yi(wTxi+b)−1=0,即点在间隔边界上。
c) 如果
α
=
C
α=C
α=C,那么
ε
i
≥
0
\varepsilon_i \geq0
εi≥0,说明这是一个可能比较异常的点,需要检查此时
ε
i
\varepsilon_i
εi:
- 如果 0 ≤ ε i ≤ 1 0≤\varepsilon_i≤1 0≤εi≤1,那么点被正确分类,但是却在超平面和自己类别的间隔边界之间。如图中的样本2和4.
- 如果 ε i = 1 \varepsilon_i=1 εi=1,那么点在分离超平面上,无法被正确分类。
- 如果
ε
i
>
1
\varepsilon_i>1
εi>1,那么点在超平面的另一侧,也就是说,这个点不能被正常分类。如图中的样本1和3.
剩余求解过程与线性不可分一致
3 线性不可分情况下的非线性SVM分类器
线性不可分的低维特征数据,可以将其映射到高维,就能线性可分。SVM的优化目标函数变成:
m
i
n
α
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
ϕ
(
x
i
)
ϕ
(
x
j
)
−
∑
i
=
1
n
α
i
min_α \frac{1}{2}\sum_{i=1}^n\sum_{j=1}^nα_iα_jy_iy_j\phi(x_i)\phi (x_j)-\sum_{i=1}^n α_i
minα21i=1∑nj=1∑nαiαjyiyjϕ(xi)ϕ(xj)−i=1∑nαi
s
.
t
.
∑
i
=
1
n
α
i
y
i
=
0
,
i
=
1
,
2
,
.
.
.
,
n
s.t. \sum_{i=1}^n α_iy_i = 0, i = 1,2,...,n
s.t.i=1∑nαiyi=0,i=1,2,...,n
0
≤
α
i
≤
C
0 \leq α_i \leq C
0≤αi≤C和线性可分SVM的优化目标函数的区别仅仅是将内积
x
i
∙
x
j
x_i∙x_j
xi∙xj 替换为
ϕ
(
x
i
)
∙
ϕ
(
x
j
)
ϕ(x_i)∙ϕ(x_j)
ϕ(xi)∙ϕ(xj) 。
核函数:
核函数的价值在于它是将特征进行从低维到高维的转换,但核函数是在低维上进行计算,并将实质上的分类效果(利用了内积)表现在了高维上,这样避免了直接在高维空间中的复杂计算,真正解决了SVM不可分的问题。
假设
ϕ
ϕ
ϕ是一个从低维的输入空间
χ
χ
χ(欧式空间的子集或者离散集合)到高维的希尔伯特空间的
H
H
H映射。那么如果存在函数
K
(
x
,
z
)
K(x,z)
K(x,z),对于任意
x
,
z
∈
χ
x,z∈χ
x,z∈χ,都有:
K
(
x
,
z
)
=
ϕ
(
x
)
∙
ϕ
(
z
)
K(x,z)=ϕ(x)∙ϕ(z)
K(x,z)=ϕ(x)∙ϕ(z)那么我们就称
K
(
x
,
z
)
K(x,z)
K(x,z)为核函数
正定核函数:一个函数要想成为正定核函数,必须满足其里面任何点的集合形成的Gram矩阵(内积形成的矩阵)是半正定的。也就是说,对于任意的
x
i
∈
χ
,
i
=
1
,
2
,
3...
m
,
K
(
x
i
,
x
j
)
x_i∈χ,i=1,2,3...m, K(x_i,x_j)
xi∈χ,i=1,2,3...m,K(xi,xj)对应的Gram矩阵
K
=
[
K
(
x
i
,
x
j
)
]
K=[K(x_i,x_j)]
K=[K(xi,xj)] 是半正定矩阵,则
K
(
x
,
z
)
K(x,z)
K(x,z)是正定核函数
常见核函数:
4. SVM算法的优缺点
SVM算法的主要优点有:
- 解决高维特征的分类问题和回归问题很有效,在特征维度大于样本数时依然有很好的效果。
- 仅仅使用一部分支持向量来做超平面的决策,无需依赖全部数据。
- 有大量的核函数可以使用,从而可以很灵活的来解决各种非线性的分类回归问题。
- 样本量不是海量数据的时候,分类准确率高,泛化能力强。
SVM算法的主要缺点有:
- 如果特征维度远远大于样本数,则SVM表现一般。
- SVM在样本量非常大,核函数映射维度非常高时,计算量过大,不太适合使用。
- 非线性问题的核函数的选择没有通用标准,难以选择一个合适的核函数。
- SVM对缺失数据敏感。
5. SMO算法原理
上述对偶形式的KKT条件:
{
w
=
∑
i
=
1
n
α
i
y
i
x
i
,
∑
i
=
1
n
α
i
y
i
=
0
,
C
−
α
i
−
u
i
=
0
,
(目标函数求导后为0)
α
i
(
y
i
f
(
x
i
)
−
1
+
ε
i
)
=
0
u
i
ε
i
=
0
\begin{cases} w = \sum_{i=1}^n \alpha_iy_ix_i , \quad \sum_{i=1}^n \alpha_iy_i = 0, \quad C-\alpha_i-u_i= 0 , \text{(目标函数求导后为0)}\\ α_i(y_if(x_i)-1+\varepsilon_i )=0\\ u_i\varepsilon_i =0\\ \end{cases}
⎩⎪⎨⎪⎧w=∑i=1nαiyixi,∑i=1nαiyi=0,C−αi−ui=0,(目标函数求导后为0)αi(yif(xi)−1+εi)=0uiεi=0 除此之外还有:
{
α
i
≥
0
u
i
≥
0
y
i
f
(
x
i
)
−
1
+
ε
i
≥
0
ε
i
≥
0
\begin{cases} α_i \geq 0 \\ u_i \geq 0\\ y_if(x_i)-1+\varepsilon_i \geq 0\\ \varepsilon_i \geq 0 \\ \end{cases}
⎩⎪⎪⎪⎨⎪⎪⎪⎧αi≥0ui≥0yif(xi)−1+εi≥0εi≥0于是,对于任意训练样本,总有
α
i
=
0
α_i=0
αi=0 或者
y
i
f
(
x
i
)
=
1
−
ε
i
y_if(x_i)=1-\varepsilon_i
yif(xi)=1−εi.
(1)
α
i
=
0
α_i=0
αi=0,则该样本不会对
f
(
x
)
f(x)
f(x) 有任何影响
(2)
α
i
>
0
α_i>0
αi>0 ,则必有
y
i
f
(
x
i
)
=
1
−
ε
i
y_if(x_i)=1-\varepsilon_i
yif(xi)=1−εi,即该样本是支持向量。
- 若 α i < C α_i<C αi<C,则 μ i > 0 μ_i>0 μi>0,进而有 ε i = 0 \varepsilon_i=0 εi=0,所以此时有: y i f ( x i ) = 1 y_if(x_i)=1 yif(xi)=1,即该样本恰好在最大间隔边界上;
- 若 α i = C α_i=C αi=C,则 μ i = 0 μ_i=0 μi=0,此时若 ε i ≤ 1 \varepsilon_i\leq1 εi≤1 则该样本落在最大间隔内部;若 ε i > 1 \varepsilon_i>1 εi>1 则该样本被错误分类。
5.1 SMO目标函数求解
优化上述式子比较复杂,里面有n个变量组成的向量 α 需要在目标函数极小化的时候求出。直接优化时很难的。SMO算法则采用了一种启发式的方法。它每次只优化两个变量,将其他的变量都视为常数。由于 ∑ i = 1 n α i y i = 0 \sum_{i=1}^n \alpha_iy_i = 0 ∑i=1nαiyi=0 .假如将 α 3 , α 4 , . . . , α m α_3,α_4,...,α_m α3,α4,...,αm 固定,那么 α 1 , α 2 α_1,α_2 α1,α2 之间的关系也确定了。这样SMO算法将一个复杂的优化算法转化为一个比较简单的两变量优化问题。定义 K i j = ϕ ( x i ) ∙ ϕ ( x j ) K_{ij}=ϕ(x_i)∙ϕ(x_j) Kij=ϕ(xi)∙ϕ(xj) 目标优化函数变成下式: m i n α 1 , α 2 1 2 K 11 α 1 2 + 1 2 K 22 α 2 2 + y 1 y 2 K 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 α 1 ∑ i = 3 n y i α i K i 1 + y 2 α 2 ∑ i = 3 n y i α i K i 2 min_{α_1,α_2}\frac{1}{2}K_{11}α_1^2 + \frac{1}{2}K_{22}α_2^2 + y_1y_2K_{12}α_1α_2 - (α_1+α_2) + y_1α_1\sum_{i=3}^ny_iα_iK_{i1} + y_2α_2\sum_{i=3}^ny_iα_iK_{i2} minα1,α221K11α12+21K22α22+y1y2K12α1α2−(α1+α2)+y1α1i=3∑nyiαiKi1+y2α2i=3∑nyiαiKi2 s . t . α 1 y 1 + α 2 y 2 = − ∑ i = 3 n α i y i = m s.t. α_1y_1 +α_2y_2 = -\sum_{i=3}^n \alpha_iy_i =m s.t.α1y1+α2y2=−i=3∑nαiyi=m有: α 1 = ( m − α 2 y 2 ) / y 1 α_1 = (m- α_2y_2)/y_1 α1=(m−α2y2)/y1将优化目标中所有的 α 1 α_1 α1 都替换为用 α 2 α_2 α2 表示的形式,优化形式变为: m i n ϕ ( α 2 ) = 1 2 K 11 ( m − α 2 y 2 ) 2 + 1 2 K 22 α 2 2 + α 2 y 2 K 12 ( m − α 2 y 2 ) − ( ( m − α 2 y 2 ) / y 1 + α 2 ) + ( m − α 2 y 2 ) ∑ i = 3 n y i α i K i 1 + y 2 α 2 ∑ i = 3 n y i α i K i 2 min \phi(α_2) = \frac{1}{2}K_{11}(m- α_2y_2)^2 + \frac{1}{2}K_{22}α_2^2 + α_2y_2K_{12} (m- α_2y_2) - ((m- α_2y_2)/y_1+α_2) + (m- α_2y_2)\sum_{i=3}^ny_iα_iK_{i1} + y_2α_2\sum_{i=3}^ny_iα_iK_{i2} minϕ(α2)=21K11(m−α2y2)2+21K22α22+α2y2K12(m−α2y2)−((m−α2y2)/y1+α2)+(m−α2y2)i=3∑nyiαiKi1+y2α2i=3∑nyiαiKi2此时,优化目标中仅含有 α 2 α_2 α2 一个待优化变量了,我们现在将待优化函数对 α 2 α_2 α2 求偏导得到如下结果: ∂ ϕ ( α 2 ) ∂ α 2 = ( K 11 + K 22 − 2 K 12 ) α 2 − K 11 m y 2 + K 12 m y 2 + y 2 y 1 − 1 − y 2 ∑ i = 3 n y i α i K i 1 + y 2 ∑ i = 3 n y i α i K i 2 \frac{\partial \phi(α_2)}{\partialα_2} =(K_{11}+K_{22}-2K_{12})α_2-K_{11}my_2+K_{12}my_2+ y_2y_1-1 - y_2\sum_{i=3}^ny_iα_iK_{i1} + y_2\sum_{i=3}^ny_iα_iK_{i2} ∂α2∂ϕ(α2)=(K11+K22−2K12)α2−K11my2+K12my2+y2y1−1−y2i=3∑nyiαiKi1+y2i=3∑nyiαiKi2为了简化叙述,我们令 E i = g ( x i ) − y i = ∑ j = 1 n α j y j K ( x i , x j ) + b − y i E_i=g(x_i)−y_i=∑_{j=1}^nα_jy_jK(x_i,x_j)+b−y_i Ei=g(xi)−yi=j=1∑nαjyjK(xi,xj)+b−yi 令: v i = ∑ j = 3 n y i α i K ( x i , x j ) = g ( x i ) − ∑ j = 1 2 y j α j K ( x i , x j ) − b v_i=\sum_{j=3}^ny_iα_iK(x_i,x_j)= g(x_i)−\sum_{j=1}^2y_jα_jK(x_i,x_j)-b vi=j=3∑nyiαiK(xi,xj)=g(xi)−j=1∑2yjαjK(xi,xj)−b带入我们求偏导的结果中有: ∂ ϕ ( α 2 ) ∂ α 2 = ( K 11 + K 22 − 2 K 12 ) α 2 − K 11 m y 2 + K 12 m y 2 + y 2 y 1 − 1 − y 2 v 1 + y 2 v 2 = 0 \frac{\partial \phi(α_2)}{\partialα_2} =(K_{11}+K_{22}-2K_{12})α_2-K_{11}my_2+K_{12}my_2+ y_2y_1-1 - y_2v_1 + y_2v_2 = 0 ∂α2∂ϕ(α2)=(K11+K22−2K12)α2−K11my2+K12my2+y2y1−1−y2v1+y2v2=0整理上式有: ( K 11 + K 22 − 2 K 12 ) α 2 = y 2 ( K 11 m − K 12 m + y 2 − y 1 + v 1 − v 2 ) (K_{11}+K_{22}-2K_{12})α_2 = y_2(K_{11}m-K_{12}m+ y_2-y_1 + v_1 - v_2 ) (K11+K22−2K12)α2=y2(K11m−K12m+y2−y1+v1−v2)将 α 1 y 1 + α 2 y 2 = m α_1y_1 +α_2y_2 =m α1y1+α2y2=m 及 E i E_i Ei 代入上式有(采用启发式的迭代法,假设我们上一轮迭代得到的解是 α 1 o l d , α 2 o l d α^{old}_1,α^{old}_2 α1old,α2old。本轮迭代完成后的解为 α 1 n e w , α 2 n e w α^{new}_1,α^{new}_2 α1new,α2new): ( K 11 + K 22 − 2 K 12 ) α 2 n e w = ( K 11 + K 22 − 2 K 12 ) α 2 o l d + y 2 ( E 1 − E 2 ) (K_{11}+K_{22}-2K_{12})α_2^{new} =(K_{11}+K_{22}-2K_{12})α_2^{old} + y_2(E_1 - E_2 ) (K11+K22−2K12)α2new=(K11+K22−2K12)α2old+y2(E1−E2) 得到 α 2 n e w α_2^{new} α2new 的表达式: α 2 n e w = α 2 o l d + y 2 ( E 1 − E 2 ) K 11 + K 22 − 2 K 12 α_2^{new} = α_2^{old}+\frac{y_2(E_1 - E_2 )}{K_{11}+K_{22}-2K_{12}} α2new=α2old+K11+K22−2K12y2(E1−E2)
5.2 SMO算法目标函数优化
根据上面的约束条件 α 1 y 1 + α 2 y 2 = m α_1y_1+α_2y_2=m α1y1+α2y2=m , 0 ≤ α i ≤ C 0≤α_i≤C 0≤αi≤C ,又由于 y 1 , y 2 y_1,y_2 y1,y2均只能取值1或者-1, 这样 α 1 , α 2 α_1,α_2 α1,α2在[0,C]和[0,C]形成的盒子里面,并且两者的关系直线的斜率只能为1或者-1,也就是说 α 1 , α 2 α_1,α_2 α1,α2 的关系直线平行于[0,C]和[0,C]形成的盒子的对角线,如下图所示:
由于
α
1
,
α
2
α_1,α_2
α1,α2 的关系被限制在盒子里的一条线段上,所以两变量的优化问题实际上仅仅是一个变量的优化问题。不妨我们假设最终是
α
2
α_2
α2 的优化问题。由于我们
由于
α
2
n
e
w
α^{new}_2
α2new 必须满足上图中的线段约束。假设 L 和 H 分别是上图中
α
2
n
e
w
α^{new}_2
α2new 所在的线段的边界。那么很显然我们有:
L
≤
α
2
n
e
w
≤
H
L≤α^{new}_2≤H
L≤α2new≤H而对于L和H,我们也有限制条件如果是上面左图中的情况,则
L
=
m
a
x
(
0
,
α
2
o
l
d
−
α
1
o
l
d
)
H
=
m
i
n
(
C
,
C
+
α
2
o
l
d
−
α
1
o
l
d
)
L=max(0,α^{old}_2−α^{old}_1) \quad H=min(C,C+α^{old}_2−α^{old}_1)
L=max(0,α2old−α1old)H=min(C,C+α2old−α1old)如果是上面右图中的情况,我们有:
L
=
m
a
x
(
0
,
α
2
o
l
d
+
α
1
o
l
d
−
C
)
H
=
m
i
n
(
C
,
α
2
o
l
d
+
α
1
o
l
d
)
L=max(0,α^{old}_2+α^{old}_1−C)\quad H=min(C,α^{old}_2+α^{old}_1)
L=max(0,α2old+α1old−C)H=min(C,α2old+α1old)以上,可以总结出
α
2
α_2
α2 的取值范围:
{
α
2
=
H
,
α
2
n
e
w
≥
H
α
2
=
L
,
α
2
n
e
w
≤
L
α
2
=
α
2
n
e
w
,
L
≤
α
2
n
e
w
≤
H
\begin{cases} α_2 = H,α^{new}_2 \geq H \\ α_2 = L,α^{new}_2 \leq L \\ α_2 = α^{new}_2,L \le α^{new}_2 \le H \end{cases}
⎩⎪⎨⎪⎧α2=H,α2new≥Hα2=L,α2new≤Lα2=α2new,L≤α2new≤H
5.3 SMO算法误差计算
5.3.1 变量选择
- SMO算法称选择第一个变量为外层循环,这个变量需要选择在训练集中违反KKT条件最严重的样本点。对于每个样本点,要满足的KKT条件我们在上面已经讲到了对于任意训练样本,总有
α
i
=
0
α_i=0
αi=0 或者
y
i
f
(
x
i
)
=
1
−
ε
i
y_if(x_i)=1-\varepsilon_i
yif(xi)=1−εi.
(1) α i = 0 α_i=0 αi=0,则 y i f ( x i ) ≥ 1 − ε i y_if(x_i)\geq1-\varepsilon_i yif(xi)≥1−εi
(2) C > α i > 0 C>α_i>0 C>αi>0 ,则必有 y i f ( x i ) = 1 y_if(x_i)=1 yif(xi)=1
(3) α i = C α_i=C αi=C,则 μ i = 0 μ_i=0 μi=0, y i f ( x i ) < 1 y_if(x_i)<1 yif(xi)<1
一般来说,我们首先选择违反 0 < α i < C 0<α_i<C 0<αi<C 这个条件的点。如果这些支持向量都满足KKT条件,再选择违反 α i = 0 α_i=0 αi=0 和 α i = C α_i=C αi=C 的点。 - SMO算法称选择第二变量为内层循环,假设我们在外层循环已经找到了 α 1 α_1 α1, 第二个变量 α 2 α_2 α2的选择标准是让 ∣ E 1 − E 2 ∣ |E_1−E_2| ∣E1−E2∣有足够大的变化。由于α1定了的时候,E1也确定了,所以要想 ∣ E 1 − E 2 ∣ |E_1−E_2| ∣E1−E2∣最大,只需要在E1为正时,选择最小的Ei作为E2, 在E1为负时,选择最大的Ei作为E2,可以将所有的Ei保存下来加快迭代。如果内存循环找到的点不能让目标函数有足够的下降, 可以采用遍历支持向量点来做α2,直到目标函数有足够的下降, 如果所有的支持向量做α2都不能让目标函数有足够的下降,可以跳出循环,重新选择α1
5.3.2 计算阈值b
通过上面的计算,我们可得SVM的预测公式:
f
(
x
)
=
∑
i
=
1
n
α
i
y
i
k
(
x
i
,
x
)
+
b
f(x) = \sum^n_{i=1}α_iy_ik(x_i,x)+b
f(x)=i=1∑nαiyik(xi,x)+b在每次完成两个变量的优化之后,需要重新计算阈值b。当
0
<
α
1
n
e
w
<
C
0<α^{new}_1<C
0<α1new<C 时,我们有
y
1
−
∑
i
=
1
n
α
i
y
i
K
i
1
−
b
1
=
0
y_1−∑_{i=1}^nα_iy_iK_{i1}−b_1=0
y1−i=1∑nαiyiKi1−b1=0于是新的
b
1
n
e
w
b^{new}_1
b1new 为:
b
1
n
e
w
=
y
1
−
∑
i
=
3
m
α
i
y
i
K
i
1
−
α
1
n
e
w
y
1
K
11
−
α
2
n
e
w
y
2
K
21
b^{new}_1=y_1−∑_{i=3}^mα_iy_iK_{i1}−α^{new}_1y_1K_{11}−α^{new}_2y_2K_{21}
b1new=y1−i=3∑mαiyiKi1−α1newy1K11−α2newy2K21计算出
E
1
E_1
E1 为:
E
1
=
g
(
x
1
)
−
y
1
=
∑
i
=
3
m
α
i
y
i
K
i
1
+
α
1
o
l
d
y
1
K
11
+
α
2
o
l
d
y
2
K
21
+
b
o
l
d
−
y
1
E_1=g(x_1)−y_1=∑_{i=3}^mα_iy_iK_{i1}+α^{old}_1y_1K_{11}+α^{old}_2y_2K_{21}+b^{old}−y_1
E1=g(x1)−y1=i=3∑mαiyiKi1+α1oldy1K11+α2oldy2K21+bold−y1可以看到上两式都有
y
1
−
∑
i
=
3
m
α
i
y
i
K
i
1
y_1−∑_{i=3}^mα_iy_iK_{i1}
y1−∑i=3mαiyiKi1,因此可以将
b
1
n
e
w
b^{new}_1
b1new 用
E
1
E_1
E1表示为:
b
1
n
e
w
=
−
E
1
−
y
1
K
11
(
α
1
n
e
w
−
α
1
o
l
d
)
−
y
2
K
21
(
α
2
n
e
w
−
α
2
o
l
d
)
+
b
o
l
d
b^{new}_1=-E_1-y_1K_{11}(α^{new}_1-α^{old}_1)−y_2K_{21}(α^{new}_2-α^{old}_2) +b^{old}
b1new=−E1−y1K11(α1new−α1old)−y2K21(α2new−α2old)+bold
同样的,如果
0
<
α
2
n
e
w
<
C
0<α^{new}_2<C
0<α2new<C, 那么有:
b
2
n
e
w
=
−
E
2
−
y
1
K
12
(
α
1
n
e
w
−
α
1
o
l
d
)
−
y
2
K
22
(
α
2
n
e
w
−
α
2
o
l
d
)
+
b
o
l
d
b^{new}_2=-E_2-y_1K_{12}(α^{new}_1-α^{old}_1)−y_2K_{22}(α^{new}_2-α^{old}_2) +b^{old}
b2new=−E2−y1K12(α1new−α1old)−y2K22(α2new−α2old)+bold最终的
b
n
e
w
b^{new}
bnew为:
b
n
e
w
=
b
1
n
e
w
+
b
2
n
e
w
2
bnew=\frac{b^{new}_1+b^{new}_2}{2}
bnew=2b1new+b2new得到了
b
n
e
w
b^{new}
bnew 我们需要更新
E
i
E_i
Ei:
E
i
=
∑
S
y
j
α
j
K
(
x
i
,
x
j
)
+
b
n
e
w
−
y
i
E_i=∑_Sy_jα_jK(x_i,x_j)+b^{new}−y_i
Ei=S∑yjαjK(xi,xj)+bnew−yi其中,
S
S
S 是所有支持向量
x
j
x_j
xj 的集合。
5.4 SMO算法总结
输入是m个样本 ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) (x_1,y_1),(x_2,y_2),...,(x_m,y_m) (x1,y1),(x2,y2),...,(xm,ym),其中x为n维特征向量。y为二元输出,值为1,或 -1,精度e。输出是近似解α
- 取初值 α 0 = 0 , k = 0 α_0=0,k=0 α0=0,k=0
- 按照5.3.1的方法选择 α 1 k , α 2 k α^k_1,α^k_2 α1k,α2k,接着按照5.1节的方法求出新的 α 2 n e w α^{new}_2 α2new: α 2 n e w = α 2 o l d + y 2 ( E 1 − E 2 ) K 11 + K 22 − 2 K 12 α_2^{new} = α_2^{old}+\frac{y_2(E_1 - E_2 )}{K_{11}+K_{22}-2K_{12}} α2new=α2old+K11+K22−2K12y2(E1−E2)
- 按照下式求出 α 2 k + 1 α^{k+1}_2 α2k+1: { α 2 k + 1 = H , α 2 n e w ≥ H α 2 k + 1 = L , α 2 n e w ≤ L α 2 k + 1 = α 2 n e w , L ≤ α 2 n e w ≤ H \begin{cases} α^{k+1}_2= H,α^{new}_2 \geq H \\ α^{k+1}_2= L,α^{new}_2 \leq L \\ α^{k+1}_2= α^{new}_2,L \le α^{new}_2 \le H \end{cases} ⎩⎪⎨⎪⎧α2k+1=H,α2new≥Hα2k+1=L,α2new≤Lα2k+1=α2new,L≤α2new≤H
- 利用 α 2 k + 1 α^{k+1}_2 α2k+1 和 α 1 k + 1 α^{k+1}_1 α1k+1 的关系求出 α 1 k + 1 α^{k+1}_1 α1k+1
- 按照5.3.2节的方法计算 b k + 1 b^{k+1} bk+1 和 E i E_i Ei
- 在精度e范围内检查是否满足如下的终止条件: ∑ i = 1 n α i y i = 0 ∑_{i=1}^nα_iy_i=0 i=1∑nαiyi=0 0 ≤ α i ≤ C , i = 1 , 2... n 0≤α_i≤C,i=1,2...n 0≤αi≤C,i=1,2...n α i k + 1 = 0 ⇒ y i f ( x i ) ≥ 1 α^{k+1}_i=0⇒y_if(x_i)≥1 αik+1=0⇒yif(xi)≥1 0 < α i k + 1 < C ⇒ y i f ( x i ) = 1 0<α^{k+1}_i<C⇒y_if(x_i)=1 0<αik+1<C⇒yif(xi)=1 α i k + 1 = C ⇒ y i f ( x i ) ≤ 1 α^{k+1}_i=C⇒y_if(x_i)≤1 αik+1=C⇒yif(xi)≤1
- 如果满足则结束,返回 α k + 1 α^{k+1} αk+1,否则转到步骤2)。
6. SVM与合页损失函数 (hinge loss)
线性支持向量机还有另外一种解释如下:
m
i
n
w
,
b
[
1
−
y
i
(
w
⋅
x
+
b
)
]
+
+
λ
∣
∣
w
∣
∣
2
min_{w,b}[1-y_i(w \cdot x+b)]_++λ||w||^2
minw,b[1−yi(w⋅x+b)]++λ∣∣w∣∣2其中
L
(
y
(
w
⋅
x
+
b
)
)
=
[
1
−
y
i
(
w
⋅
x
+
b
)
]
+
L(y(w \cdot x+b))=[1-y_i(w \cdot x+b)]_+
L(y(w⋅x+b))=[1−yi(w⋅x+b)]+ 称为合页损失函数(hinge loss function),下标+表示为:
[
z
]
+
=
{
z
,
z
>
0
0
,
z
≤
0
[z]_+ = \begin{cases} z, & z>0 \\ 0, & z\leq0 \end{cases}
[z]+={z,0,z>0z≤0也就是说,如果点被正确分类,且函数间隔大于1,损失是0,否则损失是
1
−
y
(
w
⋅
x
+
b
)
1−y(w\cdot x+b)
1−y(w⋅x+b),如下图中的绿线。我们在下图还可以看出其他各种模型损失和函数间隔的关系:对于0-1损失函数,如果正确分类,损失是0,误分类损失1, 如下图黑线,可见0-1损失函数是不可导的。对于感知机模型,感知机的损失函数是
[
−
y
i
(
w
⋅
x
+
b
)
]
+
[−y_i(w \cdot x+b)]_+
[−yi(w⋅x+b)]+,这样当样本被正确分类时,损失是0,误分类时损失是
−
y
i
(
w
⋅
x
+
b
)
−y_i(w\cdot x+b)
−yi(w⋅x+b),如下图紫线。对于逻辑回归之类和最大熵模型对应的对数损失,损失函数是
l
o
g
[
1
+
e
x
p
(
−
y
(
w
⋅
x
+
b
)
)
]
log[1+exp(−y(w\cdot x+b))]
log[1+exp(−y(w⋅x+b))], 如下图红线所示。
7. SVM回归
在前面我们讲到了SVM的线性分类和非线性分类,以及在分类时用到的算法。这些都关注与SVM的分类问题。实际上SVM也可以用于回归模型,本篇就对如何将SVM用于回归模型做一个总结。重点关注SVM分类和SVM回归的相同点与不同点。
7.1 SVM回归模型的损失函数度量
回顾下之前的SVM分类模型中,我们的目标函数是让 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21∣∣w∣∣2 最小,同时让各个训练集中的点尽量远离自己类别一边的的支持向量,但是我们现在是回归模型,优化目标函数可以继续和SVM分类模型保持一致为,但是约束条件不可能是让各个训练集中的点尽量远离自己类别一边的的支持向量,因为我们是回归模型,没有类别。对于回归模型,我们的目标是让训练集中的每个点 ( x i , y i ) (x_i,y_i) (xi,yi),尽量拟合到一个线性模型 y i = w ⋅ ϕ ( x i ) + b y_i =w\cdot ϕ(x_i)+b yi=w⋅ϕ(xi)+b。对于一般的回归模型,我们是用均方差作为损失函数,但是SVM不是这样定义损失函数的。
SVM需要我们定义一个常量 ϵ > 0 ϵ>0 ϵ>0 ,对于某一个点(xi,yi),如果 ∣ y i − w ⋅ ϕ ( x i ) − b ∣ ≤ ϵ |y_i−w\cdot ϕ(x_i)−b|≤ϵ ∣yi−w⋅ϕ(xi)−b∣≤ϵ,则完全没有损失,如果 ∣ y i − w ⋅ ϕ ( x i ) − b ∣ > ϵ |y_i−w\cdot ϕ(x_i)−b|>ϵ ∣yi−w⋅ϕ(xi)−b∣>ϵ,则对应的损失为 ∣ y i − w ⋅ ϕ ( x i ) − b ∣ − ϵ |y_i−w\cdot ϕ(x_i)−b|-ϵ ∣yi−w⋅ϕ(xi)−b∣−ϵ,这和均方差损失函数不同,如果是均方差,那么只要 y i − w ⋅ ϕ ( x i ) − b ≠ 0 y_i−w\cdot ϕ(x_i)−b \neq 0 yi−w⋅ϕ(xi)−b̸=0,那么就会有损失。
如下图所示,在蓝色条带里面的点都是没有损失的,但是外面的点的是有损失的,损失大小为红色线的长度。
SVM回归模型的损失函数度量为:
e
r
r
(
x
i
,
y
i
)
=
{
0
,
∣
y
i
−
w
⋅
ϕ
(
x
i
)
−
b
∣
≤
ϵ
∣
y
i
−
w
⋅
ϕ
(
x
i
)
−
b
∣
−
ϵ
,
∣
y
i
−
w
⋅
ϕ
(
x
i
)
−
b
∣
>
ϵ
err(x_i,y_i) = \begin{cases} 0, & |y_i−w\cdot ϕ(x_i)−b|≤ϵ \\ |y_i−w\cdot ϕ(x_i)−b|-ϵ, & |y_i−w\cdot ϕ(x_i)−b|>ϵ \end{cases}
err(xi,yi)={0,∣yi−w⋅ϕ(xi)−b∣−ϵ,∣yi−w⋅ϕ(xi)−b∣≤ϵ∣yi−w⋅ϕ(xi)−b∣>ϵ
7.2 SVM回归模型的目标函数
7.2.1 目标函数
m
i
n
1
2
∣
∣
w
∣
∣
2
min\frac{1}{2}||w||^2
min21∣∣w∣∣2
s
.
t
∣
y
i
−
w
⋅
ϕ
(
x
i
)
−
b
∣
≤
ϵ
s.t \qquad |y_i−w\cdot ϕ(x_i)−b|≤ϵ
s.t∣yi−w⋅ϕ(xi)−b∣≤ϵ 和SVM分类模型相似,回归模型也可以对每个样本(xi,yi) 加入松弛变量
ξ
i
≥
0
ξ_i \geq 0
ξi≥0 ,但是由于我们这里用的是绝对值,实际上是两个不等式,也就是说两边都需要松弛变量,我们定义为
ξ
i
v
,
ξ
i
m
ξ_i^{v} ,ξ_i^{m}
ξiv,ξim ,SVM回归模型的损失函数度量在加入松弛变量之后变为:
m
i
n
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
n
(
ξ
i
v
+
ξ
i
m
)
min\frac{1}{2}||w||^2+C\sum_i^n(ξ_i^{v}+ξ_i^{m})
min21∣∣w∣∣2+Ci∑n(ξiv+ξim)
s
.
t
−
ϵ
−
ξ
i
v
≤
y
i
−
w
⋅
ϕ
(
x
i
)
−
b
∣
≤
ϵ
+
ξ
i
m
s.t \qquad -ϵ- ξ_i^{v}\leq y_i−w\cdot ϕ(x_i)−b|≤ϵ+ ξ_i^{m}
s.t−ϵ−ξiv≤yi−w⋅ϕ(xi)−b∣≤ϵ+ξim
ξ
i
m
≥
0
,
ξ
i
v
≥
0
ξ_i^{m} \geq 0,ξ_i^{v} \geq 0
ξim≥0,ξiv≥0
用拉格朗日函数将目标优化函数变成无约束的形式,也就是拉格朗日函数的原始形式如下:
L
(
w
,
b
,
α
m
,
α
v
,
ξ
i
m
,
ξ
i
v
,
u
m
,
u
v
)
=
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
n
(
ξ
i
v
+
ξ
i
m
)
+
∑
i
n
α
v
(
−
ϵ
−
ξ
i
v
−
y
i
+
w
⋅
ϕ
(
x
i
)
+
b
)
+
∑
i
n
α
m
(
y
i
−
w
⋅
ϕ
(
x
i
)
−
b
−
ϵ
−
ξ
i
m
)
−
∑
i
n
u
v
ξ
i
v
−
∑
i
n
u
m
ξ
i
m
L(w,b,α^m,α^v,ξ_i^{m} ,ξ_i^{v},u^m,u^v)=\frac12||w||^2+C\sum_i^n(ξ_i^{v}+ξ_i^{m})+\\ \sum_i^nα^v(-ϵ- ξ_i^{v}-y_i+w\cdot ϕ(x_i)+b)+\sum_i^nα^m(y_i−w\cdot ϕ(x_i)−b-ϵ- ξ_i^{m})-\sum_i^nu^vξ_i^{v}-\sum_i^nu^mξ_i^{m}
L(w,b,αm,αv,ξim,ξiv,um,uv)=21∣∣w∣∣2+Ci∑n(ξiv+ξim)+i∑nαv(−ϵ−ξiv−yi+w⋅ϕ(xi)+b)+i∑nαm(yi−w⋅ϕ(xi)−b−ϵ−ξim)−i∑nuvξiv−i∑numξim
7.2.2 目标函数的对偶形式
我们的函数目标是:
m
i
n
{
w
,
b
,
ξ
i
m
,
ξ
i
v
}
m
a
x
{
α
m
,
α
v
,
u
m
,
u
v
}
L
(
w
,
b
,
α
m
,
α
v
,
ξ
i
m
,
ξ
i
v
,
u
m
,
u
v
)
min_{\{w,b,ξ_i^{m} ,ξ_i^{v}\}}max_{\{α^m,α^v,u^m,u^v\}}L(w,b,α^m,α^v,ξ_i^{m} ,ξ_i^{v},u^m,u^v)
min{w,b,ξim,ξiv}max{αm,αv,um,uv}L(w,b,αm,αv,ξim,ξiv,um,uv) 和SVM分类模型一样,这个优化目标也满足KKT条件,也就是说,我们可以通过拉格朗日对偶将我们的优化问题转化为等价的对偶问题来求解如下:
m
a
x
{
α
m
,
α
v
,
u
m
,
u
v
}
m
i
n
{
w
,
b
,
ξ
i
m
,
ξ
i
v
}
L
(
w
,
b
,
α
m
,
α
v
,
ξ
i
m
,
ξ
i
v
,
u
m
,
u
v
)
max_{\{α^m,α^v,u^m,u^v\}}min_{\{w,b,ξ_i^{m} ,ξ_i^{v}\}}L(w,b,α^m,α^v,ξ_i^{m} ,ξ_i^{v},u^m,u^v)
max{αm,αv,um,uv}min{w,b,ξim,ξiv}L(w,b,αm,αv,ξim,ξiv,um,uv)
首先我们来求优化函数对于
w
,
b
,
ξ
i
m
,
ξ
i
v
w,b,ξ_i^{m} ,ξ_i^{v}
w,b,ξim,ξiv 的极小值,这个可以通过求偏导数求得:
w
=
∑
i
n
(
α
m
−
α
v
)
ϕ
(
x
i
)
w=\sum_i^n(α^m-α^v)ϕ(x_i)
w=i∑n(αm−αv)ϕ(xi)
∑
i
n
(
α
m
−
α
v
)
=
0
\sum_i^n(α^m-α^v)=0
i∑n(αm−αv)=0
C
−
α
m
−
u
m
=
0
C-α^m-u^m=0
C−αm−um=0
C
−
α
v
−
u
v
=
0
C-α^v-u^v=0
C−αv−uv=0
我们可以把上面4个式子带入对偶函数中,消去
w
,
b
,
ξ
i
m
,
ξ
i
v
,
u
m
,
u
v
w,b,ξ_i^{m} ,ξ_i^{v},u^m,u^v
w,b,ξim,ξiv,um,uv:
m
a
x
{
α
v
,
u
m
}
−
∑
i
n
[
(
ϵ
−
y
i
)
α
i
m
+
(
ϵ
+
y
i
)
α
i
v
]
−
1
2
∑
i
,
j
n
(
α
i
m
−
α
i
v
)
(
α
j
m
−
α
j
v
)
K
i
j
max_{\{α^v,u^m\}}-\sum_i^n[(ϵ-y_i)α^m_i+(ϵ+y_i)α^v_i]-\frac12\sum_{i,j}^n(α^m_i-α^v_i)(α^m_j-α^v_j)K_{ij}
max{αv,um}−i∑n[(ϵ−yi)αim+(ϵ+yi)αiv]−21i,j∑n(αim−αiv)(αjm−αjv)Kij对目标函数取负号,求最小值可以得到和SVM分类模型类似的求极小值的目标函数如下:
m
i
n
{
α
v
,
u
m
}
1
2
∑
i
,
j
n
(
α
i
m
−
α
i
v
)
(
α
j
m
−
α
j
v
)
K
i
j
+
∑
i
n
[
(
ϵ
−
y
i
)
α
i
m
+
(
ϵ
+
y
i
)
α
i
v
]
min_{\{α^v,u^m\}}\frac12\sum_{i,j}^n(α^m_i-α^v_i)(α^m_j-α^v_j)K_{ij}+\sum_i^n[(ϵ-y_i)α^m_i+(ϵ+y_i)α^v_i]
min{αv,um}21i,j∑n(αim−αiv)(αjm−αjv)Kij+i∑n[(ϵ−yi)αim+(ϵ+yi)αiv]
∑
i
n
(
α
m
−
α
v
)
=
0
\sum_i^n(α^m-α^v)=0
i∑n(αm−αv)=0
0
<
α
i
m
<
C
0<α^m_i<C
0<αim<C
0
<
α
i
v
<
C
0<α^v_i<C
0<αiv<C对于这个目标函数,我们依然可以用之前讲到的SMO算法来求出对应的
α
m
,
α
v
α_m,α_v
αm,αv 进而求出我们的回归模型系数w,b。
7.3 SVM回归模型系数的稀疏性
在回归模型中,我们的对偶互补条件类似如下: α i v ( ϵ + ξ i v + y i − w ⋅ ϕ ( x i ) − b ) = 0 α^v_i(ϵ+ ξ_i^{v}+ y_i-w\cdot ϕ(x_i)-b)=0 αiv(ϵ+ξiv+yi−w⋅ϕ(xi)−b)=0 α i m ( ϵ + ξ i m − y i + w ⋅ ϕ ( x i ) + b ) = 0 α^m_i(ϵ+ ξ_i^{m}- y_i+w\cdot ϕ(x_i)+b)=0 αim(ϵ+ξim−yi+w⋅ϕ(xi)+b)=0根据松弛变量定义条件,如果 ∣ y i − w ⋅ ϕ ( x i ) − b ∣ ≤ ϵ |y_i−w\cdot ϕ(x_i)−b|≤ϵ ∣yi−w⋅ϕ(xi)−b∣≤ϵ,我们有 ξ i v = 0 , ξ i m = 0 ξ_i^{v}=0 ,ξ_i^{m}=0 ξiv=0,ξim=0,此时 ϵ + ξ i v + y i − w ⋅ ϕ ( x i ) − b ≠ 0 , ϵ + ξ i m − y i + w ⋅ ϕ ( x i ) + b ≠ 0 ϵ+ ξ_i^{v}+ y_i-w\cdot ϕ(x_i)-b\neq 0,ϵ+ ξ_i^{m}- y_i+w\cdot ϕ(x_i)+b \neq 0 ϵ+ξiv+yi−w⋅ϕ(xi)−b̸=0,ϵ+ξim−yi+w⋅ϕ(xi)+b̸=0要满足对偶互补条件,只有 α i v = 0 , α i m = 0 α_i^{v}=0 ,α_i^{m}=0 αiv=0,αim=0,在计算 w = ∑ i n ( α m − α v ) ϕ ( x i ) w=\sum_i^n(α^m-α^v)ϕ(x_i) w=∑in(αm−αv)ϕ(xi) 时,发现部分样本点使得 ϕ ( x i ) ϕ(x_i) ϕ(xi) 系数为0,也就是说w不受这些在误差范围内的点的影响。