机器学习算法之 支持向量机( SVM )之SMO方法

 本文记录最成功的监督机器学习算法之一,支持向量机SVM(Support VectorMachines)之SMO(Sequential Minimal

Optimization)序列最小化算法算法。

过程中处了图书,参考了不少csdn博客,整理下整个过程记的理解,包括推理、迭代、代码等

1、SVM原理简述


 如下图,两种类型数据点可以通过一条直线分开,叫做线性可分。如果数据点为二维分割线为一条直线,三维的一个

平面,更高维平面上就会是其他的分界表现形式,将这个分界称为超平面(hyper plane)。
在这里插入图片描述

 线性分类器的学习目标便是要在n维的数据空间中找到一个分界使得数据可以分成两类,即寻找最佳分隔超平面,找到离超

平面距离最近的那些点,这些点称作为支持向量,再从这些点到分隔面的距离最大化。就是寻找最佳分隔面。

 分隔超平面表示为 Wtx+b=0( w为法向量,x为数据点,b为常数) 当Wtx+b >0 时对应数据类型1,Wt*x+b >0 时对应数据

类型-1,等于0时落再分隔面上不能区分了。

 怎么确定最佳分隔超平面,下面以以二维平面为例,看看SVM的原理。如下图,不难发现能够实现分类的超平面(二维平面

上就是一条直线)会有很多条,如何确定哪个是最优超平面呢?直观而言,最优超平面应该是最适合分开两类数据的直线。而判定

“最适合”的标准就是这条直线距直线两边最近数据的间隔最大,也就是“使样本中离超平面最近的点到超平面的距离最远”–最大间隔。

所以,得寻找有着“最大间隔”的超平面。下面的问题是–如何求“最大间隔”
在这里插入图片描述

2、寻找最大间隔

在这里插入图片描述
 在超平面wx+b=0确定的情况下,|wx+b|能够表示点x到距离超平面的远近,而通过观察w*x+b的符号与类标记y的符号是否一致

可判断分类是否正确(这是为什么类别标签采用+1和-1,而不是不是0和1的原因,除了这个下面会看到采用+1和-1后我们可以统一的

公式来表示数据点到分隔面的距离),所以,可以用(y*(w*x+b))的正负性来判定或表示分类的正确性。于此,我们便引出了函数间隔

(functional margin)的概念。

定义函数间隔为:
在这里插入图片描述
再假设
在这里插入图片描述
在这里插入图片描述为T中所有样本点(xi,yi)中具有最小距离的数据点,而

这些数据点也就是前面提到支持向量。为什么定义这个后面再讲。

 但这样定义的函数间隔有问题,即如果成比例的改变w和b(如将它们改成2w和2b),则函数间隔的值f(x)却变成了原来的2倍(

虽然此时超平面没有改变),所以只有函数间隔还远远不够。

几何间隔

 几何间隔可以|WtA +b|/||W||来表示,推导过程

假定对于一个点 x ,令其垂直投影到超平面上的对应点为 x0 ,w 是垂直于超平面的一个向量,为样本x到分类间隔的距离,如下图所示:
在这里插入图片描述
在这里插入图片描述,||w||^2=wT*w,是w的二阶泛数。
又由于 x0是超平面上的点,满足 f(x0)=0 ,代入超平面的方程在这里插入图片描述即可算出:
在这里插入图片描述
数据点到超平面的几何间隔定义为:
在这里插入图片描述
几何间隔就是函数间隔除以||w||,可以理解成函数间隔的归一化。

寻找最大间隔

 找到描述超平面和数据点的间隔的公式(即几何间隔)后,我们来看寻找最大间隔优化问题。首先找到具有最小间隔的数据点,

即前面提到的支持向量,然后再这些点和超平面的间隔最大化。即:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值