3. 支持向量机(SVM)

joker ... 2022-4-7 大约 22 分钟

# 3. 支持向量机(SVM)

文章链接

https://gitee.com/fakerlove/machine-learning
1

视屏链接

https://www.bilibili.com/video/BV1Hs411w7ci
1

【机器学习】支持向量机 SVM(非常详细)

# 3.0 基本概念

支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。

SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。

SVM的的学习算法就是求解凸二次规划的最优化算法。

support vector machine,一般用在小样本的,效果会非常好

SVM有三宝,间隔,对偶,核技巧

  • hard-margin svm
  • soft margin svm
  • kenel svm

中文的话

  • 硬间隔支持向量机(线性可分支持向量机):当训练数据线性可分时,可通过硬间隔最大化学得一个线性可分支持向量机。
  • 软间隔支持向量机:当训练数据近似线性可分时,可通过软间隔最大化学得一个线性支持向量机。
  • 非线性支持向量机:当训练数据线性不可分时,可通过核方法以及软间隔最大化学得一个非线性支持向量机

下面我们学习都是硬间隔支持向量机

# 3.1 硬间隔支持向量机

数据是线性可分的,采用hard margin 就是说数据可以用一条直线将以区分,如下图所以,中间的线就是我们要距离间隔最大的线,就是我们要找到的超平面


# 3.1.1 概念介绍

# 1) 线性可分的定义

(w,b),使得对i1N,有:1.yi=+1,wTxi+b02.yi=1,wTxi+b<0\exist(w,b) ,使得对\forall_i 1\sim N,有:\\ 1.y_i=+1,则w^Tx_i+b\ge 0\\ 2. y_i=-1,则w^Tx_i+b<0

等于0的时候,虽然能分开,但是只有一条直线分开来。但是对于此题svm呢?中间有一段很大的距离,所以假设规定

(w,b),使得对i1N,有:1.yi=+1,wTxi+b12.yi=1,wTxi+b<1\exist(w,b) ,使得对\forall_i 1\sim N,有:\\ 1.y_i=+1,则w^Tx_i+b\ge 1\\ 2. y_i=-1,则w^Tx_i+b<-1

这里是1和-1不固定,我们只是通过缩放将之变成1,可以2和-2 ,也可以是3,-3,。我们只是假设规定一下,1比较好算。最终得到的结果差一个缩放a,怎么缩放的,下面有介绍

# 2) 训练数据及标签

假设给定一个特征空间上的训练数据集T={(x1,y1),(x2,y2),,(xn,yn)}T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n)\}

设空间有NN个向量,$x_1,x_2,x_3,... 要么属于要么属于C_1,要么属于,要么属于C_2。定义。定义y_i=\begin{cases}1 ,如果x_i \in C_1 \ -1 ,如果x_i\in C_2\end{cases}$

# 3) 线性方程

描述超平面的线性方程,

定义线性方程wTx+b=0w^Tx+b=0,其中ww为法向量的方向,bb为距离原点的距离.

定义决策分类函数

f(x)=sign(wTx+b)f(x)=sign(w^Tx+b)


# 3.1.2 问题描述

在这些样本中,有很多的\circ×\times选取最合适的一条线,把\circ×\times分来

请问如何选取最合适的一条线???

# 3.1.3 算法流程

首先我们得定义一个性能指标,然后求出最好的一个性能指标.

怎么定义性能指标呢????

对于每一条分开×的线,分别进行上下移动,直到碰到一个或者多个为止,其中移动的距离为dd最大的就是最优解d就是其中的性能指标,d最大就是性能最好\color{red}对于每一条分开\circ 和\times 的线,分别进行上下移动,直到碰到一个或者多个\circ 为止,其中移动的距离为d ,d 最大的就是最优解\\ \color{red}d就是其中的性能指标, d 最大就是性能最好

找一个平面,向上与向下平行移动该平面,使之擦过一些向量,将距离d定义为此平面的优化向量,使d尽可能大,d叫做间距。擦过的向量叫做支持向量

# 1) 支持向量

擦过的向量叫做支持向量。图中红色的圈,不管正的还是负的,都叫做支持向量

支持向量机(SVM)——原理篇

# 2) 几何间隔

对于给定的数据集T和超平面wx+b=0w\cdot x+b=0,定义超平面关于样本点(xi,yi)(x_i,y_i)的几何间隔为

γi=yi(wwxi+bx)\gamma_i=y_i(\frac{w}{||w||}\cdot x_i+\frac{b}{||x||})

超平面关于所有样本点的几何间隔的最小值为

γ=mini=1,2,,Nγi\gamma=\min_{i=1,2,\cdots,N}\gamma_i

实际上这个距离就是我们所谓的支持向量到超平面的距离。

其中w=w12++wn2||w||=\sqrt{w_1^2+\cdots+w_n^2}

假设距离最佳超平面wx+b=0w\cdot x+b=0最近的几个训练样本点使上式中的等号成立,它们被称为“支持向量”(support vector)

γ=2w\gamma=\frac{2}{||w||}

ellipse

# 3) 最优化问题-间隔最大化

根据以上定义,SVM模型的求解最大分割超平面问题可以表示为以下约束最优化问题

maxw,bγs.t.yi(wwxi+bx)γ,i=1,2,,N\max_{w,b} \ \gamma \\ s.t.\ y_i(\frac{w}{||w||}\cdot x_i+\frac{b}{||x||})\ge \gamma,i=1,2,\cdots,N

约束条件两边同时除以γ\gamma,得到

yi(wwγxi+bxγ)1y_i(\frac{w}{||w||\cdot \gamma}\cdot x_i+\frac{b}{||x||\cdot \gamma})\ge 1

因为w,γ||w||,\gamma都是标量,所以为了表达式简洁起见,令

w=wwγw=\frac{w}{||w||\cdot \gamma}

b=bxγb=\frac{b}{||x||\cdot \gamma}

得到yi(wxi+b)1,i=1,2,,Ny_i(w\cdot x_i+b)\ge 1,i=1,2,\cdots,N

又因为最大化γ\gamma,等价于最大化2w\frac{2}{||w||},也就等价于最小化12w2\frac{1}{2}||w||^2(12\frac{1}{2}是为了后面求导以后形式简洁,不影响结果),

因此SVM模型的求解最大分割超平面问题又可以表示为以下约束最优化问题

minw,b12w2s.t.yi(wxi+b)1,i=1,2,,N\min_{w,b}\ \frac{1}{2}||w||^2 \\ s.t. \ y_i(w\cdot x_i+b)\ge 1,i=1,2,\cdots,N

说人话就是

结论就是为了找到最大的d,

只需要最小化12w2,限制条件yi(wTxi+b)1\frac{1}{2}\mid \mid w\mid \mid ^2,限制条件y_i(w^Tx_i+b)\ge 1


# 4) 问题解惑

问题一,为啥缩放

解释如下

首先看两个事实

事实1

wT+b=0w^T+b=0awT+ab=0aw^T+ab=0 是同一个平面,aR+a\in R^+

事实2

点到平面的距离公式w1x+w2y=b=0w_1x+w_2y=b=0(x0,y0)(x_0,y_0)到直线的距离为d=w1x0+w2y0+bw12+w22d=\frac{w_1x_0+w_2y_0+b}{\sqrt{w_1^2+w_2^2}} 同理

向量x到超平面wT+b=0w^T+b=0的距离为样本中任一点到线的距离为r=wTx+bwr=\frac{\mid w^Tx+b\mid}{\mid w \mid}

基于这两个事实

我们可以用a去缩放(w,b)(aw,ab)(w,b)\rightarrow(aw,ab),最终使得支持向量x0x_0上有wTx0+b=1\mid w^Tx_0+b\mid =1,此时支持向量与平面的距离为d=1wd=\frac{1}{\mid\mid w\mid\mid}

为啥要使得支持向量公式等于1,因为上面规定了所有符合条件的方程都是wTxi+b1或者wTxi+b<1的。当等于1时,超平面正好触碰到支持向量,此时最大\color{red}为啥要使得支持向量公式等于1,因为上面规定了所有符合条件的方程都是w^Tx_i+b\ge 1或者w^Tx_i+b<-1的。当等于1时,超平面正好触碰到支持向量,此时最大

问题二,为啥变成了12w2\frac{1}{2}||w||^2

γ\gamma,等价于最大化1w\frac{1}{||w||},也就等价于最小化12w2\frac{1}{2}||w||^2

最小化最小化

# 3.2 原问题和对偶问题

参考链接

https://zhuanlan.zhihu.com/p/31886934
1

首先什么是原问题,什么是对偶问题??

对偶理论是研究线性规划中原始问题与对偶问题之间关系的理论。

对偶问题是利用拉格朗日对偶性将原始问题转换为对偶问题,通过解对偶问题得到原始问题的解。优点是:

  • 对偶问题往往更易于求解
  • 自然引入核函数,推广到非线性分类问题的求解

为什么求对偶问题

对于对偶问题来说,我们求解最小化部分时没有任何限制条件,而没有限制条件的最小化问题的解一定是在求得x的偏导数=0这处,那我们就能得到一些等式,将这些等式代入拉格朗日函数中就可以简化计算(svm中可以最终把min消去,且得到一个只与α\alpha 有关的最大化问题)

# 3.2.0 前提准备

# 1) 强对偶定理

f(w)为凸函数,且g(w)=Aw+b,h(w)=Cw+d,则此优化问题的原问题与对偶问题间距为0f(w)=θ(α,β)若f(w)为凸函数,且g(w)=Aw+b,h(w)=Cw+d,\\ 则此优化问题的原问题与对偶问题间距为0,\\ 即f(w^*)= \theta(\alpha^*,\beta^*)

# 2) KKT 条件

推论1:

xx^∗αα^∗,β\beta^∗分别是原始问题和对偶问题的可行解,并且d=pd^∗=p^∗,则xx^∗αα^∗,ββ^∗分别是原始问题和对偶问题的最优解。

【即:如果某个解使得最优值相等,则这个解同时是原始和对偶问题的最优解】

定理2:

考虑原始问题和对偶问题,假设函数f(x)f(x)ci(x)c_i(x)是凸函数,hj(x)h_j(x)是仿射函数;并且假设不等式约束ci(x)c_i(x)是严格可行的,即存在x,对所有i有ci(x)<0c_i(x)<0,则存在x∗和α,βα^∗,β^∗,使x∗是原始问题的解,α,βα^∗,β^∗是对偶问题的解,并且有p=d=L(x,α,β).p^∗=d^∗=L(x^∗,α^∗,β^∗).

定理3:

x,α,βx^*,\alpha^*,\beta^*分别是原问题和对偶问题的充分必要的条件是$x*,\alpha,\beta^ $满足下面的KKT条件

# 3.2.1 原问题

求解一个约束最优化问题:

minw,b12w2s.t.yi(wxi+b)10i=1,2,...Nmin_{w,b} \quad \frac{1}{2}\mid w\mid ^2 \\ s.t. \quad y_i(wx_i+b)-1\ge 0 \\ i=1,2,...N

(注:这个问题用二次规划求解时复杂度与x的维度有关)

将问题一般化就变成

minxRnf(x)s.t.ci(x)0i=1,2,..khj(x)=0,j=1,2,...lmin_{x \in R^n}\quad f(x) \\s.t. \quad c_i(x)\le 0 \quad i=1,2,..k \\ h_j(x)=0,j=1,2,...l

# 3.2.2 对偶问题

前提准备

引入拉格朗日函数,由于约束条件有k+lk+l个,所以我们有:

L(w,α,β)=f(w)+i=1kαigi(w)+i=1Mβ+ihi(w)=f(w)+αTg(w)+βTh(w)L(w,\alpha,\beta)\\ =f(w)+\sum_{i=1}^k\alpha_ig_i(w)+\sum_{i=1}^M\beta+ih_i(w)\\ =f(w)+\alpha^Tg(w)+\beta^Th(w)

其中αi,βi\alpha_i,\beta_i是拉格朗日乘子

(求对xx有限制条件的f(x)f(x)的最优化问题转为对 x,α,βx,\alpha,\beta没有限制条件的L(x,α,β)L(x,\alpha,\beta)极值问题)

定义

最大化:θ(α,β)=inf{L(w,α,β)})\theta(\alpha,\beta)=inf\{L(w,\alpha,\beta)\})

限制条件: αi0(i=1k)\alpha_i \ge0(i=1\sim k)

实际上就是研究

θp(x)=maxα,β,αi0(f(w)+i=1kαigi(w)+i=1Mβ+ihi(w))\theta_p(x)=max_{\alpha,\beta,\alpha_i\ge 0}(f(w)+\sum_{i=1}^k\alpha_ig_i(w)+\sum_{i=1}^M\beta+ih_i(w))

求解过程

inf表示求最小值,1.在确定αβ的情况下,对w的取值全部遍历之后,取得的的最小值。这样子就变成了关于αβ的方程2.然后在αβ中寻求最大值inf表示求最小值,\\ 1. 在确定\alpha和\beta的情况下,对w的取值全部遍历之后,取得的的最小值。\\ 这样子就变成了关于\alpha和\beta的方程\\ 2. 然后在\alpha和\beta 中寻求最大值

定理

若原始问题和对偶问题都有最优值,则对偶问题最优值d∗ \le 原始问题最优值p∗:

d=maxα,β,α0minxL(x,α,β)minxmaxα,β,αi0L(x,α,β)=pd^*=\max_{\alpha,\beta,\alpha\ge 0}\ \min_{x}L(x,\alpha,\beta)\le \min_{x}\ \max_{\alpha,\beta,\alpha_i\ge 0}L(x,\alpha,\beta)=p^*

(通俗点就是宁做凤尾不做鸡头,凤尾(右)是原始问题,鸡头(左)是对偶问题)

换种说法

如果w是原问题的解,而αβ是对偶问题的解,则有f(w)θ(α,β)如果w^*是原问题的解,而\alpha^*,\beta^*是对偶问题的解,则有\\ f(w^*)\ge \theta(\alpha^*,\beta^*)

下面我们就把svm 的原问题化解为对偶问题

# 3.2.3 使用拉格朗日乘子法得到SVM对偶问题

minw,b12w2s.t.yi(wxi+b)1,i=1,2,,N\min_{w,b}\ \frac{1}{2}||w||^2 \\ s.t. \ y_i(w\cdot x_i+b)\ge 1,i=1,2,\cdots,N

这是一个含有不等式约束的凸二次规划问题,可以对其使用拉格朗日乘子法得到其对偶问题(dual problem)。

首先,我们将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数

L(w,b,α)=12w2i=1Nαi(yi(wxi+b)1)L(w,b,\alpha)=\frac{1}{2}||w||^2-\sum_{i=1}^N\alpha_i(y_i(w\cdot x_i+b)-1)

其中αi\alpha_i为拉格朗日乘子,且αi0\alpha_i\ge 0,现在我们令

θ(w)=maxαi0L(w,b,α)\theta(w)=\max_{\alpha_i\ge 0}L(w,b,\alpha)

当样本点不满足约束条件时,即在可行解区域外:

yi(wxi+b)<1y_i(w\cdot x_i+b)<1

此时将αi\alpha_i设置成无穷大,则θ(w)\theta(w)也为无穷大。

当满本点满足约束条件时,即在可行解区域内:

yi(wxi+b)1y_i(w\cdot x_i+b)\ge 1

为原函数本身。于是,将两种情况合并起来就可以得到我们新的目标函数

此时,θ(w)\theta(w)为原函数本身。于是,将两种情况合并起来就可以得到我们新的目标函数

θ(w)={12w2,x可行区域+,x不可行区域\theta(w)=\begin{cases}\frac{1}{2}||w||^2,x\in 可行区域\\ +\infty ,x\in 不可行区域\end{cases}

于是原约束问题就等价于

minw,bθ(w)=minw,bmaxαi0L(w,b.α)=p\min_{w,b}\theta(w)=\min_{w,b}\max_{\alpha_i\ge 0}L(w,b.\alpha)=p^*

看一下我们的新目标函数,先求最大值,再求最小值。这样的话,我们首先就要面对带有需要求解的参数w和b的方程,而αi\alpha_i又是不等式约束,这个求解过程不好做。所以,我们需要使用拉格朗日函数对偶性,将最小和最大的位置交换一下,这样就变成了:

maxαi0minw,bL(w,b.α)=d\max_{\alpha_i\ge 0}\min_{w,b}L(w,b.\alpha)=d^*

要有p=dp^*=d^*,需要满足两个条件:

① 优化问题是凸优化问题

② 满足KKT条件

首先,本优化问题显然是一个凸优化问题,所以条件一满足,而要满足条件二,即要求

{αi0yi(wixi+b)10αi(yi(wixi+b)1)=0\begin{cases}\alpha_i\ge 0\\ y_i(w_i\cdot x_i+b)-1\ge 0\\ \alpha_i(y_i(w_i\cdot x_i+b)-1)=0\end{cases}

为了得到求解对偶问题的具体形式,令L(w,b,α)L(w,b,\alpha)wwbb的偏导0,可得

w=i=1Nαiyixiw=\sum_{i=1}^N\alpha_iy_ix_i

i=1Nαiyi=0\sum_{i=1}^N\alpha_iy_i=0

将以上两个等式带入拉格朗日目标函数,消去wwbb

L(w,b,α)=12i=1Nj=1Nαiαjyiyj(xixj)i=1Nαiyi((j=1Nαjyjxj)xi+b)+i=1Nαi=12i=1Nj=1Nαiαjyiyj(xixj)+i=1NαiL(w,b,\alpha)=\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\sum_{i=1}^N\alpha_iy_i((\sum_{j=1}^N\alpha_jy_jx_j)\cdot x_i+b)+\sum_{i=1}^N\alpha_i \\ =-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^N\alpha_i

minw,bL(w,b,α)=12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi\min_{w,b}L(w,b,\alpha)=-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^N\alpha_i

minw,bL(w,b,α)\min_{w,b}L(w,b,\alpha)α\alpha的极大,即是对偶问题

maxα12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαis.t.i=1Nαiyi=0αi0,i=1,2,,N\max_\alpha-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^N\alpha_i \\ s.t.\ \sum_{i=1}^N\alpha_iy_i=0 \\ \alpha_i\ge 0,i=1,2,\cdots,N

把目标式子加一个负号,将求解极大转换为求解极小

minα12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαis.t.i=1Nαiyi=0αi0,i=1,2,,N\min_\alpha\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^N\alpha_i \\ s.t.\ \sum_{i=1}^N\alpha_iy_i=0 \\ \alpha_i\ge 0,i=1,2,\cdots,N

现在我们的优化问题变成了如上的形式。对于这个问题,我们有更高效的优化算法,即序列最小优化(SMO)算法。这里暂时不展开关于使用SMO算法求解以上优化问题的细节,下一篇文章再加以详细推导。

我们通过这个优化算法能得到 α\alpha^* ,再根据α\alpha^* ,我们就可以求解出wwbb,进而求得我们最初的目的:找到超平面,即”决策平面”。

前面的推导都是假设满足KKT条件下成立的,KKT条件如下

{αi0yi(wixi+b)10αi(yi(wixi+b)1)=0\begin{cases}\alpha_i\ge 0\\ y_i(w_i\cdot x_i+b)-1\ge 0\\ \alpha_i(y_i(w_i\cdot x_i+b)-1)=0\end{cases}

另外,根据前面的推导,还有下面两个式子成立

w=i=1Nαiyixiw=\sum_{i=1}^N\alpha_iy_ix_i

i=1Nαiyi=0\sum_{i=1}^N\alpha_iy_i=0

由此可知在α\alpha^*中,至少存在一个αj>0\alpha_j^*>0(反证法可以证明,若全为0,则 w=0w=0,矛盾),对此jj

yj(wxj+b)1=0y_j(w^*\cdot x_j+b^*)-1=0

因此可以得到

w=i=1Nαiyixiw^*=\sum_{i=1}^N\alpha_i^*y_ix_i

b=yji=1Nαjyi(xixj)b^*=y_j-\sum_{i=1}^N\alpha_j^*y_i(x_i\cdot x_j)

# 3.2.4 总结

  • 原问题

    minf(x)s.t.gi(x)0hj(x)=0min \ f(x)\\ s.t. \ g_i(x)\le 0\\h_j(x)=0

  • 拉格朗日函数

    L(x,α,β)=f(x)+αigi(x)+βjhj(x)L(x,\alpha,\beta)=f(x)+\sum\alpha_ig_i(x)+\sum\beta_jh_j(x)

  • 原函数有

    f(x)=maxα,βL(x,α,β)>L(x,α,β)f(x)=\max_{\alpha,\beta}L(x,\alpha,\beta)> L(x,\alpha^\prime,\beta^\prime)

  • 原问题

    minf(x)=minxmaxα,βL(x,α,β)min\ f(x)=\min_x\max_{\alpha,\beta}L(x,\alpha,\beta)

综合以上讨论,我们可以得到线性支持向量机学习算法如下:

输入:训练数据集T={(x1,y1),(x2,y2),,(xn,yn)}T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n)\},其中xiRn,yi{1,1},i=1,2,,Nx_i\in R^n,y_i\in\{1,-1\},i=1,2,\cdots,N

输出:分离超平面和分类决策函数

  • 选择惩罚参数C>0C>0,构造并求解凸二次规划问题

  • 构件模型

    minα12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαis.t.i=1Nαiyi=0αi0,i=1,2,,N\min_\alpha\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^N\alpha_i \\ s.t.\ \sum_{i=1}^N\alpha_iy_i=0 \\ \alpha_i\ge 0,i=1,2,\cdots,N

    得到最优解α=(α1,α2,,αN)T\alpha^*=(\alpha_1^*,\alpha_2^*,\cdots,\alpha_N^*)^T

  • 计算

    w=i=1Nαiyixiw^*=\sum_{i=1}^N\alpha_i^*y_ix_i

    选择α\alpha^*的一个分量αj\alpha_j^*,满足条件0<αj<C0<\alpha_j^*<C,计算

    b=yji=1Nαjyi(xixj)b^*=y_j-\sum_{i=1}^N\alpha_j^*y_i(x_i\cdot x_j)

  • 求分离超平面

# 3.2.5 SMO

(Sequential Minimal Optimazation)方法

上节最后得到的关于α\alpha的式子是一个二次规划问题,使用通用算法开销比较大。

SMO方法是1998年提出的,用于求取SVM中的拉格朗日乘子,比通用算法更加高效。

其主要思想为,选取两个变量αi,αj\alpha_i, \alpha_j,固定其他参数,对这两个参数进行优化,然后重复这个过程。

注意到只需选取的αi,αj\alpha_i,\alpha_j中有一个不满足KKT条件(6.13),目标函数就会在迭代后减小[Osuna et al., 1997].

直观来看, KKT条件违背的程度越大,则变量更新后可能导致的目标函数值减幅越大.

于是,SMO先选取违背KKT条.件程度最大的变量.第二个变量应选择-一个使目标函数值减小最快的变量,但由于比较各变量所对应的目标函数值减幅的复杂度过高,

因此SMO采用了一个启发式:使选取的两变量所对应样本之间的间隔最大.一种直观的解释是,这样的两个变量有很大的差别,与对两个相似的变量进行更新相比,对它们进行更新会带给目标函数值更大的变化.

# 3.3 软间隔支持向量机

参考文章

https://blog.csdn.net/liugan528/article/details/79448379
1

在现实任务中很难找到一个超平面将不同类别的样本完全划分开,即很难找到合适的核函数使得训练样本在特征空间中线性可分。退一步说,即使找到了一个可以使训练集在特征空间中完全分开的核函数,也很难确定这个线性可分的结果是不是由于过拟合导致的。解决该问题的办法是在一定程度上运行SVM在一些样本上出错,为此引入了“软间隔”(soft margin)的概念,如图4所示:

ellipse

具体来说,硬间隔支持向量机要求所有的样本均被最佳超平面正确划分,而软间隔支持向量机允许某些样本点不满足间隔大于等于1的条件yi(wxi+b)1y_i(wx_i+b)\ge 1,当然在最大化间隔的时候也要限制不满足间隔大于等于1的样本的个数使之尽可能的少。于是我们引入一个惩罚系数C>0C>0,并对每个样本点(xi,yi)(x_i,y_i)引入一个松弛变量(slack variables)ξ>0\xi>0 此时可将式(10)改写为

minw,b12(w2+Ci=1Nξi)s.t.yi(wxi+b)1ξi,i=1,2,,Nξi0\min_{w,b}\ \frac{1}{2}(||w||^2+C\sum_{i=1}^N\xi_i) \\ s.t. \ y_i(w\cdot x_i+b)\ge 1-\xi_i,i=1,2,\cdots,N \\ \xi_i\ge 0

上式中约束条件改为yi(wxi+b)1ξiy_i(w\cdot x_i+b)\ge 1-\xi_i,表示间隔加上松弛变量大于等于1;优化目标改为12(w2+Ci=1Nξi)\frac{1}{2}(||w||^2+C\sum_{i=1}^N\xi_i),表示对每个松弛变量都要有一个代价损失CξiC\xi_i,CC越大对误分类的惩罚越大、CC越小对误分类的惩罚越小。

最后得到的对偶问题是

maxαi=1nαi12i=1nj=1nαiαjyiyj(xixj)s.t.i=1Nαiyi=0,i=1,2,,n0αiC\max_{\alpha}\sum_{i=1}^n\alpha_i-\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n\alpha_i\alpha_jy_iy_j(x_i\cdot x_j) \\ s.t.\ \sum_{i=1}^N \alpha_iy_i=0,i=1,2,\cdots,n \\ 0\le \alpha_i\le C

对比软间隔支持向量机的对偶问题和硬间隔支持向量机的对偶问题可发现二者的唯一差别就在于对偶变量的约束不同,软间隔支持向量机对对偶变量的约束是0αiC0\le \alpha_i\le C,硬间隔支持向量机对对偶变量的约束是0αi0\le \alpha_i,于是可采用和硬间隔支持向量机相同的解法求解式(23)。同理在引入核方法之后同样能得到与式(23)同样的支持向量展开式。

类似式(16)对于软间隔支持向量机,KKT条件要求:

{αi0,μi0yi(wix+b)1+ξi0αi(yi(wx+b)1+ξi)=0ξ0,μiξi=0\begin{cases}\alpha_i\ge 0,\mu_i\ge 0 \\ y_i(w_i\cdot x+b)-1+\xi_i\ge 0 \\ \alpha_i(y_i(w\cdot x+b)-1+\xi_i)=0 \\ \xi\ge0,\mu_i\xi_i=0\end{cases}

# 3.4 低维到高维映射-核函数

# 3.4.1 线性不可分

非线性SVM算法原理

如何实现非线性呢??

  • 需要放松限制条件,对每个训练样本及标签加入松弛变量δ\delta

  • 改造后的支持向量机优化版本如下

    最小化w2+Ci=1Nδi12w2+Ci=1Nδi2\frac{}{}\mid\mid w\mid\mid^2+C\sum_{i=1}^N\delta_i 或\frac{1}{2}\mid\mid w\mid\mid^2+C\sum_{i=1}^N\delta_i^2

    限制条件1.δi0(i=1N)2.yi(WTXi+b)1δi(i=1N)1. \delta_i\ge 0(i=1\sim N)\\ 2. y_i(W^TX_i+b)\ge 1-\delta_i(i=1\sim N)

其中Ci=1NδiC\sum_{i=1}^N\delta_i 叫做正则项,意思为让整个目标函数规范化,CC是事先设定的参数。支持向量机需要改动的参数只有一个

# 3.4.2 基本概念

这是支持向量机求出来的解,显然是不符合要求的,问题出现哪里,是因为我们的函数是超平面,是线性的,线性模型的表现力的是不够的

image-20210712105322136

这是线性不可分的例子,我们不能做出线性的东西。

image-20210712105718152

这个时候呢?

该例子属于线性不可分,但如果我们定义二维至五维的映射ϕ(x),x=[ab],ϕ(x)=[a2b2abab]ϕ(x1)=[00000]ϕ(x2)=[11111]ϕ(x3)=[10100]ϕ(x4)=[01010]则线性可分,不难找出w=[11116],b=1对应的{wTϕ(x1)+b=1>0wTϕ(x2)+b=3>0wTϕ(x3)+b=1<0wTϕ(x4)+b=1<0线性可分该例子属于线性不可分,但如果我们定义二维至五维的映射\phi(x), x=\begin{bmatrix} a\\ b\end{bmatrix}, \phi (x)=\begin{bmatrix} a^2\\ b^2\\ a\\ b\\ ab\end{bmatrix} \\ 则 \phi (x_1)=\begin{bmatrix} 0\\ 0\\ 0\\ 0\\ 0\end{bmatrix} \phi (x_2)=\begin{bmatrix} 1\\ 1\\ 1\\ 1\\ 1\end{bmatrix} \phi (x_3)=\begin{bmatrix} 1\\ 0\\ 1\\ 0\\ 0\end{bmatrix} \phi (x_4)=\begin{bmatrix} 0\\ 1\\ 0\\ 1\\ 0\end{bmatrix} \\ 则线性可分,不难找出 w=\begin{bmatrix} -1\\ -1\\ -1\\ -1\\ 6\end{bmatrix},b=1 \\ 对应的 \begin{cases}w^T\phi(x_1)+b=1>0 \\ w^T\phi(x_2)+b=3>0 \\ w^T\phi(x_3)+b=-1<0 \\ w^T\phi(x_4)+b=-1<0 \end{cases} 线性可分

解法

对于ϕ(x)\phi(x)是无限维,我们可以不知道无限维映射ϕ(x)\phi(x)的显示表达,但是我们只要知道一个核函数K(x1,x2)=ϕ(x1)Tϕ(x2)K(x_1,x_2)=\phi(x_1)^T\phi(x_2),则这个优化式仍然可解

使用最多的核函数如下

满足条件

K(x1,x2)K(x_1,x_2)能够写成ϕ(x1)Tϕ(x2)\phi(x_1)^T\phi(x_2)的充要条件

1.k(x1,x2)=k(x2,x1)1.k(x_1,x_2)=k(x_2,x_1)

2.Ci,Xi(i=1N)2.\forall C_i,X_i(i=1\sim N),

i=1Nj=1NCiCjK(xi,xj)0\sum_{i=1}^N\sum{j=1}^NC_iC_jK(x_i,x_j)\ge 0

为什么会出现核函数,

  • 因为原始样本空间有可能并不是二维的,有可能是三维或者四维的。这样子呢,就不能够线性可分了,怎么办?,基于上面的解法,就是利用核函数变成高维特征空间使样本可分。

  • 把样本x 映射到高维空间后,维数可能很高,甚至是无穷维的,计算十分的复杂,为了避开这个这个障碍,就会使用核函数让xixj的内积x_i和x_j的内积变成核函数的值,大大减小计算量

# 3.4.3 常见的核函数

K(x1,x2)=(x1Tx2+1)dK(x_1,x_2)=(x_1^Tx_2+1)^d 这里dd表示多项式的阶数

名称 表达式 参数
拉普拉斯核 K(x1,x2)=ex1x2σ=ϕ(x1)Tϕ(x2)K(x_1,x_2)=e^{-\frac{\mid\mid x_1-x_2\mid\mid}{\sigma}}=\phi(x_1)^T\phi(x_2)
线性核 K(x1,x2)=x1Tx2K(x_1,x_2)=x^T_1x_2
高斯核 K(x1,x2)=ex1x222σ2=ϕ(x1)Tϕ(x2)K(x_1,x_2)=e^{-\frac{\mid\mid x_1-x_2\mid\mid^2}{2\sigma^2}}=\phi(x_1)^T\phi(x_2)
多项式核 K(x1,x2)=(x1Tx2+1)dK(x_1,x_2)=(x_1^Tx_2+1)^d 这里d 表示多项式的阶数
Tanh(Tanh核) K(x,y)=tanh(βxTy+b)tanh(x)=exexex+exK(x,y)=tanh(\beta x^Ty+b)\\ tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh为双曲正切函数

# 3.4.4 算法流程

image-20211112145936007

# 3.5 应用问题-兵王问题

黑方只剩一个网,白方剩一个兵一个王

只有两种可能

  • 白方将死黑方,获胜
  • 和棋
  • 这两种可能视三个棋子在棋盘的位置而确定

# 3.6 小结

# 3.6.1 优点

  • 有严格的数学理论支持,可解释性强,不依靠统计方法,从而简化了通常的分类和回归问题;
  • 能找出对任务至关重要的关键样本(即:支持向量);
  • 采用核技巧之后,可以处理非线性分类/回归任务;
  • 最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。

# 3.6.2 缺点

  • 训练时间长。当采用 SMO 算法时,由于每次都需要挑选一对参数,因此时间复杂度为 O(N2)O(N^2) ,其中 N 为训练样本的数量;

  • 当采用核技巧时,如果需要存储核矩阵,则空间复杂度为 O(N2)O(N^2)

  • 模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。

     因此支持向量机目前只适合小批量样本的任务,无法适应百万甚至上亿样本的任务