2.3 SVM算法原理

学习目标

  • 知道SVM中线性可分支持向量机
  • 知道SVM中目标函数的推导过程
  • 了解朗格朗日乘子法、对偶问题
  • 知道SVM中目标函数的求解过程

1 定义输入数据

假设给定一个特征空间上的训练集为:

image-20190812224849027

其中,(xi,yi)(x_i,y_i)称为样本点。

  • xix_i为第i个实例(样本),

  • yiy_ixix_i的标记:

    • yi=1y_i=1时,xix_i为正例
    • yi=1y_i=-1时,xix_i为负例

至于为什么正负用(-1,1)表示呢?

其实这里没有太多原理,就是一个标记,你也可以用(2,-3)来标记。只是为了方便,yi/yj=yiyjy_i/y_j=y_i*y_j的过程中刚好可以相等,便于之后的计算。)

2 线性可分支持向量机

给定了上面提出的线性可分训练数据集,通过间隔最大化得到分离超平面为 :y(x)=wTΦ(x)+by(x)=w^T\Phi(x)+b

相应的分类决策函数为: f(x)=sign(wTΦ(x)+b)f(x)=sign(w^T\Phi(x)+b)

以上决策函数就称为线性可分支持向量机。

这里解释一下Φ(x)\Phi(x)这个东东。

这是某个确定的特征空间转换函数,它的作用是将x映射到更高的维度,它有一个以后我们经常会见到的专有称号”核函数“

比如我们看到的特征有2个:

x1,x2x1,x2,组成最先见到的线性函数可以是w1x1+w2x2w_1x_1+w_2x_2.

但也许这两个特征并不能很好地描述数据,于是我们进行维度的转化,变成了w1x1+w2x2+w3x1x2+w4x12+w5x22w_1x_1+w_2x_2+w_3x_1x_2+w_4x_1^2+w_5x_2^2.

于是我们多了三个特征。而这个就是笼统地描述x的映射的。

最简单直接的就是:Φ(x)=x\Phi(x)=x

以上就是线性可分支持向量机的模型表达式。我们要去求出这样一个模型,或者说这样一个超平面y(x),它能够最优地分离两个集合。

其实也就是我们要去求一组参数(w,b),使其构建的超平面函数能够最优地分离两个集合。

如下就是一个最优超平面:

image_1b1tqf5qo1s6r1hhq14ct1dfu5d12a.png-231.8kB

又比如说这样:

image_1b1tqguiaj4p1i7m1u9j10t11mds2n.png-69.3kB

阴影部分是一个“过渡带”,“过渡带”的边界是集合中离超平面最近的样本点落在的地方。

3 SVM的计算过程与算法步骤

3.1 推导目标函数

我们知道了支持向量机是个什么东西了。现在我们要去寻找这个支持向量机,也就是寻找一个最优的超平面。

于是我们要建立一个目标函数。那么如何建立呢?

再来看一下我们的超平面表达式: y(x)=wTΦ(x)+by(x)=w^T\Phi(x)+b

为了方便我们让:Φ(x)=x\Phi(x)=x

则在样本空间中,划分超平面可通过如下线性方程来描述:wTx+b=0w^Tx+b=0

  • 我们知道image-20190814214644095为法向量,决定了超平面的方向;

  • b为位移项,决定了超平面和原点之间的距离。

  • 显然,划分超平面可被法向量w和位移b确定,我们把其记为(w,b).

样本空间中任意点x到超平面(w,b)的距离可写成

image-20190814141310502

假设超平面(w, b)能将训练样本正确分类,即对于(xi,yi)D(x_i, y_i)\in D

  • yi=+1y_i=+1,则有wTxi+b>0w^Tx_i+b>0;
  • yi=1y_i=-1,则有wTxi+b<0w^Tx_i+b<0;

image-20190814141642787

如图所示,距离超平面最近的几个训练样本点使上式等号成立,他们被称为“支持向量",

两个异类支持向量到超平面的距离之和为:img

它被称为“”间隔“”。

image-20190814141836897

欲找到具有最大间隔的划分超平面,也就是要找到能满足下式中约束的参数w和b,使得γ\gamma最大。

image-20190814141642787

即:

img

显然,为了最大化间隔,仅需要最大化img,这等价于最小化img。于是上式可以重写为:

img

这就是支持向量机的基本型。

拓展:什么是w||w||?

链接:向量与矩阵的范数

3.2 目标函数的求解

到这一步,终于把目标函数给建立起来了。

那么下一步自然是去求目标函数的最优值.

因为目标函数带有一个约束条件,所以我们可以用拉格朗日乘子法求解

3.2.1 朗格朗日乘子法

啥是拉格朗日乘子法呢?

拉格朗日乘子法 (Lagrange multipliers)是一种寻找多元函数在一组约束下的极值的方法.

通过引入拉格朗日乘子,可将有 d 个变量与 k 个约束条件的最优化问题转化为具有 d + k 个变量的无约束优化问题求解。

朗格朗日乘子法举例复习


经过朗格朗日乘子法,我们可以把目标函数转换为:

image_1b1tslnd0jn516gai3end5rmj5e.png-8.9kB

其中,上式后半部分:

image-20200121010844799

走到这一步,这个目标函数还是不能开始求解,现在我们的问题是极小极大值问题

3.2.2 对偶问题

我们要将其转换为对偶问题,变成极大极小值问题:

image-20200121003450541 变为:image-20200121011050862

参考资料:https://wenku.baidu.com/view/7bf945361b37f111f18583d049649b6649d70975.html

如何获取对偶函数?

  • 首先我们对原目标函数的w和b分别求导:
    • 原目标函数:image_1b1vjnneag2c1o0esh21520kn69.png-9.6kB
    • 对w求偏导: image_1b1vjp8611tvc1717jb52is1c6jm.png-10.4kB
    • 对b求偏导: image_1b1vjqegou181f94117j371cq21a.png-8.1kB
  • 然后将以上w和b的求导函数重新代入原目标函数的w和b中,得到的就是原函数的对偶函数:

image_1b1vk20iq3vc14ld17p51a1v1tq72h.png-40.6kB

  • 这个对偶函数其实求的是:image-20200121011355571中的minL(w,b)minL(w,b)部分(因为对w,b求了偏导)。

  • 于是现在要求的是这个函数的极大值max(a),写成公式就是:

image-20200121011505169

  • 好了,现在我们只需要对上式求出极大值α\alpha,然后将α\alpha代入w求偏导的那个公式:

image-20200204105305071

  • 从而求出w.

  • 将w代入超平面的表达式,计算b值;

  • 现在的w,b就是我们要寻找的最优超平面的参数。

3.2.3 整体流程确定

我们用数学表达式来说明上面的过程:

  • 1)首先是求image_1b1vl4efr1in9ie51i3oji91k443q.png-4.5kB的极大值。即:

image-20200204111208245

注意有两个约束条件。

  • 对目标函数添加符号,转换成求极小值:

image-20200204111226729

  • 2)计算上面式子的极值求出α\alpha^*;

  • 3)将α\alpha^*代入,计算w,b

image-20200204111316675

  • 4)求得超平面:

image_1b1vld5fhblkn2j1c7h1nk1pc66e.png-5.3kB

  • 5)求得分类决策函数:

image_1b1vldujb18mb1g5ch8uoikios6r.png-8.2kB

4 举例

给定3个数据点:正例点x1=(3,3),x2=(4,3)x1=(3,3),x2=(4,3),负例点x3=(1,1)x3=(1,1),求线性可分支持向量机。 三个点画出来:

image_1b1vpnodb1b799lo8l2e23122h78.png-10.7kB

1) 首先确定目标函数

image-20190813200353530

2) 求得目标函数的极值

  • 原式:image-20200204101525358
  • 把数据代入:image-20200204101623739
  • 由于:image-20200204101715362
  • 化简可得:image-20200204101738823

  • α1,α2\alpha_1,\alpha_2 求偏导并令其为0,易知s(α1,α2)s(\alpha_1,\alpha_2)在点(1.5, -1)处取极值。

  • 而该点不满足条件α2>=0\alpha_2>=0,所以,最小值在边界上达到。

    • α1=0\alpha_1=0时,最小值s(0,213)=213=0.1538s(0,\frac{2}{13})=-\frac{2}{13}=-0.1538
    • α2=0\alpha_2=0时,最小值s(14,0)=14=0.25s(\frac{1}{4},0)=-\frac{1}{4}=-0.25
  • 于是,s(α1,α2)s(\alpha_1,\alpha_2)α1=0,α2=0\alpha_1=0, \alpha_2=0时达到最小,此时:

    • α3=α1+α2=14\alpha_3 = \alpha_1+\alpha_2 = \frac{1}{4}

3) 将求得的极值代入从而求得最优参数w,b

  • α1=α3=14\alpha_1 = \alpha_3 = \frac{1}{4}对应的点x1,x3x_1,x_3就是支持向量机
  • 代入公式:
    • α\alpha结果代入求解:image-20200204105534190
    • image-20200204105634306
    • 平面方程为:0.5x1+0.5x22=00.5x_1+0.5x_2-2=0

4) 因此得到分离超平面为

  • 0.5x1+0.5x22=00.5x_1+0.5x_2-2=0

5) 得到分离决策函数为:

  • f(x)=sign(0.5x1+0.5x22)f(x)=sign(0.5x_1+0.5x_2-2)

ps:参考的另一种计算方式: https://blog.csdn.net/zhizhjiaodelaoshu/article/details/97112073


3 小结

  • SVM中目标函数

    • img
  • SVM中目标函数的求解过程

    • 1)首先是求image_1b1vl4efr1in9ie51i3oji91k443q.png-4.5kB的极大值。即:

    image-20200204111208245

    注意有两个约束条件。

    • 对目标函数添加符号,转换成求极小值:

    image-20200204111226729

    • 2)计算上面式子的极值求出α\alpha^*;

    • 3)将α\alpha^*代入,计算w,b

    image-20200204111316675

    • 4)求得超平面:

    image_1b1vld5fhblkn2j1c7h1nk1pc66e.png-5.3kB

    • 5)求得分类决策函数:

    image_1b1vldujb18mb1g5ch8uoikios6r.png-8.2kB