文章目录
前言
终于到支持向量机这一分类算法了,支持向量机是所有入门机器学习小伙伴必须掌握的算法之一,我希望这篇文章能涵盖支持向量机SVM的绝大部分,如果有遗漏或者没有学习到的地方,后续我会加以补充。本文也是沿着《统计学习方法》这本书的主线来进行介绍,详细的部分都会加以解释。
一、支持向量机介绍
第一点我们需要明白,SVM最初只是为了解决二分类问题而提出,后续才有用SVM来解决回归问题和多分类问题。
在前面学习感知机的时候,我们了解到,感知机的原理即在线性可分的情况下,找到一个能对将两类数据进行分类的超平面,且这个超平面是无数个的,例如下面这张图:
上图是感知机模型对二分类问题的结果图,可以发现,在感知机模型中可以找到无数个超平面对已知数据进行分类。而在SVM中不同,SVM只能找到一个超平面对已知数据进行分类,且这个超平面一定是最优的。如果只从视觉上观察,也许我们能猜到上图中蓝色的直线可能是最优的,但如果让我们给出数学的证明,这就需要用到SVM了。
支持向量机也分多种类型,具体可以分为下面三类:
- 线性可分支持向量机:当数据集是线性可分时,SVM就能找到一个完美的超平面把数据集进行二分,且无误分类样本点。
- 线性不可分支持向量机:当数据集不是线性可分时,SVM也能找到一个超平面对数据集进行二分,只不过此时存在误分类点。
- 非线性支持向量机:如果数据集完全不能使用线性模型来解决,此时就需要借助核函数来对数据进行分类。
下面将分别对上述的三种支持向量机做介绍。
二、线性可分SVM
2.1.SVM数学模型的推导
线性可分SVM也是最简单的支持向量机模型,假设在一个特征空间上的数据集为:
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
N
,
y
N
)
T = {(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)}
T=(x1,y1),(x2,y2),⋯,(xN,yN)
其中
x
i
∈
χ
=
R
n
,
y
i
∈
Y
=
+
1
,
−
1
,
i
=
1
,
2
,
⋯
,
N
。
x
i
x_i\in\chi=R^n,y_i\in Y={+1,-1},i=1,2,\cdots,N。x_i
xi∈χ=Rn,yi∈Y=+1,−1,i=1,2,⋯,N。xi为第
i
i
i个特征向量,也称为实例,
y
i
y_i
yi为
x
i
x_i
xi的类标记。当
y
i
=
+
1
y_i=+1
yi=+1时,称
x
i
x_i
xi为正例,当
y
i
=
−
1
y_i=-1
yi=−1时,称
x
i
x_i
xi为负例,
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)称为样本点。那么线性可分SVM是如何在样本点上找到最优超平面呢?
首先,我们设超平面为
w
x
+
b
=
0
wx+b=0
wx+b=0,即我们需要找到最优的参数
w
w
w和
b
b
b,使得这个超平面是最优的。在寻找最优超平面之前我们先了解一下什么是间隔。
如下图:
这条蓝色直线就是我们需要找到的最优超平面,紫色线表示距离超平面最近的点到超平面的距离,一般来说,距离超平面越远,就说明该样本点的确信度就越大。一个样本点到超平面的距离我们可以
∣
w
x
+
b
∣
\left|{wx+b}\right|
∣wx+b∣来相对的表示距离的远近,而
w
x
i
+
b
wx_i+b
wxi+b的值是可以取正取负的,当
x
i
x_i
xi样本为正例且分类正确时,
w
x
i
+
b
wx_i+b
wxi+b就可以表示距离,所以我们可以推出下面的函数间隔表达式:
γ
^
i
=
y
i
(
w
⋅
x
i
+
b
)
{\hat \gamma _i}=y_i(w\cdot x_i+b)
γ^i=yi(w⋅xi+b)
上述的函数间隔是针对单一样本的,我们需要找打整体数据集的函数间隔:
γ
^
=
min
i
=
1
,
2
,
⋯
,
N
γ
^
i
\hat\gamma=\min\limits_{i=1,2,\cdots,N}{\hat\gamma}_i
γ^=i=1,2,⋯,Nminγ^i
上述式子的含义就是找到所有函数间隔中最小的间隔,使得这个间隔最大化就是支持向量机的原理。我们需要找的不仅仅是函数间隔,因为如果我们把
w
w
w的值变成
2
w
2w
2w,那么这个超平面并没有改变,但是函数间隔却变成了原来的2倍,这说明我们需要对
w
w
w的值进行一个约束,使得函数间隔是确定的,于是引出了几何间隔:
γ
i
=
w
∥
w
∥
⋅
x
i
+
b
∥
w
∥
\gamma_i=\frac{w}{\left\|{w}\right\|}\cdot x_i+\frac{b}{\left\|{w}\right\|}
γi=∥w∥w⋅xi+∥w∥b
其中
∥
w
∥
\left\|{w}\right\|
∥w∥表示
w
w
w的二范数,同样的,需要考虑样本点的正负问题,得到如下的几何间隔定义式;
γ
i
=
y
i
(
w
∥
w
∥
⋅
x
i
+
b
∥
w
∥
)
\gamma_i=y_i(\frac{w}{\left\|{w}\right\|}\cdot x_i+\frac{b}{\left\|{w}\right\|})
γi=yi(∥w∥w⋅xi+∥w∥b)
对于整体样本集的最小间隔有:
γ
=
min
i
=
1
,
2
,
⋯
,
N
γ
i
\gamma = \min\limits_{i=1,2,\cdots,N}{\gamma}_i
γ=i=1,2,⋯,Nminγi
超平面
(
w
,
b
)
(w,b)
(w,b)关于样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的几何间隔一般就是指实例点到超平面的距离。
对于支持向量机问题,我们希望找到一个最优的几何超平面,即最大间隔超平面,于是我们可以把这个问题转换为如下的约束最优化问题:
max
w
,
b
γ
s
.
t
.
y
i
(
w
∥
w
∥
⋅
x
i
+
b
∥
w
∥
)
≥
γ
\max\limits_{w,b}{\gamma}\\ s.t.\,\,\,\,y_i(\frac{w}{\left\|{w}\right\|}\cdot x_i+\frac{b}{\left\|{w}\right\|})\ge\gamma
w,bmaxγs.t.yi(∥w∥w⋅xi+∥w∥b)≥γ
对于上述优化模型的理解是,我们希望最大化超平面关于训练集的几何间隔,约束条件就是所有的样本点的几何间隔都需要大于或等于最小的几何间隔,其实可以理解为使得一个数据集的下界最大化。
我们可以把几何间隔和函数间隔的关系找到:
γ
=
γ
^
∥
w
∥
\gamma=\frac{\hat\gamma}{\left\|{w}\right\|}
γ=∥w∥γ^
带入优化模型中得到:
max
w
,
b
γ
^
∥
w
∥
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
≥
γ
^
\max\limits_{w,b}{\frac{\hat\gamma}{\left\|{w}\right\|}}\\ s.t.\,\,\,\,\,y_i(w\cdot x_i+b)\ge\hat\gamma
w,bmax∥w∥γ^s.t.yi(w⋅xi+b)≥γ^
在统计学习方法这本书中介绍函数间隔对最优化问题是没有影响的,因为当
w
w
w和
b
b
b同时扩大2倍,函数间隔也就扩大2倍,这样在约束条件中两边的2就可以约去,不会影响约束条件的。
于是我们可以令
γ
^
=
1
\hat\gamma=1
γ^=1以及最大化
1
∥
w
∥
\frac{1}{\left\|{w}\right\|}
∥w∥1可以改写为最小化
1
2
∥
w
∥
2
\frac{1}{2}\left\|{w}\right\|^2
21∥w∥2。于是优化问题变成了如下的二次规划问题。
线性可分支持向量机原始问题:
min w , b 1 2 ∥ w ∥ 2 s . t . y i ( w ⋅ x i + b ) − 1 ≥ 0 , i = 1 , 2 , ⋯ , N \min\limits_{w,b}{\frac{1}{2}\left\|{w}\right\|^2}\\ s.t.\,\,\,\,\,y_i(w\cdot x_i+b)-1\ge0,\,\,\,\,\,i=1,2,\cdots,N w,bmin21∥w∥2s.t.yi(w⋅xi+b)−1≥0,i=1,2,⋯,N
经过上述一系列的转换,最终支持向量机的最大化最小间隔变转换成上述的二次规划问题。现在我们只需要求解上述的二次规划,找到最合适的参数 w w w和$b
2.2.拉格朗日数乘法与对偶问题转换
在学习支持向量机之前就听说支持向量机是一个数学模型非常优美的分类算法,当我们在面对的SVM原始形式时,求解的难度将会很大,虽然是一个
如果我们对SVM的原始形式进行求解,虽然原始问题是一个典型的二次规划问题,但是却存在很多个约束条件,
y
i
(
w
⋅
x
i
+
b
)
−
1
≥
0
y_i(w\cdot x_i+b)-1\ge0
yi(w⋅xi+b)−1≥0并不是一个约束条件,而是N个约束条件,每个约束对应于一个样本点。
我们一般的做法就是将不等式约束消除,这就需要用到拉格朗日数乘法和对偶方法了。
在构造拉格朗日函数前需要对约束条件进行一个变化,一般的二次规划的不等式的形式是
g
(
x
)
≤
0
g(x)\le0
g(x)≤0,所以
y
i
(
w
⋅
x
i
+
b
)
−
1
≥
0
y_i(w\cdot x_i+b)-1\ge0
yi(w⋅xi+b)−1≥0需要变化为
−
y
i
(
w
⋅
x
i
+
b
)
+
1
≤
0
-y_i(w\cdot x_i+b)+1\le0
−yi(w⋅xi+b)+1≤0的形,然后需要构建拉格朗日函数,为此,对每一个不等式约束引进一个拉格朗日乘子
α
i
\alpha_i
αi,故总共需要引进
N
N
N个乘子
α
i
α
i
≥
0
,
i
=
1
,
2
,
⋯
,
N
\alpha_i\,\,\,\alpha_i\ge0,i=1,2,\cdots,N
αiαi≥0,i=1,2,⋯,N,定义拉格朗日函数为:
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
N
α
i
y
i
(
w
⋅
x
i
+
b
)
+
∑
i
=
1
N
α
i
L(w,b,\alpha)=\frac{1}{2}\left\|{w}\right\|^2-\sum\limits_{i=1}^N{\alpha_iy_i(w\cdot x_i+b)+\sum\limits_{i=1}^N{\alpha_i}}
L(w,b,α)=21∥w∥2−i=1∑Nαiyi(w⋅xi+b)+i=1∑Nαi
根据拉格朗日对偶性我们知道,原始问题的对偶问题是极大极小问题:
max
α
min
w
,
b
L
(
w
,
b
,
α
)
\max\limits_{\alpha}\min\limits_{w,b}{L(w,b,\alpha})
αmaxw,bminL(w,b,α)
所以,为了得到对偶问题的解,需要先求
L
(
w
,
b
,
α
)
L(w,b,\alpha)
L(w,b,α)对
w
,
b
w,b
w,b的极小,再求对
α
\alpha
α的极大。
在原始问题上,我们需要求解
1
2
∥
w
∥
2
\frac{1}{2}\left\|{w}\right\|^2
21∥w∥2对
w
,
b
w,b
w,b的极小,但是需要考虑很多个约束条件,在对偶问题上,不需要考虑关于
w
,
b
w,b
w,b的约束条件,于是我们可以之间使用求偏导令其等于0的方法来求解极小值。
于是将拉格朗日函数
L
(
w
,
b
,
α
)
L(w,b,\alpha)
L(w,b,α)分别对
w
,
b
w,b
w,b求偏导数并令其等于0.
∇
w
L
(
w
,
b
,
α
)
=
w
−
∑
i
=
1
N
α
i
y
i
x
i
=
0
\nabla_{w}L(w,b,\alpha)=w-\sum\limits_{i=1}^N{\alpha_iy_ix_i=0}
∇wL(w,b,α)=w−i=1∑Nαiyixi=0
∇
b
L
(
w
,
b
,
α
)
=
−
∑
i
=
1
N
α
i
y
i
=
0
\nabla_bL(w,b,\alpha)=-\sum\limits_{i=1}^N{\alpha_iy_i=0}
∇bL(w,b,α)=−i=1∑Nαiyi=0
于是得到:
w
=
∑
i
=
1
N
α
i
y
i
x
i
w=\sum\limits_{i=1}^N{\alpha_iy_ix_i}
w=i=1∑Nαiyixi
∑
i
=
1
N
α
i
y
i
=
0
\sum\limits_{i=1}^N{\alpha_iy_i}=0
i=1∑Nαiyi=0
这两个式子是通过求解
L
L
L的偏导数等于0得到的,它是当
L
L
L求极小时满足的条件,于是我们将上述两个式子带入拉格朗日函数中得到:
L
(
w
,
b
,
α
)
=
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
=
1
N
α
i
y
i
(
∑
j
=
1
N
α
i
y
i
x
i
⋅
x
i
+
b
)
+
∑
i
=
1
N
α
i
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
N
α
i
\begin{aligned} L(w,b,\alpha)&=\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}-\sum\limits_{i=1}^N{\alpha_iy_i(\sum\limits_{j=1}^N{\alpha_iy_ix_i\cdot x_i+b})}+\sum\limits_{i=1}^N{\alpha_i}\\ &=-\frac{1}{2}\sum\limits_{i=1}^N{\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}}+\sum\limits_{i=1}^N{\alpha_i} \end{aligned}
L(w,b,α)=21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαiyi(j=1∑Nαiyixi⋅xi+b)+i=1∑Nαi=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
即:
min
w
,
b
L
(
w
,
b
,
α
)
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
N
α
i
\min\limits_{w,b}L(w,b,\alpha)=-\frac{1}{2}\sum\limits_{i=1}^N{\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}}+\sum\limits_{i=1}^N{\alpha_i}
w,bminL(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
这样我们就找到了第一步的极小值,下面我们需要求解
min
w
,
b
L
(
w
,
b
,
α
)
\min\limits_{w,b}{L(w,b,\alpha)}
w,bminL(w,b,α)对
α
\alpha
α的极大,即对偶问题
max
α
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
N
α
i
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
α
i
≥
0
i
=
1
,
2
,
⋯
,
N
\max\limits_{\alpha}\,\,\,\,\,-\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}+\sum\limits_{i=1}^N{\alpha_i}\\ s.t.\,\,\,\,\sum\limits_{i=1}^N{\alpha_iy_i=0}\\ \alpha_i\ge0\,\,\,\,i=1,2,\cdots,N
αmax−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαis.t.i=1∑Nαiyi=0αi≥0i=1,2,⋯,N
一般来说在最优化问题中都是找函数的最小值,于是可以把求解最大值转换为求解最小值,即:
线性可分支持向量机对偶问题:
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 α i ≥ 0 i = 1 , 2 , ⋯ , N \min\limits_{\alpha}\,\,\,\,\,\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}-\sum\limits_{i=1}^N{\alpha_i}\\ s.t.\,\,\,\,\sum\limits_{i=1}^N{\alpha_iy_i=0}\\ \alpha_i\ge0\,\,\,\,i=1,2,\cdots,N αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=0αi≥0i=1,2,⋯,N
求解上述的最优化问题可以得到解
α
i
\alpha_i
αi,于是我们可以设
α
∗
=
(
α
1
∗
,
α
2
∗
,
⋯
,
α
N
∗
)
\alpha^{*}=(\alpha^{*}_{1},\alpha^{*}_{2},\cdots,\alpha^{*}_{N})
α∗=(α1∗,α2∗,⋯,αN∗)是对偶问题的最优解,则一定存在下标
j
j
j使得
α
j
∗
>
0
\alpha^{*}_j>0
αj∗>0,该
j
j
j对应的就是支持向量,我们需要借助支持向量来求解原参数
w
,
b
w,b
w,b,还记得在前面的求偏导时得出的等式:
w
=
∑
i
=
1
N
α
i
y
i
x
i
w=\sum\limits_{i=1}^N{\alpha_iy_ix_i}
w=i=1∑Nαiyixi
于是我们可以利用
α
∗
\alpha^{*}
α∗来求解
w
w
w,对于
b
b
b的求解,有下面的式子:
b
∗
=
y
j
−
∑
i
=
1
N
α
i
∗
y
i
(
x
i
⋅
x
j
)
b^{*}=y_j-\sum\limits_{i=1}^N{\alpha^{*}_iy_i(x_i\cdot x_j)}
b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
注意这里求解
b
∗
b^{*}
b∗只需要一个
α
∗
\alpha^{*}
α∗大于0即可。
最终我们把原始问题转换为求解对偶问题,在对偶问题中,代求的参数只有
α
\alpha
α一种参数,虽然这时的参数有
N
N
N个,但是相比于原形式来说,参数的个数以及求解的形式复杂度都会降低很多,面对上述的标准二次型,我们可以借助Matlab中自带的二次规划函数进行求解,也可以利用SMO序列最小算法进行求解。(这个算法后续再介绍)
到这里,线性可分SVM的数学模型已经介绍的差不多了,但是其中还有很多数学思想没有详细介绍,例如KKT条件的介绍,拉格朗日函数以及对偶性的证明。
2.3.线性可分SVM学习算法
推导完线性可分SVM函数之后,我们变可以得到线性可分SVM学习算法。
输入:线性可分训练集
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
N
,
y
N
)
T={(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)}
T=(x1,y1),(x2,y2),⋯,(xN,yN),其中
x
i
∈
χ
=
R
n
,
y
i
∈
Y
=
−
1
,
+
1
,
i
=
1
,
2
,
⋯
,
N
x_i\in\chi=R^n,y_i\in Y={-1,+1},i=1,2,\cdots,N
xi∈χ=Rn,yi∈Y=−1,+1,i=1,2,⋯,N
输出:分离超平面和分类决策函数
步骤如下:
- 由数据集构造最优化问题
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 α i ≥ 0 i = 1 , 2 , ⋯ , N \min\limits_{\alpha}\,\,\,\,\,\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}-\sum\limits_{i=1}^N{\alpha_i}\\ s.t.\,\,\,\,\sum\limits_{i=1}^N{\alpha_iy_i=0}\\ \alpha_i\ge0\,\,\,\,i=1,2,\cdots,N αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=0αi≥0i=1,2,⋯,N
求得最优解为 α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯ , α N ∗ ) \alpha^{*}=(\alpha^{*}_{1},\alpha^{*}_{2},\cdots,\alpha^{*}_{N}) α∗=(α1∗,α2∗,⋯,αN∗)。 - 计算
w = ∑ i = 1 N α i y i x i w=\sum\limits_{i=1}^N{\alpha_iy_ix_i} w=i=1∑Nαiyixi
并选择 α ∗ \alpha^{*} α∗的一个正分量 α j ∗ > 0 \alpha^{*}_j>0 αj∗>0,计算
b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^{*}=y_j-\sum\limits_{i=1}^N{\alpha^{*}_iy_i(x_i\cdot x_j)} b∗=yj−i=1∑Nαi∗yi(xi⋅xj) - 求得分离超平面
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∗)
在线性可分支持向量机中,
w
w
w和
b
b
b只依赖于训练样本中
α
i
∗
>
0
\alpha^{*}_i>0
αi∗>0的点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),而其他的样本点对
w
w
w和
b
b
b的值没有影响,我们也把
α
i
∗
>
0
\alpha^{*}_i>0
αi∗>0对应的点称为支持向量。
关于线性可分支持向量机的代码实现,参考这个文章:
Matlab实现线性支持向量机
三、线性不可分SVM
3.1.线性不可分与软间隔
当线性可分SVM变成了线性不可分SVM时,即我们无法找到一条直线,使得该直线能够完美的将所有样本点都正确分类。如果我们将哪些无法正确分类的点称为特异点,那么如果把这些特异点除去后,剩下的样本点就是线性可分的了。这只是直观的理解线性不可分,如果从数学的角度理解,那么线性不可分的本质就是存在某些样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)不能满足函数间隔大于等于1的约束条件,即
y
i
(
w
⋅
x
i
+
b
)
≤
1
y_i(w\cdot x_i+b)\le1
yi(w⋅xi+b)≤1,为此我们可以试着引入一个新的变量
ξ
i
{\xi _i}
ξi,使得函数间隔加上松弛变量大于等于1,即:
y
i
(
w
⋅
x
i
+
b
)
≥
1
−
ξ
i
y_i(w\cdot x_i+b)\ge1-\xi_i
yi(w⋅xi+b)≥1−ξi
既然在约束条件上加了一个松弛变量,那我们在目标函数里面总得为这个新引入的变量给与一定惩罚,于是原来的
1
2
∥
w
∥
\frac{1}{2}\left\|{w}\right\|
21∥w∥就变成了
1
2
∥
w
∥
+
C
∑
i
=
1
N
ξ
i
\frac{1}{2}\left\|{w}\right\|+C\sum\limits_{i=1}^N{\xi_i}
21∥w∥+Ci=1∑Nξi,在这里,C为惩罚参数,一般是由具体的问题决定的,当C的值过大时说明对误分类点的惩罚力度很大。即不允许过多的误分类点出现,而参数C过小时,说明对误分类点不是很敏感,更要求支持向量之间的间隔更大。
有了上面的思路,我们就可以重新定义间隔,线性可分SVM的间隔称为硬间隔,即可以将所有样本点都完美分类的最大间隔,但是在线性不可分SVM中,这种间隔就不在是硬间隔了,因为线性不可分SVM肯定是有点被误分类的,所以此时的最大间隔不能再是硬间隔了,我们称此时的间隔为软间隔。并且数学模型变成如下的形式:
线性不可分支持向量机原始问题:
min w , b 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i s . t . y i ( w ⋅ x i + b ) ≥ 1 − ξ i , i = 1 , 2 , ⋯ , N ξ i ≥ 0 , i = 1 , 2 , ⋯ , N \min\limits_{w,b}{\frac{1}{2}\left\|{w}\right\|^2}+C\sum\limits_{i=1}^N\xi_i\\ s.t.\,\,\,\,\,y_i(w\cdot x_i+b)\ge1-\xi_i,\,\,\,\,\,i=1,2,\cdots,N\\ \xi_i\ge0,\,\,\,\,\,i=1,2,\cdots,N w,bmin21∥w∥2+Ci=1∑Nξis.t.yi(w⋅xi+b)≥1−ξi,i=1,2,⋯,Nξi≥0,i=1,2,⋯,N
如果将上述的凸二次规划问题称为一个原始问题,那么我们一定可以和线性可分SVM一样,可以借助拉格朗日函数和对偶性质,找到一个对偶算法与原始模型相等同。于是借助上文线性可分支持向量机的思路,我们需要引进拉格朗日乘数,将不等式约束消去,同样的,引入
α
i
\alpha_i
αi和
μ
i
{\mu _i}
μi,其中
α
i
>
0
,
μ
i
>
0
,
i
=
1
,
2
,
⋯
,
N
\alpha_i>0,\,\,\mu_i>0,\,\,\,\,i=1,2,\cdots,N
αi>0,μi>0,i=1,2,⋯,N,先对不等式约束进行变化如下:
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
−
1
+
ξ
i
≤
0
,
i
=
1
,
2
,
⋯
,
N
−
ξ
i
≤
0
s.t.\,\,\,\,\,y_i(w\cdot x_i+b)-1+\xi_i\le0,\,\,\,\,\,i=1,2,\cdots,N\\ -\xi_i\le0
s.t.yi(w⋅xi+b)−1+ξi≤0,i=1,2,⋯,N−ξi≤0
然后就可以将约束条件并入目标函数中,详细推导如下:
L
(
w
,
b
,
ξ
,
α
,
μ
)
=
1
2
∥
w
∥
2
+
C
∑
i
=
1
N
ξ
i
−
∑
i
=
1
N
α
i
(
y
i
(
w
⋅
x
i
+
b
)
−
1
+
ξ
i
)
−
∑
i
=
1
N
μ
i
ξ
i
\begin{aligned} L(w,b,\xi,\alpha,\mu)&=\frac{1}{2}\left\|{w}\right\|^2+C\sum\limits_{i=1}^N\xi_i-\sum\limits_{i=1}^N{\alpha_i(y_i(w\cdot x_i+b)-1+\xi_i)}-\sum\limits_{i=1}^N\mu_i\xi_i \end{aligned}
L(w,b,ξ,α,μ)=21∥w∥2+Ci=1∑Nξi−i=1∑Nαi(yi(w⋅xi+b)−1+ξi)−i=1∑Nμiξi
上述是拉格朗日函数表达式,其中
w
,
b
w,b
w,b是带求的参数,
ξ
\xi
ξ是松弛变量,
μ
,
α
\mu,\alpha
μ,α是拉格朗日乘子,对偶问题将原始问题转成极大极小问题,首先求
L
(
w
,
b
,
ξ
,
α
,
μ
)
L(w,b,\xi,\alpha,\mu)
L(w,b,ξ,α,μ)对
w
,
b
,
ξ
w,b,\xi
w,b,ξ求偏导令其等于0,然后得到如下的式子:
∇
w
L
(
w
,
b
,
ξ
,
μ
,
α
)
=
w
−
∑
i
=
1
N
α
i
y
i
x
i
=
0
∇
b
L
(
w
,
b
,
ξ
,
μ
,
α
)
=
−
∑
i
=
1
N
α
i
y
i
=
0
∇
ξ
L
(
w
,
b
,
ξ
,
μ
,
α
)
=
C
−
α
i
−
μ
i
=
0
\nabla_wL(w,b,\xi,\mu,\alpha)=w-\sum\limits_{i=1}^N{\alpha_iy_ix_i}=0\\ \nabla_bL(w,b,\xi,\mu,\alpha)=-\sum\limits_{i=1}^N{\alpha_iy_i}=0\\ \nabla_\xi L(w,b,\xi,\mu,\alpha)=C-\alpha_i-\mu_i=0
∇wL(w,b,ξ,μ,α)=w−i=1∑Nαiyixi=0∇bL(w,b,ξ,μ,α)=−i=1∑Nαiyi=0∇ξL(w,b,ξ,μ,α)=C−αi−μi=0
再化简得到:
w
=
∑
i
=
1
N
α
i
y
i
x
i
∑
i
=
1
N
α
i
y
i
=
0
C
−
α
i
−
μ
i
=
0
w=\sum\limits_{i=1}^N{\alpha_iy_ix_i}\\ \sum\limits_{i=1}^N{\alpha_iy_i}=0\\ C-\alpha_i-\mu_i=0
w=i=1∑Nαiyixii=1∑Nαiyi=0C−αi−μi=0
将化简之后的式子带入到拉格朗日函数中得到:
L
(
w
,
b
,
ξ
,
α
,
μ
)
=
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
N
(
α
i
+
μ
i
)
ξ
i
−
∑
i
=
1
N
α
i
(
y
i
(
∑
j
=
1
N
α
j
y
j
x
j
⋅
x
i
+
b
)
−
1
+
ξ
i
)
−
∑
i
=
1
N
μ
i
ξ
i
=
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
N
α
i
ξ
i
−
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
−
∑
i
=
1
N
α
i
y
i
b
+
∑
i
=
1
N
α
i
−
∑
i
=
1
N
α
i
ξ
i
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
N
α
i
\begin{aligned} L(w,b,\xi,\alpha,\mu)&=\frac{1}{2}\sum\limits_{i=1}^N{\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}}+\sum\limits_{i=1}^N(\alpha_i+\mu_i)\xi_i-\sum\limits_{i=1}^N\alpha_i(y_i(\sum\limits_{j=1}^N{\alpha_jy_jx_j}\cdot x_i+b)-1+\xi_i)-\sum\limits_{i=1}^N{\mu_i\xi_i}\\ &=\frac{1}{2}\sum\limits_{i=1}^N{\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}}+\sum\limits_{i=1}^N{\alpha_i\xi_i}-\sum\limits_{i=1}^N{\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}}-\sum\limits_{i=1}^N{\alpha_iy_ib}+\sum\limits_{i=1}^N{\alpha_i}-\sum\limits_{i=1}^N{\alpha_i\xi_i}\\ &=-\frac{1}{2}\sum\limits_{i=1}^N{\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}}+\sum\limits_{i=1}^N{\alpha_i} \end{aligned}
L(w,b,ξ,α,μ)=21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑N(αi+μi)ξi−i=1∑Nαi(yi(j=1∑Nαjyjxj⋅xi+b)−1+ξi)−i=1∑Nμiξi=21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαiξi−i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαiyib+i=1∑Nαi−i=1∑Nαiξi=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
带入化简后得到:
min
w
,
b
,
ξ
L
(
w
,
b
,
ξ
,
α
,
μ
)
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
+
∑
i
=
1
N
α
i
\min\limits_{w,b,\xi}L(w,b,\xi,\alpha,\mu)=-\frac{1}{2}\sum\limits_{i=1}^N{\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}}+\sum\limits_{i=1}^N{\alpha_i}
w,b,ξminL(w,b,ξ,α,μ)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
然后再对
min
w
,
b
,
ξ
L
(
w
,
b
,
ξ
,
α
,
μ
)
\min\limits_{w,b,\xi}L(w,b,\xi,\alpha,\mu)
w,b,ξminL(w,b,ξ,α,μ)求对
α
\alpha
α的极大,即得到对偶问题:
线性不可分支持向量机对偶问题:
max α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 C − α i − μ i = 0 α i ≥ 0 μ i ≥ 0 i = 1 , 2 , ⋯ , N \max\limits_{\alpha}\,\,\,\,\,-\frac{1}{2}\sum\limits_{i=1}^N{\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}}+\sum\limits_{i=1}^N{\alpha_i}\\ s.t.\,\,\,\,\,\sum\limits_{i=1}^N\alpha_i y_i=0\\ C-\alpha_i-\mu_i=0\\ \alpha_i\ge0\\ \mu_i\ge0\,\,\,\,\,\,i=1,2,\cdots,N αmax−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαis.t.i=1∑Nαiyi=0C−αi−μi=0αi≥0μi≥0i=1,2,⋯,N
转换到这里,对偶问题以及快得到最终形式了,但是公式中还是存在变量
μ
i
\mu_i
μi,为了减少计算的难度,我们还需要将上述式子进一步简化,于是可以将后三个约束条件进行合并,然后把求最大值转换为求最小值。简化成如下:
0
≤
α
i
≤
C
0\le\alpha_i\le C
0≤αi≤C
于是乎,最终得到了线性不可分SVM对偶问题的最终形式:
线性不可分支持向量机对偶问题最终形式: min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C i = 1 , 2 , ⋯ , N \min\limits_{\alpha}\,\,\,\,\,\frac{1}{2}\sum\limits_{i=1}^N{\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}}-\sum\limits_{i=1}^N{\alpha_i}\\ s.t.\,\,\,\,\,\sum\limits_{i=1}^N\alpha_i y_i=0\\ 0\le\alpha_i\le C\,\,\,\,\,i=1,2,\cdots,N αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤Ci=1,2,⋯,N
到这里,关于线性不可分SVM最优化问题的数学模型便全部给出了,观察模型中存在的未知数,只有 α \alpha α一种,我们仍然可以使用二次规划算法来求解模型。
假设求解得到的最优解是
α
∗
=
(
α
1
∗
,
α
2
∗
,
⋯
,
α
N
∗
)
\alpha^*=(\alpha^*_1,\alpha^*_2,\cdots,\alpha^*_N)
α∗=(α1∗,α2∗,⋯,αN∗),必定存在一个分量
α
j
∗
\alpha^*_j
αj∗,这个分量就是支持向量,所以其值应该是大于0的,我们可以用这个分量来求解
w
w
w和
b
b
b,如下:
w
∗
=
∑
i
=
1
N
α
i
∗
y
i
x
i
b
∗
=
y
j
−
∑
i
=
1
N
y
i
α
i
∗
(
x
i
⋅
x
j
)
w^*=\sum\limits_{i=1}^N\alpha^*_iy_ix_i\\ b^*=y_j-\sum\limits_{i=1}^N{y_i\alpha_i^*(x_i\cdot x_j)}
w∗=i=1∑Nαi∗yixib∗=yj−i=1∑Nyiαi∗(xi⋅xj)
到这里线性不可分支持向量机的全部数学推导大致结束了,仍然还是有部分证明部分没有介绍,以后单独再分析。
3.2.线性不可分SVM学习算法
输入:线性可分训练集
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
N
,
y
N
)
T={(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)}
T=(x1,y1),(x2,y2),⋯,(xN,yN),其中
x
i
∈
χ
=
R
n
,
y
i
∈
Y
=
−
1
,
+
1
,
i
=
1
,
2
,
⋯
,
N
x_i\in\chi=R^n,y_i\in Y={-1,+1},i=1,2,\cdots,N
xi∈χ=Rn,yi∈Y=−1,+1,i=1,2,⋯,N
输出:分离超平面和分类决策函数
步骤如下:
-
选择惩罚参数 C > 0 C>0 C>0,构造并求解凸二次规划问题
min α = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C i = 1 , 2 , ⋯ , N \min\limits_{\alpha}=\frac{1}{2}\sum\limits_{i=1}^N{\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}}-\sum\limits_{i=1}^N{\alpha_i}\\ s.t.\,\,\,\,\,\sum\limits_{i=1}^N\alpha_i y_i=0\\ 0\le\alpha_i\le C\,\,\,\,\,i=1,2,\cdots,N αmin=21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤Ci=1,2,⋯,N
求解最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯ , α N ∗ ) \alpha^*=(\alpha^*_1,\alpha^*_2,\cdots,\alpha^*_N) α∗=(α1∗,α2∗,⋯,αN∗) -
计算 w = ∑ i = N α i ∗ y i x i w^ =\sum\limits_{i=}^N\alpha^*_iy_ix_i w=i=∑Nαi∗yixi
选择 α ∗ \alpha^* α∗的一个分量 α j ∗ \alpha^*_j αj∗适合条件 0 < α j ∗ < C 0<\alpha^*_j<C 0<αj∗<C,计算
b ∗ = y j − ∑ i = 1 N y i α i ∗ ( x i ⋅ x j ) b^*=y_j-\sum\limits_{i=1}^N{y_i\alpha_i^*(x_i\cdot x_j)} b∗=yj−i=1∑Nyiαi∗(xi⋅xj) -
求得分离超平面
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)
在这一部分中,我是直接参考《统计学习方法》中的步骤,因为这本书已经总结的非常好了。
这一部分的实现代码和编程详情放在下面的链接中了:
线性不可分支持向量机MATLAB实现
四、非线性SVM
4.1.非线性分类问题
在前面,我们已经了解到了线性可分SVM和线性不可分SVM,其中线性不可分SVM与线性可分SVM的差别就是引入了一个松弛变量。这一节,我们要学习的非线性SVM,又和前面两节有着很大的区别。
在常规认知中,线性分类就是找到一个线性超平面(二维中就是直线形式),使得该线性超平面能够对样本点进行分类。非线性分类可以理解为使用线性模型无法进行分类,先看一个例子,如果面对下面的问题,我们要找到合适的边界,能够将红色和蓝色点完全区分开来。
可以明显的看出,想用一条直线来对已知样本点进行完美分类是完全不可能的,但是我们可以找到一条椭圆曲线(非线性模型)将它们正确分开。那么该如何解决一些非线性问题呢?我们想到把原来的坐标进行映射,即映射到更高维的空间中,然后再更高维的空间中进行分类。
4.2.核函数
下面是核函数的概念:
设 χ \chi χ是输入空间(欧式空间 R n R^n Rn的子集或离散集合),又设 H {\rm H} H为特征空间,如果存在一个从 χ \chi χ到 H {\rm H} H的映射 ϕ ( X ) : χ → H \phi (X):\chi \to {\rm H} ϕ(X):χ→H
使得对所有样本点 x , z ∈ χ x,z\in\chi x,z∈χ,函数 K ( x , z ) K(x,z) K(x,z)满足条件 K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x,z)=\phi(x)\cdot \phi(z) K(x,z)=ϕ(x)⋅ϕ(z)
则称 K ( x , z ) K(x,z) K(x,z)为核函数, ϕ ( x ) \phi(x) ϕ(x)为映射函数,式中 ϕ ( x ) ⋅ ϕ ( z ) \phi(x)\cdot \phi(z) ϕ(x)⋅ϕ(z)为 ϕ ( x ) \phi(x) ϕ(x)和 ϕ ( z ) \phi(z) ϕ(z)的内积
核函数的思想就是在学习过程中我们只需要定义和计算核函数
K
(
x
,
z
)
K(x,z)
K(x,z)即可,无需关心映射函数
ϕ
(
x
)
\phi(x)
ϕ(x)。也就是说,我们不需要找到映射函数的形式是多少,即给定两个样本点
x
1
,
x
2
x_1,x_2
x1,x2,我们不需要知道
ϕ
(
x
1
)
\phi(x_1)
ϕ(x1)和
ϕ
(
x
2
)
\phi(x_2)
ϕ(x2)的形式是什么,我们可以直接使用核函数计算
K
(
x
1
,
x
2
)
K(x_1,x_2)
K(x1,x2)的值即可。至于为什么可以这么计算呢?
我们观察到在线性支持向量机中对偶问题中,无论是目标函数还是决策函数(分离超平面)都是只涉及输入实例与输出实例之间的内积:
x
i
⋅
x
j
x_i\cdot x_j
xi⋅xj,例如目标函数:
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
i
⋅
x
j
)
\frac{1}{2}\sum\limits_{i=1}^N{\sum\limits_{j=1}^N}{\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)}
21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)中就存在内积,如果在非线性问题中,就直接可以用
K
(
x
i
,
x
j
)
K(x_i,x_j)
K(xi,xj)来代替
ϕ
(
x
i
)
⋅
ϕ
(
x
j
)
\phi(x_i)\cdot \phi(x_j)
ϕ(xi)⋅ϕ(xj)。
即如果真的存在一个合适的映射,使得映射后的特征在高维中能完美的进行分类,那么支持向量机的对偶问题就可以写成:
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ϕ ( x i ) ⋅ ϕ ( x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C i = 1 , 2 , ⋯ , N \min\limits_{\alpha}\,\,\,\,\,\frac{1}{2}\sum\limits_{i=1}^N{\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_j\phi(x_i)\cdot \phi(x_j)}}-\sum\limits_{i=1}^N{\alpha_i}\\ s.t.\,\,\,\,\,\sum\limits_{i=1}^N\alpha_i y_i=0\\ 0\le\alpha_i\le C\,\,\,\,\,i=1,2,\cdots,N αmin21i=1∑Nj=1∑Nαiαjyiyjϕ(xi)⋅ϕ(xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤Ci=1,2,⋯,N
这样写的话,在计算中还需要显式的表达出 ϕ ( x ) \phi(x) ϕ(x)的值,这样做非常麻烦。核函数就可以完美的解决这个问题,经过核函数变换的对偶问题就可以写成:
非线性支持向量机对偶问题
min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C i = 1 , 2 , ⋯ , N \min\limits_{\alpha}\,\,\,\,\,\frac{1}{2}\sum\limits_{i=1}^N{\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_jK(x_i,x_j) }}-\sum\limits_{i=1}^N{\alpha_i}\\ s.t.\,\,\,\,\,\sum\limits_{i=1}^N\alpha_i y_i=0\\ 0\le\alpha_i\le C\,\,\,\,\,i=1,2,\cdots,N αmin21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤Ci=1,2,⋯,N
这其实就是等价于经过映射函数
ϕ
\phi
ϕ将原来的输入空间变换到一个新的特征空间,当映射函数是非线性函数时,学习到的含有核函数的支持向量机就是非线性支持向量机。
在这里有个点很重要,其实不需要追究到底映射后的空间是什么样子,等会在计算的时候其实完全不会使用映射函数,因为核函数已经代替了映射函数的内积。
下面介绍一些常用的核函数:
- 多项式核函数
K ( x , z ) = ( x ⋅ z + 1 ) p K(x,z)=(x\cdot z+1)^p K(x,z)=(x⋅z+1)p - 高斯核函数
K ( x , z ) = e x p ( − ∣ ∣ x − z ∣ ∣ 2 2 σ 2 ) K(x,z)=exp(-\frac{||x-z||^2}{2\sigma^2 }) K(x,z)=exp(−2σ2∣∣x−z∣∣2)
上面两个核函数其实就能解决大部分的非线性问题,而使用最多的便是高斯核函数。
掌握了核函数技巧,非线性问题就可以迎刃而解了。
4.3.非线性SVM学习算法
借助核函数,我们完全可以将线性支持向量机的数学模型推广到非线性问题上去,只需要将内积
(
x
i
⋅
x
j
)
(x_i\cdot x_j)
(xi⋅xj)变为核函数的形式
K
(
x
i
,
x
j
)
K(x_i,x_j)
K(xi,xj)
下面是非线性支持向量机的学习算法:
输入:线性可分训练集
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
N
,
y
N
)
T={(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)}
T=(x1,y1),(x2,y2),⋯,(xN,yN),其中
x
i
∈
χ
=
R
n
,
y
i
∈
Y
=
−
1
,
+
1
,
i
=
1
,
2
,
⋯
,
N
x_i\in\chi=R^n,y_i\in Y={-1,+1},i=1,2,\cdots,N
xi∈χ=Rn,yi∈Y=−1,+1,i=1,2,⋯,N
输出:分类决策函数
步骤如下:
- 选择惩罚参数
C
>
0
C>0
C>0,构造并求解凸二次规划问题
min α = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i ⋅ x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C i = 1 , 2 , ⋯ , N \min\limits_{\alpha}=\frac{1}{2}\sum\limits_{i=1}^N{\sum\limits_{j=1}^N{\alpha_i\alpha_jy_iy_jK(x_i\cdot x_j)}}-\sum\limits_{i=1}^N{\alpha_i}\\ s.t.\,\,\,\,\,\sum\limits_{i=1}^N\alpha_i y_i=0\\ 0\le\alpha_i\le C\,\,\,\,\,i=1,2,\cdots,N αmin=21i=1∑Nj=1∑NαiαjyiyjK(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤Ci=1,2,⋯,N
求解最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯ , α N ∗ ) \alpha^*=(\alpha^*_1,\alpha^*_2,\cdots,\alpha^*_N) α∗=(α1∗,α2∗,⋯,αN∗) - 选择 α ∗ \alpha^* α∗的一个正分量 0 < α j ∗ < C 0<\alpha^*_j<C 0<αj∗<C,计算
b ∗ = y j − ∑ i = 1 N y i α i ∗ K ( x i ⋅ x j ) b^*=y_j-\sum\limits_{i=1}^N{y_i\alpha_i^*K(x_i\cdot x_j)} b∗=yj−i=1∑Nyiαi∗K(xi⋅xj)
- 构造分类决策函数:
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
α
i
∗
y
i
K
(
x
i
⋅
x
j
)
+
b
∗
)
f(x)=sign(\sum\limits_{i=1}^N{\alpha_i^*y_iK(x_i\cdot x_j)}+b^*)
f(x)=sign(i=1∑Nαi∗yiK(xi⋅xj)+b∗)
在非线性学习算法中,有和前面两种支持向量机不同的地方,在输出结果上,前面两种支持向量机的输出都是分类超平面和分类决策函数,但是在非线性支持向量机中,输出结果只有决策函数这一个,而且从决策函数中可以看到还没有
w
w
w的身影,原因是非线性支持向量机学习算法只需要利用支持向量来构造分类决策函数,分类决策函数中是没有
w
w
w的。
具体实现的算法代码:MATLAB实现非线性支持向量机
总结
到这里支持向量机回归的大部分内容都已经介绍完,主要就是三个部分:线性可分、线性不可分、非线性这三种形式,这三种支持向量机的推导也是逐层加深的,至于后面还有一部分内容是关于SMO算法的,后续会把推导文章的链接放在下面,以及包括支持向量机回归、KKT条件的相关证明、对偶思想和拉格朗日的相关证明,以及一系列证明,正是有了这些形形色色的证明,才会有如今的支持向量机。