支持向量机(Support Vector Machine,SVM)是一个经典的二分类算法,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。
它具体包括三种类型,由简至繁的模型包括:
(1) 当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;
(2) 当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;
(3) 当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机;
一、硬间隔(线性可分)
1. 决策边界
如上图,对于两组数,有无数条线可以将它们分开,哪条最合适呢?直觉上是中间那条,因为中间那条离两边都远,事实也是如此,SVM算法就是找到一条直线,使得离两边最远。(对于三维,就是找到一个平面;对于多维,就是超平面)。
在SVM中,最大的间隔称为Maximum Marginal,是SVM的一个理论基础之一。
我们的目的是计算点到中间分隔面的垂直距离,并且使它最大。所谓的垂直距离是为了距离最短,就是在最短的距离中找最大,有种“瘸子里挑将军”意思。
2. 构建方程
下面回忆一下高中数学里的点到直线的距离公式:
d
=
∣
A
x
0
+
B
y
0
+
C
A
2
+
B
2
∣
d=\left|\dfrac{Ax_0+By_0+C}{\sqrt{A^2+B^2}}\right|
d=
A2+B2Ax0+By0+C
其中,公式中的直线方程为
A
x
+
B
y
+
C
=
0
Ax+By+C=0
Ax+By+C=0,点P的坐标为
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)。
给定数据集,
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
x_i
xi为第
i
i
i 个特征向量,
y
i
y_i
yi为最终分类结果,只有+1和-1两个值。
对于上图,可认为线上面的为+1类,下面的为-1类。需要说明的是
x
i
x_i
xi是特征向量,由若干值组成,例如 ,
x
i
=
[
x
(
1
)
,
x
(
2
)
,
⋯
,
x
(
m
)
]
x_i=[x^{(1)},x^{(2)},\cdots,x^{(m)}]
xi=[x(1),x(2),⋯,x(m)]就是m维度空间的实际表达形式。
超平面方程为:
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0
x
i
x_i
xi 到此平面的距离为:
γ
i
=
∣
w
T
x
i
+
b
∣
∥
w
∥
=
y
i
(
w
T
x
i
+
b
)
∥
w
∥
…
…
…
…
…
…
…
…
…
…
(
1
)
\gamma_i=\dfrac{\left|\text{w}^T x_i+b\right|}{\left\|\text{w}\right\|}=\dfrac{y_i(w^T x_i+b)}{\left\|\text{w}\right\|}\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\left(1\right)
γi=∥w∥
wTxi+b
=∥w∥yi(wTxi+b)…………………………(1)
看不明白,看此段:
对于图中的2维平面,超平面方程为直线方程:
w
1
x
1
+
w
2
x
2
+
b
=
1
w_1x_1+w_2x_2+b=1
w1x1+w2x2+b=1 ,用高中数学公式带入得:
d
=
∣
w
1
x
1
+
w
2
x
2
+
b
w
1
2
+
w
2
2
∣
=
∣
w
T
x
i
+
b
∣
∥
w
∥
d=\left|\dfrac{w_1x_1+w_2x_2+b}{\sqrt{w_1^2+w_2^2}}\right|=\dfrac{\left|w^Tx_i+b\right|}{\left\|w\right\|}
d=
w12+w22w1x1+w2x2+b
=∥w∥
wTxi+b
同时,
{
w
T
x
+
b
>
0
,
y
=
+
1
w
T
x
+
b
<
0
,
y
=
−
1
\begin{cases}w^Tx+b>0,\quad y=+1\\ w^Tx+b<0,\quad y=-1\end{cases}
{wTx+b>0,y=+1wTx+b<0,y=−1 所以
y
(
w
T
+
b
)
>
0
y(w^T+b)>0
y(wT+b)>0
得出公式(1),下一步就是求最小值。我们定义间隔(Margin)
γ
\gamma
γ
为整个数据集中所有样本到分割超平面的最短距离,这些最短距离的点称为支持向量:
先最短,
γ
=
min
γ
i
\gamma=\min\gamma_i
γ=minγi
再最大:
max
w
,
b
γ
\max\limits_{w,b}\gamma
w,bmaxγ
即从所有最短距离值中找最大的那个,找到满足这个条件的超平面方程,即找到特定的那个
w
w
w 和
b
b
b,记为
(
w
∗
,
b
∗
)
(w^*,b^*)
(w∗,b∗),这就是我们的终极目标。
既然
γ
\gamma
γ 是最小值,那么整个数据集上的点到超平面的距离肯定都大于等于这个值。得出以下方程:
{
max
w
,
b
γ
s
.
t
.
y
i
(
w
T
x
i
+
b
)
∥
w
∥
≥
γ
,
i
∈
{
1
,
⋯
,
n
}
⋯
⋯
⋯
⋯
(
2
)
\left\{\begin{matrix}\max\limits_{w,b}&\gamma\\ s.t.&\dfrac{y_i(w^T x_i+b)}{\|w\|}\ge\gamma,i\in\{1,\cdots,n\} &\end{matrix}\right.\cdots\cdots\cdots\cdots(2)
⎩
⎨
⎧w,bmaxs.t.γ∥w∥yi(wTxi+b)≥γ,i∈{1,⋯,n}⋯⋯⋯⋯(2)
下面要做一步不太好理解的操作,强行令最短距离所处的平行平面方程为
y
(
w
T
+
b
)
=
1
y(w^T+b)=1
y(wT+b)=1和
y
(
w
T
+
b
)
=
−
1
y(w^T+b)=-1
y(wT+b)=−1 ,类似于“归一化”操作,把实际距离映射到这个区间上等比例缩放,这个操作不影响结果,只是为了方便计算。此时情况就如图中所示,此时最短距离为
1
∥
w
∥
\dfrac{1}{\|w\|}
∥w∥1,也就是 ,公式(2)变成:
{
max
w
,
b
1
∥
w
∥
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
∈
{
1
,
⋯
,
n
}
⋯
⋯
⋯
⋯
(
3
)
\left\{\begin{matrix}\max\limits_{w,b}&\dfrac{1}{\|w\|}\\ s.t.&{y_i(w^T x_i+b)}\ge1,i\in\{1,\cdots,n\} &\end{matrix}\right.\cdots\cdots\cdots\cdots(3)
⎩
⎨
⎧w,bmaxs.t.∥w∥1yi(wTxi+b)≥1,i∈{1,⋯,n}⋯⋯⋯⋯(3)
求
1
∥
w
∥
\dfrac{1}{\|w\|}
∥w∥1的最大值,就是求
∥
w
∥
\|w\|
∥w∥的最小值,等价于
∥
w
∥
2
\|w\|^2
∥w∥2的最小值,等价于
1
2
∥
w
∥
2
\dfrac{1}{2}\|w\|^2
21∥w∥2的最小值,至于为什么要这么变换,目的是为了方便计算。
{
max
w
,
b
1
2
∥
w
∥
2
s
.
t
.
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
,
i
∈
{
1
,
⋯
,
n
}
⋯
⋯
⋯
⋯
(
4
)
\left\{\begin{matrix}\max\limits_{w,b}&\dfrac{1}{2}\|w\|^2\\ s.t.&1-{y_i(w^T x_i+b)}\le0,i\in\{1,\cdots,n\} &\end{matrix}\right.\cdots\cdots\cdots\cdots(4)
⎩
⎨
⎧w,bmaxs.t.21∥w∥21−yi(wTxi+b)≤0,i∈{1,⋯,n}⋯⋯⋯⋯(4)
这是凸二次规划的问题,凸二次规划是一种理想的结果,它说明必定有解而且是全局最优解。求解此问题用拉格朗日乘子法(在此不加叙述,想了解参考:
https://www.zhihu.com/question/38586401/answer/457058079,https://blog.csdn.net/qq_36607894/article/details/89917997
3.方程求解
构造拉格朗日函数:
L
(
w
,
b
,
λ
)
=
1
2
∥
w
∥
2
+
∑
i
=
1
n
λ
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
⋯
⋯
⋯
⋯
(
5
)
L(w,b,\lambda)=\dfrac{1}{2}\left\|w\right\|^2+\sum\limits_{i=1}^n\lambda_i(1-y^i(w^T x_i+b))\cdots\cdots\cdots\cdots(5)
L(w,b,λ)=21∥w∥2+i=1∑nλi(1−yi(wTxi+b))⋯⋯⋯⋯(5)
由于这是一个不等式约束函数,所以
λ
i
≥
0
\lambda_i\ge0
λi≥0,此处为KKT条件。更进一步来说,对于支持向量们
1
−
y
i
(
w
T
x
i
+
b
)
=
0
,
λ
>
0
1-y^i(w^T x_i+b)=0,\lambda>0
1−yi(wTxi+b)=0,λ>0;对于其它点
1
−
y
i
(
w
T
x
i
+
b
)
>
0
,
λ
=
0
1-y^i(w^T x_i+b)>0,\lambda=0
1−yi(wTxi+b)>0,λ=0 。不等式约束不像等式约束一样,有不等号存在,无法直接求解,只能再继续求一种极值的方式继续求解。此处利用拉格朗日函数的对偶函数。
接下来首先说一个前提:
对于
L
(
x
,
λ
,
μ
)
=
f
(
x
)
+
∑
k
=
1
l
λ
k
h
k
(
x
)
+
∑
j
=
1
n
μ
j
g
j
(
x
)
,
μ
j
≥
0
L(x,\lambda,\mu)=f(x)+\sum\limits_{k=1}^l\lambda_k h_k(x)+\sum\limits_{j=1}^n\mu_j g_j(x),\mu_j\ge0
L(x,λ,μ)=f(x)+k=1∑lλkhk(x)+j=1∑nμjgj(x),μj≥0,显然
f
(
x
)
≥
L
(
x
,
λ
,
μ
)
f(x)\ge{L(x,\lambda,\mu)}
f(x)≥L(x,λ,μ)(证明很简单,右边第二项等于0,第三项小于等于0),进而
f
(
x
)
≥
max
L
(
x
,
λ
,
μ
)
≥
min
L
(
x
,
λ
,
μ
)
f(x)≥\max L(x,\lambda,\mu)≥\min L(x,\lambda,\mu)
f(x)≥maxL(x,λ,μ)≥minL(x,λ,μ),进而:
min
f
(
x
)
≥
max
L
(
x
,
λ
,
μ
)
≥
min
L
(
x
,
λ
,
μ
)
\min f(x)≥\max L(x,\lambda,\mu)≥\min L(x,\lambda,\mu)
minf(x)≥maxL(x,λ,μ)≥minL(x,λ,μ)为了取
f
(
x
)
f(x)
f(x)的最小值,那么必然取
max
L
(
x
,
λ
,
μ
)
\max L(x,\lambda,\mu)
maxL(x,λ,μ),为了使这个最小值最小,当然要取一个最小的最大值,即
min
max
L
(
x
,
λ
,
μ
)
\min \max L(x,\lambda,\mu)
minmaxL(x,λ,μ)。这个意思是说
max
L
(
x
,
λ
,
μ
)
\max L(x,\lambda,\mu)
maxL(x,λ,μ) 是
λ
\lambda
λ和
μ
\mu
μ的函数,随
λ
\lambda
λ和
μ
\mu
μ的变化而变(
L
(
x
,
λ
,
μ
)
L(x,\lambda,\mu)
L(x,λ,μ)当然是
(
x
,
λ
,
μ
)
(x,\lambda,\mu)
(x,λ,μ)的参数,但函数最大值和
x
x
x无关,因为
x
x
x是全范围取值),所以
min
max
L
(
x
,
λ
,
μ
)
\min \max L(x,\lambda,\mu)
minmaxL(x,λ,μ)意思是找到一组
λ
\lambda
λ和
μ
\mu
μ,使得
max
L
(
x
,
λ
,
μ
)
\max L(x,\lambda,\mu)
maxL(x,λ,μ)最小,更细化一步写成
min
x
max
λ
,
μ
L
(
x
,
λ
,
μ
)
\min\limits_x \max\limits_{\lambda,\mu} L(x,\lambda,\mu)
xminλ,μmaxL(x,λ,μ)。
应用到本题目,就是求
min
max
L
(
w
,
b
,
λ
)
\min \max L(w,b,\lambda)
minmaxL(w,b,λ)。细化后,
min
w
,
b
max
λ
≥
0
L
(
w
,
b
,
λ
)
⋯
⋯
⋯
⋯
(
6
)
\min\limits_{w,b} \max\limits_{\lambda\ge0} L(w,b,\lambda)\cdots\cdots\cdots\cdots(6)
w,bminλ≥0maxL(w,b,λ)⋯⋯⋯⋯(6)所以对方程(5)的求解变成对(6)的求解。
看一下我们的新的求解目标,先求最大值,再求最小值。这样的话,我们首先就要面对带有需要求解的参数
w
w
w 和
b
b
b 的方程,而
y
i
y^i
yi又是不等式约束,这个求解过程不好做。所以,我们需要使用拉格朗日函数对偶性(此处为强对偶),将最小和最大的位置交换一下,这样就变成了:
max
λ
≥
0
min
w
,
b
L
(
w
,
b
,
λ
)
⋯
⋯
⋯
⋯
(
7
)
\max\limits_{\lambda\ge0} \min\limits_{w,b} L(w,b,\lambda)\cdots\cdots\cdots\cdots(7)
λ≥0maxw,bminL(w,b,λ)⋯⋯⋯⋯(7)
先求内层的
min
w
,
b
L
(
w
,
b
,
λ
)
\min\limits_{w,b} L(w,b,\lambda)
w,bminL(w,b,λ),对
w
w
w 和
b
b
b 求偏导等于0。得到:
{
w
=
∑
i
=
1
n
λ
i
y
i
x
i
∑
i
=
1
n
λ
i
y
i
=
0
⋯
⋯
⋯
⋯
(
8
)
\left\{\begin{matrix} w=\sum\limits_{i=1}^{n}\lambda_iy_ix_i\\ \sum\limits_{i=1}^{n}\lambda_iy_i=0 &\end{matrix}\right.\cdots\cdots\cdots\cdots(8)
⎩
⎨
⎧w=i=1∑nλiyixii=1∑nλiyi=0⋯⋯⋯⋯(8)
将(8)带入(7)得到:
L
(
w
,
b
,
λ
)
=
−
1
2
∑
i
=
1
n
∑
j
=
1
n
λ
r
λ
j
y
i
y
j
x
i
T
x
j
+
∑
i
=
1
n
λ
i
⋯
⋯
⋯
⋯
(
9
)
L(w,b,\lambda)=-\dfrac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\lambda_r\lambda_j y_i y_j x_i^T x_j+\sum_{i=1}^n\lambda_i\cdots\cdots\cdots\cdots(9)
L(w,b,λ)=−21i=1∑nj=1∑nλrλjyiyjxiTxj+i=1∑nλi⋯⋯⋯⋯(9)
再求外层的
max
λ
≥
0
\max\limits_{\lambda\ge0}
λ≥0max,(9)里只有
λ
\lambda
λ 一个参数,即:
{
max
λ
−
1
2
∑
i
=
1
n
∑
j
=
1
n
λ
i
λ
j
y
i
y
j
x
i
T
x
j
+
∑
i
=
1
n
λ
i
∑
i
=
1
n
λ
i
y
i
=
0
,
λ
≥
0
⋯
⋯
⋯
⋯
(
10
)
\left\{\begin{matrix} \max\limits_{\lambda}-\dfrac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n\lambda_i\lambda_j y_i y_j x_i^T x_j+\sum\limits_{i=1}^n\lambda_i\\ \sum\limits_{i=1}^n\lambda_i y_i=0,\lambda\ge0 &\end{matrix}\right.\cdots\cdots\cdots\cdots(10)
⎩
⎨
⎧λmax−21i=1∑nj=1∑nλiλjyiyjxiTxj+i=1∑nλii=1∑nλiyi=0,λ≥0⋯⋯⋯⋯(10)
公式(8)中的约束条件需继续使用。进一步转化为:
{
min
λ
−
1
2
∑
i
=
1
n
∑
j
=
1
n
λ
i
λ
j
y
i
y
j
x
i
T
x
j
−
∑
i
=
1
n
λ
i
∑
i
=
1
n
λ
i
y
i
=
0
,
λ
≥
0
⋯
⋯
⋯
⋯
(
11
)
\left\{\begin{matrix} \min\limits_{\lambda}-\dfrac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n\lambda_i\lambda_j y_i y_j x_i^T x_j-\sum\limits_{i=1}^n\lambda_i\\ \sum\limits_{i=1}^n\lambda_i y_i=0,\lambda\ge0 &\end{matrix}\right.\cdots\cdots\cdots\cdots(11)
⎩
⎨
⎧λmin−21i=1∑nj=1∑nλiλjyiyjxiTxj−i=1∑nλii=1∑nλiyi=0,λ≥0⋯⋯⋯⋯(11)现在我们的优化问题变成了如上的形式。对于这个问题,我们有更高效的优化算法,即序列最小优化(SMO)算法。这里暂时不展开关于使用SMO算法求解以上优化问题的细节,下一篇文章再加以详细推导。
我们通过这个优化算法能得到
λ
\lambda
λ,再根据 ,我们就可以求解出
w
w
w 和
b
b
b ,进而求得我们最初的目的:找到超平面,即”决策平面”。
现在回头分析一下,对于任意训练样本
(
w
i
,
y
i
)
(w_i,y_i)
(wi,yi),
若
λ
i
=
0
\lambda_i=0
λi=0,则其不会在公式中的求和项中出现,也就是说,它不影响模型的训练;
若
λ
i
>
0
\lambda_i>0
λi>0,则
1
−
y
i
(
w
T
x
i
+
b
)
=
0
1-y_i(w^Tx_i+b)=0
1−yi(wTxi+b)=0,即该样本一定在边界上,是一个支持向量。
这里显示出了支持向量机的重要特征:当训练完成后,大部分样本都不需要保留,最终模型只与支持向量有关。
强对偶:
设有个函数 f f f 我们有:
min max f ≥ max min f \min\max f \ge \max \min f minmaxf≥maxminf 也就是说,最大的里面挑出来的最小的也要比最小的里面挑出来的最大的要大。这关系实际上就是弱对偶关系,而强对偶关系是当等号成立时,即:
min max f = max min f \min\max f = \max \min f minmaxf=maxminf 如果是凸优化问题,强对偶性成立。而我们之前求的KKT条件是强对偶性的充要条件。
二、软间隔(近似线性可分)
1.引入问题
现实中几乎不存在完全线性可分的情况,总有几个点分不出来。例如下图:
于是我们就有了软间隔,相比于硬间隔的苛刻条件,我们允许个别样本点出现在间隔带里面,比如:
我们允许部分样本点不满足约束条件:
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
1-y_i(w^Tx_i+b)\le0
1−yi(wTxi+b)≤0为了度量这个间隔软到何种程度,我们为每个样本引入一个松弛变量
ξ
i
\xi_i
ξi,令
ξ
i
≥
0
\xi_i\ge0
ξi≥0,且
1
−
y
i
(
w
T
x
i
+
b
)
−
ξ
i
≤
0
1-y_i(w^Tx_i+b)-\xi_i\le0
1−yi(wTxi+b)−ξi≤0。对应如下图所示:
2.优化目标及求解
{ min w 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ξ i s . t . 1 − y i ( w T x i + b ) − ξ i ≤ 0 , ξ i ≥ 0 , i ∈ { 1 , ⋯ , n } \left\{\begin{matrix} \min\limits_{w}&\dfrac{1}{2}\|w\|^2+C\sum\limits_{i=1}^m\xi_i\\ s.t.&1-{y_i(w^T x_i+b)}-\xi_i\le0,\xi_i\ge0,i\in\{1,\cdots,n\} &\end{matrix}\right. ⎩ ⎨ ⎧wmins.t.21∥w∥2+Ci=1∑mξi1−yi(wTxi+b)−ξi≤0,ξi≥0,i∈{1,⋯,n} C>0 称为惩罚参数, 值越大,对分类的惩罚越大。跟线性可分求解的思路一致,同样这里先用拉格朗日乘子法得到拉格朗日函数,再求其对偶问题。此处不再赘述,详情参考https://zhuanlan.zhihu.com/p/77750026
三、核函数(线性不可分)
我们刚刚讨论的硬间隔和软间隔都是在说样本的完全线性可分或者大部分样本点的线性可分。
但我们可能会碰到的一种情况是样本点不是线性可分的,比如:
这种情况的解决方法就是:将二维线性不可分样本映射到高维空间中,让样本点在高维空间线性可分,比如:
对于在有限维度向量空间中线性不可分的样本,我们将其映射到更高维度的向量空间里,再通过间隔最大化的方式,学习得到支持向量机,就是非线性SVM,求解方式和前面一样,就是
(
x
,
y
)
(x,y)
(x,y) 变成
(
ϕ
(
x
)
,
ϕ
(
y
)
)
(\phi(x),\phi(y))
(ϕ(x),ϕ(y)) ,加了一层映射函数。具体还是参考https://zhuanlan.zhihu.com/p/77750026
这个地方的计算用到了核函数,所谓核函数不是必须的,只是为了减轻计算量,使得
f
(
x
)
⋅
f
(
y
)
=
g
(
x
⋅
y
)
f(x)\cdot f(y)=g(x\cdot y)
f(x)⋅f(y)=g(x⋅y),这个 就是核函数,让变量先相乘再函数,能减小计算量。
本文参考:
https://blog.csdn.net/weixin_44010678/article/details/86916842
https://blog.csdn.net/sinat_20177327/article/details/79729551
https://zhuanlan.zhihu.com/p/31886934
https://zhuanlan.zhihu.com/p/77750026