前言
支持向量机 SVM 是一种可以进行二分类、多分类以及回归分析的强大工具,并且 SVM 可以称得上是表现较出色的监督学习算法,因此,我们一定得好好分析其原理,为啥它能够表现如此出色呢?
可视化的二分类问题
我们来看看下面这张图:
假设红色的圈表示样本正例,绿色的圈表示样本反例。此时我们需要找到一条直线将这两类样本划分开(先忽略新样本点)。从图中可以看出我们可以有很多条直线可以划分样本。但是,究竟要选择哪一条呢,依据的标准是什么?
嗯,可以肯定地说红色的那条线会是最好的那条。我们注意到图中有两条黑色的线恰好分别将样本隔住,而假设这条红色的线就处在两条直线的正中间,那么,你可能会想黑色的线也能隔住,为啥选红色的线?其实选择红色的线有点考虑到要去适应新来的样本分类了。假如来了一个新样本点恰好落在图中所示的位置,那么对于蓝色的线来说,它已经将新样本误分类了,但是对于红色的线来说并没有任何影响。也就说,红色的线它相比于其他任何线对于新样本的分类准确率更高。(专业一点就说泛化能力更强一些,对数据的容忍度较好),因此我们没有任何理由不选红色的这个线来划分数据集。所以呢,我们要对样本进行分类就是要找这样的线,在三维中,要找的是划分的平面,而在大于三维的时候,由于维数太高超出了人的想象空间,此时我们要找的那个面都统称为超平面。但在讨论的时候,无论在低维还是在高维找划分的面,我们都直接称为超平面。
间隔与支持向量
你可能发现了上图中有个挺大(挺胖)的间隔,它由两条黑色的线围成。没错,这个就是我们现在要介绍的间隔。在介绍之前,我们来对此类问题建立数学模型,以数学公式的形式来进行分析。
假设给定训练集 D={(x1,y1),(x2,y2),…,(xm,ym)},样本标签 y i ∈ { + 1 , − 1 } y_{i}\in \left\{ +1,-1\right\} yi∈{+1,−1} (以 +1 表示正例样本,-1 表示反例样本)。在样本空间中,划分超平面由线性方程: w T x + b = 0 w^{T}x+b=0 wTx+b=0 确定,其中 w={w1;w2;…;wd} 为法向量,决定了超平面的方向,b为位移项(也就是超平面的偏移)
对于 SVM 分类问题,我们要寻找的其实就是一个分类函数 f ( x ) f \left(x\right) f(x),它能够根据输入输出分类结果,那么当 f ( x ) = s i g n ( w T x + b ) f\left( x\right) =sign\left(w^{T}x+b\right) f(x)=sign(wTx+b),如果结果大于 0,则被归为 +1 类,如果结果小于 0,则被归为 -1 类(其中 sign() 为符号函数)。然后,我们还需要两个超平面来形成上述这个间隔,其中这两个超平面(由两个方程 w T x + b = 1 w^{T}x+b=1 wTx+b=1 和 w T x + b = − 1 w^{T}x+b=-1 wTx+b=−1 给出) 到划分超平面的距离是相等的,而这个距离仅考虑的是离划分超平面最近的那些点到划分超平面的距离。那么这时候我们引入支持向量的定义:那些点就是支持向量(support vector)。如上图所示,这个距离为 1 ∥ w ∥ \dfrac {1}{\left\| w\right\| } ∥w∥1,怎么计算呢?如果是两条直线:ax+by=c1 与 ax+by=c2,那么其距离就是 ∣ c 1 − c 1 ∣ a 2 + b 2 \dfrac {\left| c_{1}-c_{1}\right| }{\sqrt {a^{2}+b^{2}}} a2+b2∣c1−c1∣,这里是二维的情况。而对于向量 w={w1;w2}来说,假如有 w 1 x 1 + w 2 x 2 = 1 w_{1}x_{1}+w_{2}x_{2}=1 w1x1+w2x2=1 和 w 1 x 1 + w 2 x 2 = 0 w_{1}x_{1}+w_{2}x_{2}=0 w1x1+w2x2=0 两个方程,那么他们之间的距离就是 1 w 1 2 + w 2 2 \dfrac {1}{\sqrt {w^{2}_{1}+w^{2}_{2}}} w12+w221,而分母实际上是向量 w w w 的模长||w||,所以随后的距离就是 1 ∥ w ∥ \dfrac {1}{\left\| w\right\| } ∥w∥1,那么推广到 w={w1;w2;w3,…,wd} 的情况也是成立的。所以可以算出我们要寻找的这个间隔的距离为 2 ∥ w ∥ \dfrac {2}{\left\| w\right\| } ∥w∥2。
那么,我们就得到了间隔的距离函数。为了寻找最大间隔,即这个距离要最长,问题首先转化为最小化 ||w|| 这个问题。另外,这里还有个约束就是:如果要将训练样本划分正确,也就是不落在间隔内,对于正例样本来说,必须满足 w T x i + b ≥ 1 w^{T}x_{i}+b\geq 1 wTxi+b≥1;对于反例样本来说,必须满足 w T x i + b ≤ − 1 w^{T}x_{i}+b\leq -1 wTxi+b≤−1 ,总之就是我们既要间隔最大,又要让样本能够分类正确,所以必须得有这样的约束。
那么,由于
y
i
∈
{
+
1
,
−
1
}
y_{i}\in \left\{ +1,-1\right\}
yi∈{+1,−1},我们可以将上述约束合并在一起:
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
…
,
m
y_{i}\left( w^{T}x_{i}+b\right) \geq 1,i=1,2,\ldots ,m
yi(wTxi+b)≥1,i=1,2,…,m
所以 SVM 分类最终的问题就是优化下述问题:
min
w
,
b
1
2
∥
w
∥
2
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
…
,
m
\min {w,b}\dfrac {1}{2}\left\| w\right\| ^{2}\quad s.t. y_{i}\left( w^{T}x_{i}+b\right) \geq 1,i=1,2,\ldots ,m
minw,b21∥w∥2s.t.yi(wTxi+b)≥1,i=1,2,…,m
那么这个公式就是支持向量机的基本型了。
上述问题其实是一个凸二次规划问题,属于凸优化的一个特例。那什么是凸优化?它必要条件是什么?凸优化解决的是凸集中凸函数的最优化问题,且凸优化中局部最优值必定是全局最优值。而它的必要条件要求目标函数是凸函数,并且变量的约束函数是凸函数(不等式约束时),或者是仿射函数(等式约束时)。而对于凸二次规划问题,目标函数为二次函数,目前可以通过 QP(Quadratic Programming) 工具来进行求解。但是由于其求解效率的低效,因此我们寻求利用对偶问题来进行转化求解。即将原问题通过拉格朗日乘子法转化为对偶问题(此时为线性分类下的SVM分类问题的对偶问题),再利用对偶问题来求解原问题的最优解。毋庸置疑,后者一般会比直接使用 QP 工具来得高效。那么使用的对偶问题能带来哪些好处?其一,是对偶问题往往更容易求解;其二是可以方便地引入核函数,进而推广到非线性的 SVM 分类问题。
那什么是对偶问题?
注:为了更好优化||w||,我们对式子进行变形以方便计算,但不会影响最后的优化结果。
对偶问题
首先我们将上述支持向量机的基本型中的每个约束条件加上拉格朗日乘子
α
i
\alpha _{i}
αi,且
α
i
≥
0
\alpha _{i}\geq 0
αi≥0 ,那么我们得到的拉格朗日函数可写为:
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
+
∑
i
=
1
m
α
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
L\left(w,b, \alpha \right) =\dfrac {1}{2}\left\| w\right\| ^{2}+\sum ^{m}_{i=1}\alpha _{i}\left( 1-y_{i}\left( w^{T}x_{i}+b\right) \right)
L(w,b,α)=21∥w∥2+i=1∑mαi(1−yi(wTxi+b))其中
α
=
(
α
1
;
α
2
;
…
;
α
m
)
\alpha =\left( \alpha _{1};\alpha _{2};\ldots ;\alpha _{m}\right)
α=(α1;α2;…;αm)。此时令目标函数
L
L
L 对
w
w
w 和
b
b
b 的偏导均为零可得:
w
=
∑
i
=
1
m
α
i
y
i
x
i
,
w=\sum ^{m}_{i=1}\alpha _{i}y_{i}x_{i}\quad,
w=∑i=1mαiyixi,
0
=
∑
i
=
1
m
α
i
y
i
\quad0=\sum ^{m}_{i=1}\alpha _{i}y_{i}
0=∑i=1mαiyi
接下来带入
0
=
∑
i
=
1
m
α
i
y
i
0=\sum ^{m}_{i=1}\alpha _{i}y_{i}
0=∑i=1mαiyi,消去
b
b
b 后得:
L
(
w
,
α
)
=
1
2
∥
w
∥
2
+
∑
i
=
1
m
α
i
(
1
−
y
i
w
T
x
i
)
L\left(w,\alpha \right) =\dfrac {1}{2}\left\| w\right\| ^{2}+\sum ^{m}_{i=1}\alpha _{i}\left( 1-y_{i}w^{T}x_{i}\right)
L(w,α)=21∥w∥2+i=1∑mαi(1−yiwTxi)
再带入
w
=
∑
i
=
1
m
α
i
y
i
x
i
w=\sum ^{m}_{i=1}\alpha _{i}y_{i}x_{i}
w=∑i=1mαiyixi,消去 w,即:
L
(
α
)
=
1
2
∥
w
∥
2
+
∑
i
=
1
m
α
i
−
∑
i
=
1
m
w
T
α
i
y
i
x
i
=
1
2
w
T
w
+
∑
i
=
1
m
α
i
−
w
T
w
=
∑
i
=
1
m
α
i
−
1
2
w
T
w
\begin{aligned}L\left( \alpha \right) =\dfrac {1}{2}\left\| w\right\| ^{2}+\sum ^{m}_{i=1}\alpha _{i}-\sum ^{m}_{i=1}w^{T}\alpha _{i}y_{i}x_{i}\\ =\dfrac {1}{2}w^{T}w+\sum ^{m}_{i=1}\alpha _{i}-w^{T}w\\ =\sum ^{m}_{i=1}\alpha _{i}-\dfrac {1}{2}w^{T}w\end{aligned}
L(α)=21∥w∥2+i=1∑mαi−i=1∑mwTαiyixi=21wTw+i=1∑mαi−wTw=i=1∑mαi−21wTw
再来,先取一个固定的
α
′
α
i
′
≥
0
\alpha '\quad \alpha '_{i}\geq 0
α′αi′≥0,由于
max
L
(
w
,
b
,
α
)
≥
L
(
w
,
b
,
α
′
)
\max L\left(w,b, \alpha \right) \geq L\left(w,b, \alpha '\right)
maxL(w,b,α)≥L(w,b,α′),即函数
L
L
L 的最大值一定会大于等于其任意函数值,那么如果先对
w
w
w 和
b
b
b 最小化时,即等式两边分别加上
min
w
,
b
\min _{w,b}
minw,b,则有:
min
w
,
b
(
max
α
L
(
w
,
b
,
α
)
)
≥
min
w
,
b
L
(
w
,
b
,
α
′
)
α
i
≥
0
\min _{w,b}\left( \max_{\alpha} L\left( w,b,\alpha \right) \right) \geq \min _{w,b}L\left( w,b,\alpha '\right) \quad \alpha _{i}\geq 0
w,bmin(αmaxL(w,b,α))≥w,bminL(w,b,α′)αi≥0
接着对于上述不等式,我们只需要比右边的最大值大就行,因此得到:
min
w
,
b
(
max
α
L
(
w
,
b
,
α
)
)
≥
max
α
′
(
min
w
,
b
L
(
w
,
b
,
α
′
)
)
α
i
≥
0
\min _{w,b}\left( \max_{\alpha} L\left( w,b,\alpha \right) \right) \geq \max_{\alpha '}\left(\min _{w,b}L\left( w,b,\alpha '\right)\right) \quad \alpha _{i}\geq 0
w,bmin(αmaxL(w,b,α))≥α′max(w,bminL(w,b,α′))αi≥0
这个式子的左侧和右侧刚好是最大化和最小化互换,我们把右边这个式子称为左边问题的对偶问题。那么只要我们只要把对偶问题解决了,也就得到了左侧式子即原问题的下限。
当我们通过对
w
w
w 和
b
b
b 求导并消去
L
L
L 中的
w
w
w 和
b
b
b 时,可以进一步简化上式,得到:
min
w
,
b
(
max
α
L
(
w
,
b
,
α
)
)
≥
max
α
′
L
(
α
′
)
\min _{w,b}\left( \max_{\alpha} L\left( w,b,\alpha \right) \right) \geq \max_{\alpha '}L\left( \alpha '\right)
w,bmin(αmaxL(w,b,α))≥α′maxL(α′)
那么我们便可以很轻松地推出,此时我们只需求出上述不等式右边的这个最大化问题就可以了。其中这个最大化问题就是原问题(primal problem)的对偶问题(dual problem)
最终带入
w
w
w 等式后我们得到对偶问题的公式为:
max
α
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
α
i
≥
0
\max _{\alpha }\sum ^{m}_{i=1}\alpha _{i}-\dfrac {1}{2}\sum ^{m}_{i=1}\sum ^{m}_{j=1}\alpha _{i}\alpha _{j}y_{i}y_{j}x_{i}^{T}x_{j}\quad \alpha _{i}\geq 0
αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxjαi≥0
解出
α
\alpha
α 后,求出
w
w
w 和
b
b
b 即可得到模型
f
(
x
)
=
w
T
x
+
b
=
∑
i
=
1
m
α
i
y
i
x
i
T
x
+
b
f\left( x\right) =w^{T}x+b=\sum ^{m}_{i=1}\alpha _{i}y_{i}x_{i}^{T}x+b
f(x)=wTx+b=i=1∑mαiyixiTx+b
事实上,上述模型我们是建立在训练样本都能够正确分类,且是线性可分的前提之上。那么,如果训练样本中有部分样本不能够正确分类时,又应该怎么做?那么我们便引入了松弛向量和软间隔。
注:上述公式中的 w,x, α \alpha α, α ′ \alpha ' α′ 均为向量。
松弛向量与软间隔最大化
如果我们遇到下图中的情况,存在离群点。其中蓝色的线是为了能够将训练样本正确分类而不得不变成非线性的曲线,而红色的线是我们上述情况中的线性可分的情况,那这两种分法哪个更好呢?我们训练模型的最终目标都是为了能够进行预测,也就要求了其泛化能力要好,如果选择了蓝色的线,那么对于训练样本来说确实划分得很正确,通俗地说就是模型学得太好了,但是对于预测样本来说,它们被误分类的概率将比使用红色的线进行划分来得更高。这是因为模型学得太好了,以至于适应不了某些特殊的预测样本(例如,离群点)。通常这种情况就称为过拟合。那么解决它的方法其实也很简单,我们需要允许某些离群点可以稍微偏移超平面,即允许这些离群点在间隔之内被误分类,那么它们到分类面的距离就可以小于1。为此,我们对每个训练样本
(
x
i
,
y
i
)
\left( x_{i},y_{i}\right)
(xi,yi) 引入了一个松弛变量
ξ
i
≥
0
\xi_{i}\geq 0
ξi≥0 ,用以表示该样本偏离本该正确分类的间隔超平面。
那么原线性可分情况下的 SVM 基本型就改为:
min
w
,
b
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
\min _{w,b}\dfrac {1}{2}\left\| w\right\| ^{2}+C\sum ^{m}_{i=1}\xi _{i}\quad s.t.\quad y_{i}\left( w^{T}x_{i}+b\right) \geq 1-\xi _{i}\quad \xi _{i}\geq 0,i=1,2,\ldots ,m
w,bmin21∥w∥2+Ci=1∑mξis.t.yi(wTxi+b)≥1−ξiξi≥0,i=1,2,…,m
首先,这个最小化目标函数使得 1 2 ∥ w ∥ 2 \dfrac {1}{2}\left\| w\right\| ^{2} 21∥w∥2 最小化即将间隔最大化,同时使得 ∑ i = 1 m ξ i \sum ^{m}_{i=1}\xi _{i} ∑i=1mξi 控制误分类的样本点尽量少,而参数 C(C>0) 用来平衡这二者的关系,使整体达到一个最好的结果,一般称之为惩罚参数,就好像模型犯错后就要给它一个 C 来惩罚似的。而当 C 越大的时候,表明离群点对目标函数的影响越大,也就是越不希望看到离群点。那么,为了分类它,间隔也会很小,但大部分样本点仍然遵守限制条件。另外,约束条件中的 1 − ξ i 1-\xi_{i} 1−ξi 时,其实放松了约束。因为当 ξ i < 1 \xi _{i}<1 ξi<1,样本点也可以落在间隔之内了。
这就是软间隔支持向量机的基本型了,而前述的支持向量机亦称之为硬间隔支持向量机。
这时候,经过同样的推导,对偶问题最终变为:
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
\max _{\alpha }\sum ^{m}_{i=1}\alpha _{i}-\dfrac {1}{2}\sum ^{m}_{i=1}\sum ^{m}_{j=1}\alpha _{i}\alpha _{j}y_{i}y_{j}x_{i}^{T}x_{j}\quad s.t.\quad \sum ^{m}_{i=1}\alpha _{i}y_{i}=0,0\leq \alpha _{i}\leq C,i=1,2,\ldots ,m
αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxjs.t.i=1∑mαiyi=0,0≤αi≤C,i=1,2,…,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
α
i
≥
0
,
μ
i
≥
0
L\left(w,b, \alpha,\xi,\mu \right) =\dfrac {1}{2}\left\| w\right\| ^{2}+C\sum ^{m}_{i=1}\xi _{i}+\sum ^{m}_{i=1}\alpha _{i}\left( 1-\xi_{i}-y_{i}\left( w^{T}x_{i}+b\right) \right)-\sum ^{m}_{i=1}\mu_{i}\xi_{i} \quad \alpha_{i}\geq 0,\mu_{i}\geq 0
L(w,b,α,ξ,μ)=21∥w∥2+Ci=1∑mξi+i=1∑mαi(1−ξi−yi(wTxi+b))−i=1∑mμiξiαi≥0,μi≥0
注意到,硬间隔与软间隔的对偶问题差异就在于,前者是
0
≤
α
i
0\leq \alpha_{i}
0≤αi,后者是
0
≤
α
i
≤
C
0\leq \alpha _{i}\leq C
0≤αi≤C,且需要满足
C
=
α
i
+
μ
i
C=\alpha_{i}+\mu_{i}
C=αi+μi 。另外需要注意的是,b 的求值公式也发生改变了。我们在之后的 SMO 算法详解中会进一步推导。
下一篇我们将深入了解核函数、对偶问题的求解及其原理。
SVM系列之核函数与KKT条件(二)
参考
[1] <<机器学习>> by 周志华
[2] <<统计学习方法>> by 李航
[3] 机器学习算法与Python实践之(三)支持向量机(SVM)初级