基础算法-支持向量机

一、简介

1 概述

支持向量机(Support Vector Machine,常简称为SVM)是一种监督式学习的方法,可广泛地应用于统计分类以及回归分析。支持向量机属于一般化线性分类器,这族分类器的特点是他们能够同时最小化经验误差与最大化几何边缘区,因此支持向量机也被称为最大边缘区分类器。

如上图所示,SVM的目的是寻找一个最优分割面,使得分类分类间隔最大化。而最优分割面求解原则可以大致归纳如下:

最优决策面能够容忍更多噪声—>所有样本与分割超平面的距离尽可能远—>最差的样本(离分割超平面最近的样本)与分割超平面的距离要尽可能远。

2 数学建模

以上简单概括了SVM工作的大致思路,下面要进一步求解“决策面”,也就是最优化。在这个最优化问题中,目标函数对应的是“分类间隔”,而优化对象则是决策面。

(1)决策面方程(超平面方程)

将二维空间直线y = ax + b进行转换和向量化,可得

其中向量w和x分别为:

向量化后的w和r几何意义分别是原直线的法向量和截距。

将上式推广到n维空间就变成了超平面方程(一个超平面,在二维空间的例子就是一个直线),而且公式没有变,只是

(2)“分类间隔”方程

由图可知间隔的大小实际上就是支持向量对应的样本点到决策面的距离的二倍。而

公式中的直线方程为Ax0+By0+C=0,点P的坐标为(x0,y0)。

将直线方程扩展到多维,求得我们现在的超平面方程,对公式进行如下变形:

这个d就是"分类间隔"。其中||w||表示w的二范数,求所有元素的平方和,然后再开方。因此

目的是为了找出一个分类效果好的超平面作为分类器。分类器的好坏的评定依据是分类间隔W=2d的大小,即分类间隔w越大,我们认为这个超平面的分类效果越好。此时,求解超平面的问题就变成了求解分类间隔W最大化的为题。W的最大化也就是d最大化的。

(3)约束条件

获得目标函数的数学形式之后,需要将约束条件用数学语言进行描述。即如何判断超平面是否将样本点正确分类?以及怎么在众多的点中选出支持向量上的点?

首先如果完全正确分类,会满足

如果我们目标是求解中轴线上的决策面,并且相应的支持向量对应的样本点到决策面的距离为d,代入整理并简化,最终可得SVM最优化问题的约束条件

(4)线性SVM优化问题基本描述

得到我们的目标函数,我们的目标是d最大化。

而支持向量上的样本点满足

因此可以将目标函数进一步简化,

随后我们求解d的最大化问题变成了||w||的最小化问题

上述等效是为了求导方便,并不影响求解过程。因此,将最终的目标函数和约束条件放在一起进行描述:

上述公式描述的是一个典型的不等式约束条件下的二次型函数优化问题,同时也是支持向量机的基本数学模型。

(5)求解准备

最优化前提是目标函数必须是凸函数,其几何意义表示为函数任意两点连线上的值大于对应自变量处的函数值。其中根据凸集L的定义域,可以分为局部凸和全局凸

而我们的目标函数是凸函数,因此可以采用下面几种方法求解。

通常我们需要求解的最优化问题有如下几类:

· 无约束优化问题,可以写为:

· 有等式约束的优化问题,可以写为:

· 有不等式约束的优化问题,可以写为:

对于第(a)类的优化问题,尝试使用的方法就是费马大定理(Fermat),即使用求取函数f(x)的导数,然后令其为零,可以求得候选最优值,再在这些候选值中验证;如果是凸函数,可以保证是最优解。这也就是我们高中经常使用的求函数的极值的方法。

对于第(b)类的优化问题,常常使用的方法就是拉格朗日乘子法(Lagrange Multiplier) ,即把等式约束h_i(x)用一个系数与f(x)写为一个式子,称为拉格朗日函数,而系数称为拉格朗日乘子。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值。

对于第(c)类的优化问题,常常使用的方法就是KKT条件。同样地,我们把所有的等式、不等式约束与f(x)写为一个式子,也叫拉格朗日函数,系数也称拉格朗日乘子,通过一些条件,可以求出最优值的必要条件,这个条件称为KKT条件。

因此,求解最优化问题前,还需要学习拉格朗日函数和KKT条件

(6)拉格朗日函数

使用拉格朗日方程的目的,它将约束条件放到目标函数中,从而将有约束优化问题转换为无约束优化问题,并使用拉格朗日对偶优化求解过程。

公式变形如下:

问题变成了求解新目标函数的最小值

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

而我们要的解是d = p,而满足这个条件,首先必须是凸优化问题,同时要满足KKT条件。

(7)KKT条件

KKT条件的全称是Karush-Kuhn-Tucker条件,KKT条件是说最优值条件必须满足以下条件:

条件一:经过拉格朗日函数处理之后的新目标函数L(w,b,α)对x求导为零:

条件二:h(x) = 0;

条件三:α*g(x) = 0;

可证以上条件均满足,详细证明过程见参考。现在,凸优化问题和KKT都满足了,问题转换成了对偶问题。而求解这个对偶学习问题,可以分为三个步骤:首先要让L(w,b,α)关于w和b最小化,然后求对α的极大,最后利用SMO算法求解对偶问题中的拉格朗日乘子。

(8)SMO算法

SM表示序列最小化(Sequential Minimal Optimizaion),目标是将大优化问题分解为多个小优化问题来求解的。这些小优化问题往往很容易求解,并且对它们进行顺序求解的结果与将它们作为整体来求解的结果完全一致的。在结果完全相同的同时,SMO算法的求解时间短很多。

SMO算法的目标是求出一系列alpha和b,一旦求出了这些alpha,就很容易计算出权重向量w并得到分隔超平面。

SMO算法的工作原理是:每次循环中选择两个alpha进行优化处理。一旦找到了一对合适的alpha,那么就增大其中一个同时减小另一个。这里所谓的"合适"就是指两个alpha必须符合以下两个条件,条件之一就是两个alpha必须要在间隔边界之外,而且第二个条件则是这两个alpha还没有进行过区间化处理或者不在边界上。

3 非线性SVM

在线性不可分的情况下,SVM通过某种事先选择的非线性映射(核函数)将输入变量映到一个高维特征空间,将其变成在高维空间线性可分,在这个高维空间中构造最优分类超平面。

对于线性不可分,我们使用一个非线性映射,将数据映射到特征空间,在特征空间中使用线性学习器,分类函数变形如下:

建立非线性学习器分为两步:首先使用一个非线性映射将数据变换到一个特征空间F;然后在特征空间使用线性学习器分类。

使用核函数后,可以在低维特征空间中直接计算内积 <ϕ(xi),ϕ(x)>,简化求解过程。

径向基核函数采用向量作为自变量的函数,能够基于向量举例运算输出一个标量。径向基核函数的高斯版本的公式如下:

σ是用户自定义的用于确定到达率(reach)或者说函数值跌落到0的速度参数。通过调控参数σ,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。

二、代码实战

三、SVM的优缺点

3.1 优点

- 可用于线性/非线性分类,也可以用于回归,泛化错误率低,也就是说具有良好的学习能力,且学到的结果具有很好的推广性。

- 可以解决小样本情况下的机器学习问题,可以解决高维问题,可以避免神经网络结构选择和局部极小点问题。

- SVM是最好的现成的分类器,现成是指不加修改可直接使用。并且能够得到较低的错误率,SVM可以对训练集之外的数据点做很好的分类决策。

3.2 缺点

- 对参数调节和和函数的选择敏感。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值