Prequisite

  • 拉格朗日乘子法

分类

简要说一下SVM的分类:

  • 线性可分SVM
  • 线性不可分SVM
    1.软间隔法
    2.核技巧

线性可分SVM

引入

假设给定训练集:
T={(x1,y1),(x2,y2),,(xn,yn)}T=\{(x_1, y_1),(x_2, y_2),\cdots,(x_n, y_n)\}
其中,xiRp,yY={1,1},i=1,2,,nx_i\in R^p,y\in Y=\{-1,1\},i=1,2,\cdots,n,并且假设有样本集线性可分。
设有分离超平面:
wTx+b=0w^Tx+b=0
使得样本集被分成正负两部分。
以及分类决策函数:
f(x)=sign(wTx+b)f(x)=sign(w^Tx+b)
并有wTx+b>0w^Tx+b>0时,为正类;wT+b<0w^T+b<0时,为负类。

很自然的,我们只需要:
yi(wTxi+b)>0y_i(w^Tx_i+b)>0
对每个样本(xi,yi)(x_i,y_i)成立即可。
但这存在一个问题,考虑下面一个例子:
支持向量机(SupportVectorMachine)笔记
可以发现,满足上面条件的超平面有无穷多个。但是从样本点来看,是存在一个相比较而言更加好的一个超平面,那么就是处于H1,H2H_1,H_2中间的超平面,而SVM正是可以求解这个最优超平面的算法。

算法

Functional/Geometric Margin

首先介绍两个概念:
函数间隔(functional margin):
γ^i=yi(wTxi+b)\hat\gamma_i=y_i(w^Tx_i+b)
假如,我们已经求解得到最优超平面,即是有w,bw,b。但是,实际上λw,λb\lambda w,\lambda b也同样为那个最优超平面的系数。因此,首先,基于这一点,函数间隔只能描述相对大小;其二,为了解决这个多解问题,我们应该引入一些限制条件,比如w=1\vert\vert w\vert\vert=1,进行归一化。而为了不受w,bw,b的成倍变化带来的大小变化,我们引入几何间隔
几何间隔(geometric margin):
γi=yi(wTxi+b)w\gamma_i=\frac{y_i(w^Tx_i+b)}{\vert\vert w\vert\vert}
注意:上述距离一般为,带符号的距离(signed distance),而当样本点被正确分类时,那么就成为样本点到超平面的距离。

(硬)间隔最大化

SVM的间隔最大化思想就是,找到w,bw,b使得,距离超平面最近的那个点,其到超平面的距离最大。基于这个想法,我们有:
maxw,bminiγis.t.yi(wTxi+b)>0,i=1,2,,n:γi=yi(wTxi+b)w:maxw,bminiyi(wTxi+b)w=maxw,b1wminiyi(wTxi+b)\begin{aligned} &\max_{w,b}\min_{i}\gamma_i\\ &s.t.\quad y_i(w^Tx_i+b)>0,i=1,2,\cdots,n\\ 又:\\ &\gamma_i=\frac{y_i(w^Tx_i+b)}{\vert\vert w\vert\vert}\\ 有:\\ &\max_{w,b}\min_{i}\frac{y_i(w^Tx_i+b)}{\vert\vert w\vert\vert}\\ &=\max_{w,b}\frac{1}{\vert\vert w\vert\vert}\min_{i}y_i(w^Tx_i+b)\\\end{aligned}

又由上文分析,yi(wTxi+b)=γ^iy_i(w^Tx_i+b)=\hat\gamma_i可以被任意放缩,那么:
miniγ^i=1maxw,b1ws.t.yi(wTxi+b)1,i=1,2,,n:minw,b12wTws.t.yi(wTxi+b)1,i=1,2,,n\begin{aligned}令:\\ &\min_i\hat\gamma_i=1\\ 问题转化为:\\ &\max_{w,b}\frac{1}{\vert\vert w\vert\vert}\\ &s.t.\quad y_i(w^Tx_i+b)\ge1,i=1,2,\cdots,n\\ 也即是:\\ &\min_{w,b}\frac{1}{2}w^Tw\\ &s.t.\quad y_i(w^Tx_i+b)\ge1,i=1,2,\cdots,n\\ \end{aligned}

对偶算法

拉格朗日函数

通过上文的分析,我们得到目标函数和限制条件:
minw,b12wTws.t.1yi(wTxi+b)0,i=1,2,,n\begin{aligned} &\min_{w,b}\frac{1}{2}w^Tw\\ &s.t.\quad 1-y_i(w^Tx_i+b)\le0,i=1,2,\cdots,n\\ \end{aligned}
很自然的,我们想到构造拉格朗日函数,有:
L(w,b,λi)=12wTw+inλi(1yi(wTxi+b))s.tλi0\begin{aligned} &\mathcal L(w,b,\lambda_i)=\frac{1}{2}w^Tw+\sum_i^n\lambda_i(1-y_i(w^Tx_i+b))\\ &s.t\quad \lambda_i\ge0\\ \end{aligned}
此时,问题就变成了,无约束的优化问题:
minw,bmaxλiL(w,b,λi)=12wTw+inλi(1yi(wTxi+b))s.tλi0\begin{aligned} \min_{w,b}\max_{\lambda_i}&\mathcal L(w,b,\lambda_i)=\frac{1}{2}w^Tw+\sum_i^n\lambda_i(1-y_i(w^Tx_i+b))\\ &s.t\quad \lambda_i\ge0\\ \end{aligned}

对偶转换

由拉格朗日的对偶性,我们可以知,上述问题可以转换为:
maxλiminw,bL(w,b,λi)=12wTw+inλi(1yi(wTxi+b))s.tλi0\begin{aligned} \max_{\lambda_i}\min_{w,b}&\mathcal L(w,b,\lambda_i)=\frac{1}{2}w^Tw+\sum_i^n\lambda_i(1-y_i(w^Tx_i+b))\\ &s.t\quad \lambda_i\ge0\\ \end{aligned}
关于为什么要进行对偶转换,原因有两点:1.更容易求解。2.自然引入核函数,进来推广到非线性空间。

对偶问题证明

please jumpSVM对偶问题

对偶问题的求解

由上文可知对偶问题为:
maxλiminw,bL(w,b,λi)=12wTw+inλi(1yi(wTxi+b))s.tλi0\begin{aligned} \max_{\lambda_i}\min_{w,b}&\mathcal L(w,b,\lambda_i)=\frac{1}{2}w^Tw+\sum_i^n\lambda_i(1-y_i(w^Tx_i+b))\\ &s.t\quad \lambda_i\ge0\\ \end{aligned}
现在就来求解w,bw, b
先看min部分:
minw,bL(w,b)=12wTw+inλi(1yi(wTxi+b))=12wTw+inλiinλiyi(wTxi+b))L(w,b)b=inλiyi=0L(w,b)w=winλiyixi=0inλiyi=0w=inλiyiximaxλiL(λi)=12(inλiyixi)T(inλiyixi)+inλiinλiyi(wTxi+b)  =12(inλiyixi)T(jnλjyjxj)+inλiinλiyi((jnλjyjxj)Txi)  inλiyib  =12injn(λiyixi)Tλjyjxjinjnλiyi(λjyjxj)Txi+inλi  =12injn(λiλjyiyj)xiTxjinjn(λiλjyiyj)xjTxi+inλixjTxi=xiTxj  =12injn(λiλjyiyj)xiTxj+inλi\begin{aligned} &\min_{w,b}\mathcal L(w,b)=\frac{1}{2}w^Tw+\sum_i^n\lambda_i(1-y_i(w^Tx_i+b))\\ &\qquad \qquad\quad =\frac{1}{2}w^Tw+\sum_i^n\lambda_i-\sum_i^n\lambda_i y_i(w^Tx_i+b))\\ &\frac{\partial L(w,b)}{\partial b}=-\sum_i^n\lambda_iy_i =0\\ &\frac{\partial L(w,b)}{\partial w}=w-\sum_i^n\lambda_iy_ix_i=0\\ 综上有:\\ &\sum_i^n\lambda_iy_i =0\\ &w=\sum_i^n\lambda_iy_ix_i\\ 代入对偶问题有:\\ &\max_{\lambda_i}\mathcal L(\lambda_i)=\frac{1}{2}(\sum_i^n\lambda_iy_ix_i)^T(\sum_i^n\lambda_iy_ix_i)+\sum_i^n\lambda_i-\sum_i^n\lambda_iy_i(w^Tx_i+b)\\ &\qquad\qquad\ \ \, =\frac{1}{2}(\sum_i^n\lambda_iy_ix_i)^T(\sum_j^n\lambda_jy_jx_j)+\sum_i^n\lambda_i-\sum_i^n\lambda_iy_i((\sum_j^n\lambda_jy_jx_j)^Tx_i)\\ &\qquad\qquad\ \ \,-\sum_i^n\lambda_iy_ib\\ &\qquad\qquad\ \ \,=\frac{1}{2}\sum_i^n\sum_j^n(\lambda_iy_ix_i)^T\lambda_jy_jx_j-\sum_i^n\sum_j^n\lambda_iy_i(\lambda_jy_jx_j)^Tx_i+\sum_i^n\lambda_i\\ &\qquad\qquad\ \ \,=\frac{1}{2}\sum_i^n\sum_j^n(\lambda_i\lambda_jy_iy_j)x_i^Tx_j-\sum_i^n\sum_j^n(\lambda_i\lambda_jy_iy_j)x_j^Tx_i+\sum_i^n\lambda_i\\ &又\quad x_j^Tx_i=x_i^Tx_j\\ &\qquad\qquad\ \ \,=-\frac{1}{2}\sum_i^n\sum_j^n(\lambda_i\lambda_jy_iy_j)x_i^Tx_j+\sum_i^n\lambda_i\\ \end{aligned}
综上,max部分为:
maxλiL(λi)=12injn(λiλjyiyj)xiTxj+inλi \max_{\lambda_i} \mathcal L(\lambda_i)=-\frac{1}{2}\sum_i^n\sum_j^n(\lambda_i\lambda_jy_iy_j)x_i^Tx_j+\sum_i^n\lambda_i
即是:
minλiL(λi)=12injn(λiλjyiyj)xiTxjinλis.t.λi0inλiyi=0 \begin{aligned} &\min_{\lambda_i} \mathcal L(\lambda_i)=\frac{1}{2}\sum_i^n\sum_j^n(\lambda_i\lambda_jy_iy_j)x_i^Tx_j-\sum_i^n\lambda_i\\ &s.t.\quad \lambda_i\ge0\\ &\sum_i^n\lambda_iy_i =0 \end{aligned}
假设求得:λ=(λ1,λ2,,λn)\lambda^*=(\lambda_1,\lambda_2,\cdots,\lambda_n),那么只需要带入inλiyixi\sum_i^n\lambda_iy_ix_i,即可解得ww^*,又通过wTxi+b=1,λi0w{^*}^Tx_i+b=1,\lambda_i\ge0,即可解得bb^*。此时xix_i也被称为支持向量(support vector)。

待续。。。

相关文章: