机器学习笔记之支持向量机(Support Vector Machines,SVM)
支持向量机
支持向量机是一种二分类模型。基本模型是定义在特征空间上的间隔最大的线性分类器,与感知机不同,感知机没有最大间隔。复杂感知机模型通过使用核技巧来处理非线性分类问题。
线性分类之硬间隔
考虑一个二分类问题,给定训练样本集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
 
,
(
x
m
,
y
m
)
}
,
y
i
∈
{
−
1
,
+
1
}
D=\left\{ ( \boldsymbol x_1,y_1),( \boldsymbol x_2,y_2),\cdots,( \boldsymbol x_m,y_m)\right\},y_i\in\left\{ -1,+1\right\}
D={(x1,y1),(x2,y2),⋯,(xm,ym)},yi∈{−1,+1},其中
x
i
∈
R
n
\boldsymbol x_i\in\R^n
xi∈Rn,当
y
i
=
+
1
y_i=+1
yi=+1,称
x
i
\boldsymbol x_i
xi为正例,当
y
i
=
−
1
y_i=-1
yi=−1,称
x
i
\boldsymbol x_i
xi为负例。(假设训练样本集是线性可分的)分类学习算法的基本思想就是基于训练集样本在样本空间找到一个划分超平面,将不同类别的样本分开。但是能将训练样本分开的超平面可能有很多个,如图所示,我们应该如何决定选择哪一个呢?
直观上看,应该选择位于两类训练样本正中间的划分超平面,即图中红色的那个,因为该超平面对训练样本的局部扰动的“容忍”性最好。例如,由于训练集的局限性或者噪声的因素,训练集外的样本可能比图中的训练样本更接近两个类的边界,这将使许多超平面出现错误,而红色的超平面受影响较小。换句话说,红色超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力更强。
在样本空间中,划分超平面可通过如下线性方程描述:
w
T
x
+
b
=
0
\boldsymbol w^\mathrm{T}\boldsymbol x+b=0
wTx+b=0
其中
w
=
(
w
1
,
w
2
,
⋯
 
,
w
n
)
\boldsymbol w=(w_1,w_2,\cdots,w_n)
w=(w1,w2,⋯,wn)为法向量,决定了超平面的方向,b为位移项,决定了超平面与圆点之间的距离。显然,超平面可被法向量
w
\boldsymbol w
w和位移
b
b
b确定。样本空间中任意点
x
\boldsymbol x
x到超平面(
w
,
b
\boldsymbol w,b
w,b)的距离可写为
r
=
∣
w
T
x
i
+
b
∣
∥
w
∥
r=\frac{|\boldsymbol w^\mathrm{T}\boldsymbol x_i+b|}{\|\boldsymbol w\|}
r=∥w∥∣wTxi+b∣
假设超平面(
w
,
b
\boldsymbol w,b
w,b)能将训练样本正确分类,即对于(
x
i
,
y
i
∈
D
\boldsymbol x_i,y_i\in D
xi,yi∈D)若
y
i
=
+
1
y_i=+1
yi=+1,则有
w
T
x
i
+
b
>
0
\boldsymbol w^\mathrm{T}\boldsymbol x_i+b>0
wTxi+b>0,若
y
i
=
−
1
y_i=-1
yi=−1,则有
w
T
x
i
+
b
<
0
\boldsymbol w^\mathrm{T}\boldsymbol x_i+b<0
wTxi+b<0,即
y
i
(
w
T
x
i
+
b
)
>
0
y_i(\boldsymbol w^\mathrm{T}\boldsymbol x_i+b)>0
yi(wTxi+b)>0。
我们希望最大化超平面关于训练数据集的距离(其中距离又要最小),因此可以转化为约束最优化问题。即
max
w
,
b
min
x
i
r
,
s
.
t
.
y
i
(
w
T
x
i
+
b
)
>
0
⇒
max
w
,
b
min
x
i
r
=
∣
w
T
x
i
+
b
∣
∥
w
∥
,
s
.
t
.
y
i
(
w
T
x
i
+
b
)
>
0
⇒
max
w
,
b
min
x
i
1
∥
w
∥
y
i
∣
w
T
x
i
+
b
∣
,
s
.
t
.
y
i
(
w
T
x
i
+
b
)
>
0
⇒
max
w
,
b
1
∥
w
∥
min
x
i
y
i
∣
w
T
x
i
+
b
∣
,
s
.
t
.
y
i
(
w
T
x
i
+
b
)
>
0
∵
y
i
(
w
T
x
i
+
b
)
>
0
∴
∃
γ
>
0
,
s
.
t
min
y
i
(
w
T
x
i
+
b
)
=
γ
,
令
γ
=
1
⇒
max
w
,
b
1
∥
w
∥
,
s
.
t
.
y
i
(
w
T
x
i
+
b
)
=
1
⇒
max
w
,
b
1
∥
w
∥
,
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
\begin{aligned}&\max_{w,b}\min_{x_i} \quad r ,\quad s.t.\quad y_i(\boldsymbol w^\mathrm{T}\boldsymbol x_i+b)>0 \Rightarrow \max_{w,b}\min_{x_i}\quad r=\frac{|\boldsymbol w^\mathrm{T}\boldsymbol x_i+b|}{\|\boldsymbol w\|},\quad s.t.\quad y_i(\boldsymbol w^\mathrm{T}\boldsymbol x_i+b)>0 \\&\Rightarrow \max_{w,b}\min_{x_i}\quad \frac{1}{\|\boldsymbol w\|}y_i|\boldsymbol w^\mathrm{T}\boldsymbol x_i+b|,\quad s.t.\quad y_i(\boldsymbol w^\mathrm{T}\boldsymbol x_i+b)>0\\&\Rightarrow \max_{w,b}\frac{1}{\|\boldsymbol w\|}\min_{x_i}y_i|\boldsymbol w^\mathrm{T}\boldsymbol x_i+b|,\quad s.t.\quad y_i(\boldsymbol w^\mathrm{T}\boldsymbol x_i+b)>0\\&\because y_i(\boldsymbol w^\mathrm{T}\boldsymbol x_i+b)>0\therefore \exists \gamma>0,s.t\quad\min y_i(\boldsymbol w^\mathrm{T}\boldsymbol x_i+b)=\gamma,令\gamma=1\\&\Rightarrow \max_{w,b}\frac{1}{\|\boldsymbol w\|},\quad s.t.\quad y_i(\boldsymbol w^\mathrm{T}\boldsymbol x_i+b)=1\Rightarrow \max_{w,b}\frac{1}{\|\boldsymbol w\|},\quad s.t.\quad y_i(\boldsymbol w^\mathrm{T}\boldsymbol x_i+b)\ge1 \end{aligned}
w,bmaxximinr,s.t.yi(wTxi+b)>0⇒w,bmaxximinr=∥w∥∣wTxi+b∣,s.t.yi(wTxi+b)>0⇒w,bmaxximin∥w∥1yi∣wTxi+b∣,s.t.yi(wTxi+b)>0⇒w,bmax∥w∥1ximinyi∣wTxi+b∣,s.t.yi(wTxi+b)>0∵yi(wTxi+b)>0∴∃γ>0,s.tminyi(wTxi+b)=γ,令γ=1⇒w,bmax∥w∥1,s.t.yi(wTxi+b)=1⇒w,bmax∥w∥1,s.t.yi(wTxi+b)≥1
即
min
w
,
b
1
2
∥
w
∥
2
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
…
,
m
.
\begin{aligned} \min_{w,b} \quad &\frac{1}{2}\|\boldsymbol w\|^2 \\ s.t.\quad &y_i(\boldsymbol w^\mathrm{T}\boldsymbol x_i+b)\ge1,\quad i=1,2,\dots,m. \end{aligned}
w,bmins.t.21∥w∥2yi(wTxi+b)≥1,i=1,2,…,m.
我们希望求解上式来得到最大间隔划分超平面所对应的模型
f
(
x
)
=
w
T
x
i
+
b
f(\boldsymbol x)=\boldsymbol w^\mathrm{T}\boldsymbol x_i+b
f(x)=wTxi+b,其中
w
\boldsymbol w
w和
b
b
b是模型参数。我们可以使用拉格朗日乘子法求解最优问题。具体来说,就是对约束条件添加lagrange拉格朗日乘子
λ
i
≥
0
\lambda_i\ge0
λi≥0,则该问题可以写成:
L
(
w
,
b
,
λ
)
=
1
2
∥
w
∥
2
+
∑
i
=
1
m
λ
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
L(\boldsymbol w,b,\lambda)=\frac{1}{2}\|\boldsymbol w\|^2+\sum_{i=1}^m\lambda_i\big(1-y_i(\boldsymbol w^\mathrm{T}\boldsymbol x_i+b)\big)
L(w,b,λ)=21∥w∥2+i=1∑mλi(1−yi(wTxi+b))其中
λ
=
(
λ
1
;
λ
2
,
…
,
λ
m
)
\boldsymbol \lambda=(\lambda_1;\lambda_2,\dots,\lambda_m)
λ=(λ1;λ2,…,λm)。
原问题就变成了
{
min
w
,
b
max
λ
L
(
w
,
b
,
λ
)
s
.
t
λ
i
≥
0
\begin{cases} \begin{aligned}\min_{\boldsymbol w,b} \max_{\boldsymbol \lambda} \quad &L(\boldsymbol w,b,\boldsymbol \lambda)\\s.t\quad \lambda_i\ge0 \end{aligned} \end{cases}
⎩⎨⎧w,bminλmaxs.tλi≥0L(w,b,λ)其对偶问题为
{
max
λ
min
w
,
b
L
(
w
,
b
,
λ
)
s
.
t
λ
i
≥
0
\begin{cases} \begin{aligned}\max_{\boldsymbol \lambda}\min_{\boldsymbol w,b} \quad &L(\boldsymbol w,b,\boldsymbol \lambda)\\s.t\quad \lambda_i\ge0 \end{aligned} \end{cases}
⎩⎨⎧λmaxw,bmins.tλi≥0L(w,b,λ)
令
L
对
w
,
b
L对\boldsymbol {w,b}
L对w,b求偏导等于零即
∂
L
∂
b
=
∂
∂
b
[
∑
i
=
1
m
λ
i
−
∑
i
=
1
m
λ
i
y
i
(
w
T
x
i
+
b
)
]
=
−
∑
i
=
1
m
λ
i
y
i
=
0
L
(
w
,
b
,
λ
)
=
1
2
w
T
w
+
∑
i
=
1
m
λ
i
−
∑
i
=
1
m
λ
i
y
i
(
w
T
x
i
+
b
)
=
1
2
w
T
w
+
∑
i
=
1
m
λ
i
−
∑
i
=
1
m
λ
i
y
i
w
T
x
i
∂
L
∂
w
=
w
−
∑
i
=
1
m
λ
i
y
i
x
i
=
0
⇒
w
∗
=
∑
i
=
1
m
λ
i
y
i
x
i
\begin{aligned} &\frac{\partial L}{\partial b}=\frac{\partial}{\partial b}[\sum_{i=1}^m\lambda_i-\sum_{i=1}^m\lambda_iy_i(\boldsymbol w^\mathrm{T}\boldsymbol x_i+b)]=-\sum_{i=1}^m\lambda_iy_i=0\\&L(\boldsymbol w,b,\boldsymbol \lambda)=\frac{1}{2}\boldsymbol {w^Tw}+\sum_{i=1}^m\lambda_i-\sum_{i=1}^m\lambda_iy_i(w^Tx_i+b)=\frac{1}{2}\boldsymbol {w^Tw}+\sum_{i=1}^m\lambda_i-\sum_{i=1}^m\lambda_iy_iw^Tx_i\\&\frac{\partial L}{\partial w}=w-\sum_{i=1}^{m}\lambda_iy_ix_i=0\Rightarrow w^*=\sum_{i=1}^{m}\lambda_iy_ix_i \end{aligned}
∂b∂L=∂b∂[i=1∑mλi−i=1∑mλiyi(wTxi+b)]=−i=1∑mλiyi=0L(w,b,λ)=21wTw+i=1∑mλi−i=1∑mλiyi(wTxi+b)=21wTw+i=1∑mλi−i=1∑mλiyiwTxi∂w∂L=w−i=1∑mλiyixi=0⇒w∗=i=1∑mλiyixi
因此,
L
(
w
,
b
,
λ
)
=
1
2
(
∑
i
=
1
m
λ
i
y
i
x
i
)
T
⎵
(
∑
i
=
1
m
λ
i
y
i
x
i
T
)
(
∑
j
=
1
m
λ
j
y
j
x
j
)
⎵
(
∑
j
=
1
m
λ
j
y
j
x
j
)
−
∑
i
=
1
m
λ
i
y
i
(
∑
j
=
1
m
λ
j
y
j
x
j
)
T
x
i
⎵
∑
i
=
1
m
∑
j
=
1
m
λ
i
λ
j
y
i
y
j
x
i
T
x
j
+
∑
i
=
1
m
λ
i
=
−
1
2
∑
i
=
1
m
∑
j
=
1
m
λ
i
λ
j
y
i
y
j
x
i
T
x
j
+
∑
i
=
1
m
λ
i
\begin{aligned} L(\boldsymbol w,b,\boldsymbol \lambda)&=\frac{1}{2}\underbrace{(\sum_{i=1}^{m}\lambda_iy_ix_i)^T}_{(\sum_{i=1}^{m}\lambda_iy_ix_i^T)}\underbrace{(\sum_{j=1}^{m}\lambda_jy_jx_j)}_{(\sum_{j=1}^{m}\lambda_jy_jx_j)}-\underbrace{\sum_{i=1}^m\lambda_iy_i(\sum_{j=1}^{m}\lambda_jy_jx_j)^Tx_i}_{\sum_{i=1}^m\sum_{j=1}^m\lambda_i\lambda_jy_iy_jx_i^Tx_j}+\sum_{i=1}^m\lambda_i\\&=-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\lambda_{i}\lambda_jy_iy_jx_i^Tx_j+\sum_{i=1}^m\lambda_i \end{aligned}
L(w,b,λ)=21(∑i=1mλiyixiT)
(i=1∑mλiyixi)T(∑j=1mλjyjxj)
(j=1∑mλjyjxj)−∑i=1m∑j=1mλiλjyiyjxiTxj
i=1∑mλiyi(j=1∑mλjyjxj)Txi+i=1∑mλi=−21i=1∑mj=1∑mλiλjyiyjxiTxj+i=1∑mλi
所以原问题就转化为对偶问题:
max
L
(
w
,
b
,
λ
)
=
−
1
2
∑
i
=
1
m
∑
j
=
1
m
λ
i
λ
j
y
i
y
j
x
i
T
x
j
+
∑
i
=
1
m
λ
i
s
.
t
∑
i
=
1
m
λ
i
y
i
=
0
,
λ
i
≥
0
,
i
=
1
,
2
,
…
,
m
.
\begin{aligned} \max L(\boldsymbol w,b,\boldsymbol \lambda)&= -\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\lambda_{i}\lambda_jy_iy_jx_i^Tx_j+\sum_{i=1}^m\lambda_i\\s.t\quad &\sum_{i=1}^m\lambda_iy_i=0,\\&\lambda_i\ge0,i=1,2,\dots,m. \end{aligned}
maxL(w,b,λ)s.t=−21i=1∑mj=1∑mλiλjyiyjxiTxj+i=1∑mλii=1∑mλiyi=0,λi≥0,i=1,2,…,m.
容易看出,解此问题需要满足KKT条件:
{
∂
L
∂
w
=
0
,
∂
L
∂
b
=
0
,
∂
L
∂
λ
=
0
λ
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
=
0
λ
i
≥
0
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
\begin{cases}\frac{\partial L}{\partial w}=0,\frac{\partial L}{\partial b}=0,\frac{\partial L}{\partial \lambda}=0\\\lambda_i(1-y_i(w^Tx_i+b))=0\\\lambda_i\ge0\\1-y_i(w^Tx_i+b)\le0 \end{cases}
⎩⎪⎪⎪⎨⎪⎪⎪⎧∂w∂L=0,∂b∂L=0,∂λ∂L=0λi(1−yi(wTxi+b))=0λi≥01−yi(wTxi+b)≤0
所以
w
∗
=
∑
i
=
1
m
λ
i
y
i
x
i
\begin{aligned}\boldsymbol w^* =\sum_{i=1}^m\lambda_iy_ix_i\end{aligned}
w∗=i=1∑mλiyixi。
对于任意训练样本总有
λ
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。若
λ
i
=
0
\lambda_i=0
λi=0,则该样本不会出现在
f
(
x
)
f(x)
f(x)中,也就是说不会对模型产生影响;若
λ
i
>
0
\lambda_i>0
λi>0,则必有
y
i
f
(
x
i
)
=
1
y_if(x_i)=1
yif(xi)=1所对应的样本点位于最大间隔边界上,是一个支持向量。这也表明了SVM的一个性质,最终模型仅与支持向量有关。
∃
(
x
k
,
y
k
)
,
s
.
t
.
1
−
y
k
(
w
T
x
k
+
b
)
=
0
y
k
(
w
T
x
k
+
b
)
=
1
⇒
y
k
2
(
w
T
x
k
+
b
)
=
y
k
⇒
b
∗
=
y
k
−
∑
i
=
1
m
y
i
x
i
T
x
k
∴
f
(
x
)
=
∑
i
=
1
m
λ
i
y
i
x
i
T
x
+
b
∗
\exists(x_k,y_k),s.t.1-y_k(w^Tx_k+b)=0\\y_k(w^Tx_k+b)=1\Rightarrow y_k^2(w^Tx_k+b)=y_k\Rightarrow b^*=y_k-\sum_{i=1}^my_ix_i^Tx_k\\\therefore f(x)=\sum_{i=1}^m\lambda_iy_ix_i^Tx+b^*
∃(xk,yk),s.t.1−yk(wTxk+b)=0yk(wTxk+b)=1⇒yk2(wTxk+b)=yk⇒b∗=yk−i=1∑myixiTxk∴f(x)=i=1∑mλiyixiTx+b∗
那么现在如何求解
λ
i
\lambda_i
λi呢?一般采用SMO1(Sequential Mininmal Optimization)算法求解。SMO的基本思路是先固定
λ
i
\lambda_i
λi之外的参数,然后求
λ
i
\lambda_i
λi上的极值。由于存在约束
∑
i
=
1
m
λ
i
y
i
=
0
\sum_{i=1}^m\lambda_iy_i=0
∑i=1mλiyi=0,若固定
λ
i
\lambda_i
λi之外的其他变量,则
λ
i
\lambda_i
λi可由求他变量导出。于是SMO每次选择两个变量
λ
i
\lambda_i
λi和
λ
j
\lambda_j
λj,并固定其他参数。这样,在参数初始化后,SMO不断执行以下两个步骤直至收敛:
- 选取一对需要更新的变量 λ i \lambda_i λi和 λ j \lambda_j λj
- 固定 λ i \lambda_i λi和 λ j \lambda_j λj以外的参数,求解L获得更新后的 λ i \lambda_i λi和 λ j \lambda_j λj
周志华,《机器学习》, ↩︎