SVM——(二)线性可分之目标函数推导方法2

这是接着上一篇文章(方法1)整理的第二种推导方法。这是从另外一个点来思考如何求得目标优化函数,建议两种都看一下。这样能理解得更加透彻。

0.引言

什么是支持向量机(Support Vector Machine)? 我们需要明确的是:支持向量机它是一种算法,用来寻找一个“最佳”超平面。(直线也是超平面)

如下图所示:

这里写图片描述

那条线算是“最佳”超平面呢?直觉告诉你是中间红色这一条。事实上也是,因为其两侧离它最近的点的距离最大,且两侧距离的绝对值相等。同时我们称两侧平面上的样本点为支持向量(support vector)。那我们又该如何来找到这个超平面呢?

1.间隔的度量方式

1.1 超平面的表达

在谈距离之前,我们先把超平面的表达式给写出来:

w T x + b = 0 (1) w^Tx+b=0\tag{1} wTx+b=0(1)

其中 b b b表示截距(形式同 y = k x + b y=kx+b y=kx+b);另一个需要说明的就是,我们在SVM中,用 y = + 1 , y = − 1 y=+1,y=-1 y=+1,y=1分别来表示positive point和negative point;之所以这样做,其一是因为历史原因(可能是惯例),其二(后面会提到)

从上面的表达式我们知道,知道找到参数 w , b w,b w,b,也就代表确立了超平面。那么应该从哪个地方入手呢? 当然就是从SVM的核心思想:最大化间隔(gap) 入手。

1.2 函数间隔(functional margin)

上面说到SVM的核心思想就是最大化间隔,既然是最大化间隔,那总该得有个度量间隔的量。我们知道,当超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0确定后, ∣ w T x + b ∣ |w^Tx+b| wTx+b可以相对的来表示每个样本点到超平面的距离,也就是说虽然实际距离不是 ∣ w T x + b ∣ |w^Tx+b| wTx+b这么多,但是依旧遵循绝对值大的离超平面更远的原则。如下图:

这里写图片描述
直线方程为: x 1 + x 2 − 3 = 0 , A , B 分 别 为 正 负 样 本 , 即 y A = + 1 , y B = − 1 点A到直线的相对距离 ∣ w T x + b ∣ = ∣ 2 + 3 − 3 ∣ = 2 点B到直线的相对距离 ∣ w T x + b ∣ = ∣ 1 + 1 − 3 ∣ = 1 \begin{aligned} &\text{直线方程为:}x_1+x_2-3=0,A,B分别为正负样本,即y^A=+1,y^B=-1\\[2ex] &\text{点A到直线的相对距离}|w^Tx+b|=|2+3-3|=2\\[2ex] &\text{点B到直线的相对距离}|w^Tx+b|=|1+1-3|=1 \end{aligned} 直线方程为:x1+x23=0,A,ByA=+1,yB=1A到直线的相对距离wTx+b=2+33=2B到直线的相对距离wTx+b=1+13=1

我们可以注意到,只要分类正确, y ( i ) ( w T x + b ) > 0 y^{(i)}(w^Tx+b)>0 y(i)(wTx+b)>0就成立;或者说如果 y ( i ) ( w T x + b ) > 0 y^{(i)}(w^Tx+b)>0 y(i)(wTx+b)>0,就意味着分类正确;且其值越大,说明其分类正确的可信度就越高。而这也是 y y y为什么取 ± 1 \pm1 ±1的第二个原因。所以此时我们将训练集中所有样本点到超平面的**函数间隔(functional margin)**定义为如下:
γ ^ ( i ) = y ( i ) ( w T x ( i ) + b ) (02) \hat{\gamma}^{(i)}=y^{(i)}(w^Tx^{(i)}+b)\tag {02} γ^(i)=y(i)(wTx(i)+b)(02)
且定义训练集到超平面的函数间隔为其中的最小值:
γ ^ = min ⁡ i = 1 , 2... m γ ^ (03) \hat{\gamma}=\min_{i=1,2...m}\hat{\gamma}\tag{03} γ^=i=1,2...mminγ^(03)

但是我们发现,如果同时在方程 ( 01 ) (01) (01)的两边乘以 k ( k ≠ 0 ) k(k\neq0) k(k=0);虽然此时超平并没有发生改变,但是相对距离却变成了之前的k倍,所以仅有函数间隔明显是不够的,还要引入另外一种度量方式,几何间隔。

1.2几何间隔

如下图所示,所谓几何间隔(geometric margins),就是样本点到直线实实在在的距离,只要直线不发生改变,那么间隔就不会发生任何改变;这样就避免了在函数间隔中所遇到的问题。

这里写图片描述

那么应该如何来表示几何间隔呢?

这里写图片描述

如图所示,直线方程为 w T x + b = 0 w^Tx+b=0 wTx+b=0,A为数据集中任意一个点 x ( i ) x^{(i)} x(i) γ ( i ) \gamma^{(i)} γ(i)为A到直线的距离,可以看成是向量 B A ⃗ \vec{BA} BA 的模; W W W为垂直于 w T x + b = 0 w^Tx+b=0 wTx+b=0的法向量。此时我们可以得到点B的坐标为:
x ( i ) − γ ( i ) ⋅ W ∣ ∣ W ∣ ∣ (04) x^{(i)}-\gamma^{(i)}\cdot\frac{W}{||W||}\tag{04} x(i)γ(i)WW(04)

又因为B点在直线上,所以满足:
w T ( x ( i ) − γ ( i ) ⋅ W ∣ ∣ W ∣ ∣ ) + b = 0 (05) w^T(x^{(i)}-\gamma^{(i)}\cdot\frac{W}{||W||})+b=0\tag{05} wT(x(i)γ(i)WW)+b=0(05)
因此我们可以通过化简得到几何距离的计算公式,但问题在于 W W W该怎么得到?其实 W W W就是 w w w。假设有一直线 w T x + b = 0 , w = ( w 1 , w 2 ) T w^Tx+b=0,w=(w_1,w_2)^T wTx+b=0,w=(w1,w2)T,(即: w 1 x 1 + w 2 x 2 + b = 0 w_1x_1+w_2x_2+b=0 w1x1+w2x2+b=0)那么该直线的斜率 k 1 = − w 1 / w 2 k_1=-w_1/w_2 k1=w1/w2,又因为 W W W垂直于直线,所以 W W W的斜率为 k 2 = w 2 / w 1 k_2=w_2/w_1 k2=w2/w1。因此 W W W的方向向量为 ( 1 , k 2 ) (1,k_2) (1,k2),再同时乘以 w 1 w_1 w1即可得到 W = ( w 1 , w 2 ) = w W=(w_1,w_2)=w W=(w1,w2)=w

也就是说:若直线斜率为k,则他的一个方向向量为 a ⃗ = ( 1 , k ) \vec{a} =(1,k) a =(1,k),证明见此处

所以有:
w T ( x ( i ) − γ ( i ) ⋅ w ∣ ∣ w ∣ ∣ ) + b = 0 (06) w^T\large(x^{(i)}-\gamma^{(i)}\cdot\frac{w}{||w||})+b=0\tag{06} wT(x(i)γ(i)ww)+b=0(06)
γ ( i ) = w T x ( i ) + b ∣ ∣ w ∣ ∣ = ( w ∣ ∣ w ∣ ∣ ) T x ( i ) + b ∣ ∣ w ∣ ∣ (07) \gamma^{(i)}=\frac{w^Tx^{(i)}+b}{||w||}=\large(\frac{w}{||w||})^Tx^{(i)}+\frac{b}{||w||}\tag{07} γ(i)=wwTx(i)+b=(ww)Tx(i)+wb(07)

如图:

这里写图片描述

直线方程为: x 1 + x 2 − 3 = 0 x_1+x_2-3=0 x1+x23=0,A为正样本,B为负样本,即 y A = + 1 , y B = − 1 y^A=+1,y^B=-1 yA=+1,yB=1

则:
γ A = ( w ∣ ∣ w ∣ ∣ ) T x ( A ) + b ∣ ∣ w ∣ ∣ = ( ( 1 , 1 ) 1 + 1 ) T ( 2 , 3 ) + − 3 1 + 1 = 2 γ B = ( w ∣ ∣ w ∣ ∣ ) T x ( A ) + b ∣ ∣ w ∣ ∣ = ( ( 1 , 1 ) 1 + 1 ) T ( 1 , 1 ) + − 3 1 + 1 = − 1 2 \begin{aligned} \gamma^A=\large(\frac{w}{||w||})^Tx^{(A)}+\frac{b}{||w||}=(\frac{(1,1)}{\sqrt{1+1}})^T(2,3)+\frac{-3}{\sqrt{1+1}}=\sqrt{2}\\[2ex] \gamma^B=\large(\frac{w}{||w||})^Tx^{(A)}+\frac{b}{||w||}=(\frac{(1,1)}{\sqrt{1+1}})^T(1,1)+\frac{-3}{\sqrt{1+1}}=\frac{-1}{\sqrt{2}} \end{aligned} γA=(ww)Tx(A)+wb=(1+1 (1,1))T(2,3)+1+1 3=2 γB=(ww)Tx(A)+wb=(1+1 (1,1))T(1,1)+1+1 3=2 1

此时我们发现,这是一个有符号的距离:正样本到直线的距离为正;负样本到直线的距离为负。但无论如何,同函数间隔一样只要是分类正确的情况下都满足 y ( i ) ⋅ γ ( i ) > 0 y^{(i)}\cdot\gamma^{(i)}>0 y(i)γ(i)>0,同样,我们将数据集中所有样本点到平面的**几何间隔(Geometric margin)**定义为如下形式:
γ ( i ) = y ( i ) ( ( w ∣ ∣ w ∣ ∣ ) T x ( i ) + b ∣ ∣ w ∣ ∣ ) (08) \gamma^{(i)}=y^{(i)}\large(\large(\frac{w}{||w||})^Tx^{(i)}+\frac{b}{||w||}\tag{08}) γ(i)=y(i)((ww)Tx(i)+wb)(08)
且定义训练集到超平面的几何间隔为其中的最小值:
γ = min ⁡ i = 1 , . . . m γ ( i ) (09) \gamma=\min_{i=1,...m}\gamma^{(i)}\tag{09} γ=i=1,...mminγ(i)(09)

同时,我们还可以发现函数间隔同几何间隔存在以下关系:

1.  if  ∣ ∣ w ∣ ∣ = 1 , γ ^ = γ ; (10) \begin{aligned} 1.&\text{ if }||w||=1,\hat{\gamma}=\gamma;\tag{10}\\[2ex] \end{aligned} 1. if w=1,γ^=γ;(10)

2. γ = γ ^ ∣ ∣ w ∣ ∣ (11) \begin{aligned} 2.&\gamma=\frac{\hat{\gamma}}{||w||}\tag{11} \end{aligned} 2.γ=wγ^(11)

此时我们已经有了对于间隔度量的方式,所以下一步自然就是最大化这个间隔来求得平面。

2.最大间隔分类器

什么是最大间隔分类器(Maximum margin classifiers) 呢?上面我们说到有了间隔的度量方式之后,接着就是最大化这一间隔,然后求得超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0。然后通过函数 g ( w T x + b ) g(w^Tx+b) g(wTx+b)将所有样本点输出只含 { − 1 , + 1 } \{-1,+1\} {1,+1}的值,以此来对数据集进行分类。而 g ( w T x + b ) g(w^Tx+b) g(wTx+b)就是一个分类器,又因为是通过最大化几何间隔得来的,故将其称之为最大间隔分类器。

从上面的公式(09)我们得到了数据集到平面的几何间隔,然后再最大化几何间隔,即:
max ⁡ w , b γ s . t .      y ( i ) ( ( w ∣ ∣ w ∣ ∣ ) T x ( i ) + b ∣ ∣ w ∣ ∣ ) ≥ γ , i = 1 , 2 , . . . m (12) \begin{aligned} &\max_{w,b} \gamma\\[1ex] &s.t.\;\;y^{(i)}\large(\large(\frac{w}{||w||})^Tx^{(i)}+\frac{b}{||w||})\geq\gamma,i=1,2,...m\tag{12} \end{aligned} w,bmaxγs.t.y(i)((ww)Tx(i)+wb)γ,i=1,2,...m(12)
式子(12)的含义就是找到参数 w , b , γ w,b,\gamma w,b,γ,使得满足以下条件:

  1. γ \gamma γ尽可能大,因为目的就是最大化 γ \gamma γ;
  2. 同时要使得样本中所有的几何距离都大于 γ \gamma γ,因为由(09)可以知道 γ \gamma γ是是所有间隔中的最小值;

怎么直接解决上面这个优化问题? 当然我也不知道能还是不能,至少按照主流的SVM推导过程,不是这样做的。当然,我最后用到的方式肯定也和和主流方式一样,只是我换了一个叙述方式(顺序),使得大家(至少是我自己)更能接受一点。

既然不能直接优化,那我们不妨再次回顾一下SVM的思想“最大化(几何)间隔”。什么意思?或者说最大化的前提是什么?可能你已经想到了。当然得先确定平面(不论是否为最佳平面),然后才能度量样本点到平面的间隔。

所以,由函数间隔与几何间隔的关系 ( 11 ) (11) (11)我们可以得出以下优化问题:
max ⁡ w , b γ ^ ∣ ∣ w ∣ ∣ s . t .      y ( i ) ( w T x ( i ) + b ) ≥ γ ^ , i = 1 , 2 , . . . m (13) \begin{aligned} &\max_{w,b} \frac{\hat{\gamma}}{||w||}\\[1ex] &s.t.\;\;y^{(i)}\large(w^Tx^{(i)}+b)\geq\hat{\gamma},i=1,2,...m\tag{13} \end{aligned} w,bmaxwγ^s.t.y(i)(wTx(i)+b)γ^,i=1,2,...m(13)

此时我们发现,约束条件几何间隔依然变成了函数间隔,准确说应该既是函数间隔同样也是几何间隔。既然可以看做函数间隔,那么令 γ ^ = 1 \hat{\gamma}=1 γ^=1自然也不会影响最终的优化结果(原因戳此处

所以上述优化问题(13)就可以转化为如下形式:
max ⁡ w , b 1 ∣ ∣ w ∣ ∣ s . t .      y ( i ) ( w T x ( i ) + b ) ≥ 1 , i = 1 , 2 , . . . m (14) \begin{aligned} &\max_{w,b} \frac{1}{||w||}\\[1ex] &s.t.\;\;y^{(i)}\large(w^Tx^{(i)}+b)\geq1,i=1,2,...m\tag{14} \end{aligned} w,bmaxw1s.t.y(i)(wTx(i)+b)1,i=1,2,...m(14)

但是对于这样一个优化问题(14),我们还是无法直接解决。我们知道,对于 f ( x ) > 0 f(x)>0 f(x)>0, max ⁡ f ( x )    ⟺    min ⁡ 1 f ( x )    ⟺    min ⁡ 1 ( f ( x ) ) n \max f(x)\iff \min\frac{1}{f(x)}\iff \min \frac{1}{(f(x))^n} maxf(x)minf(x)1min(f(x))n1三者求解出的 x x x都相同。所以可以进一步化简为:

min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t .      y ( i ) ( w T x ( i ) + b ) ≥ 1 , i = 1 , 2 , . . . m (15) \begin{aligned} &\min_{w,b} \frac{1}{2}{||w||^2}\\[1ex] &s.t.\;\;y^{(i)}\large(w^Tx^{(i)}+b)\geq1,i=1,2,...m\tag{15} \end{aligned} w,bmin21w2s.t.y(i)(wTx(i)+b)1,i=1,2,...m(15)

之所以要进行这样的处理,是因为我们可以将其转换为凸优化问题,用现有的方法求解。(前面在乘以 1 2 \frac{1}{2} 21是为了后面求导的时候能更方便,同时这也不会影响优化结果)

到这一步就可以用现有(off-the-shelf)的QP(quadratic programming)软件求解出 w , b w,b w,b。下面是介绍求解的算法。

SVM——(七)SMO(序列最小最优算法)
SVM——(六)软间隔目标函数求解
SVM——(五)线性不可分之核函数
SVM——(四)目标函数求解
SVM——(三)对偶性和KKT条件(Lagrange duality and KKT condition)
SVM——(二)线性可分之目标函数推导方法2
SVM——(一)线性可分之目标函数推导方法1

参考:

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页