支持向量机(SVM)

SVM是有监督学习、属于判别模型(决策函数),非线性,有预测函数,有优化目标,有求解算法(SMO)

  支持向量机(Support Vector Machine, SVM)的基本模型是在特征空间上找到最佳的分离超平面使得训练集正负样本间隔最大。SVM是用来解决二分类问题的有监督学习算法,在引入了核方法之后SVM也可以用来解决非线性问题。 

一般SVM有下面三种:

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

三个要素:模型(从数据和目的构建出的决策函数或概率分布)、策略(构造优化目标)、算法(求解优化目标的方法)

针对线性可分的情况: 

1、模型:也就是需要学习的决策函数由以下可知:

2、核心是在已有数据的基础上如何找到最佳的决策函数?

 也可表述为:分类学习最基本的想法就是基于训练集D在特征空间中找到一个最佳划分超平面将正负样本分开,而SVM算法解决的就是如何找到最佳超平面的问题

其中的超平面为:

如何得出最佳的超平面?也就是求解出w和b

为了找到优化的目标,也即是最小的损失函数:

引用下图说明:

问题表述: 

对于一部分的样本点到超平面的的距离分类,大于1的为正类,小于-1的为负类(为1的原因是通过等比缩放可以得到,为了问题的简化)

 

那么样本点到超平面距离为1的样本点称为支持向量,正负距离为1的样本点距离超平面所构成的间隔结合点到平面的距离公式参考https://www.cnblogs.com/graphics/archive/2010/07/10/1774809.html

因此可得出正负样本点距离超平面的和(定义为间隔)如下式因此求解最佳超平面的抽象问题进一步转化为求解间隔最大化

将如下的公式代入上式:

      

那么间隔表示为 :

         

求解间隔最大化问题(优化目标)进一步表示为:

或者(1):

下面进入优化目标的进一步转化:

将引入拉格朗日乘子法和KTT条件(具体可参考:深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件https://blog.csdn.net/lijil168/article/details/69395023

基本的拉格朗日乘子法(又称为拉格朗日乘数法),就是求函数f(x1,x2,...)在g(x1,x2,...)=0的约束条件下的极值的方法。其主要思想是引入一个新的参数λ(即拉格朗日乘子),将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得到原函数极值的各个变量的解。

拉格朗日构造如下:

求偏导:

并将结果代入上式得:

对比(1)式多了一个不等式的约束项,是由于构造拉格朗日乘子时引入的

最终求解的决策模型为:

注意要考虑原有优化问题的不等式约束,为此还需引入KTT约束条件:

 有了优化目标,

3、下面将展示的是求解优化目标的优化算法:

  SMO算法:

 注意的是:KTT条件违背的程度越大,那么变量更新后可能导致目标函数的减幅越大。

因此两个变量的选择条件是1)选择违背KTT条件最大的变量 2)选择使得目标函数减幅最大的变量

针对训练数据非线性可分时:

也即是通过一个超平面无法将样本正确分类;为此需要将数据样本空间映射到更高维度的特征空间,使得样本在这个特征空间中线性可分。

推导求解优化目标时需要求解特征函数的内积,为此引入核函数来替代,避免了高维特征空间内积计算复杂的问题。

是实际的情况是特征函数无法确定,因此核函数也无法确定(通过特征函数可以直接计算出核函数)

由定理可知:任何一个核函数隐式定义了一个再生希尔伯特空间

因此通过选择核函数,来确定特征函数

 其中核函数的选择:

新的核函数可以通过组合来构造:

1)线性组合

2)核函数的乘积

3)乘以任意的函数构造

 

该模型的优缺点:

优点: 
SVM在中小量样本规模的时候容易得到数据和特征之间的非线性关系,可以避免使用神经网络结构选择和局部极小值问题,可解释性强,可以解决高维问题。 
缺点: 
SVM对缺失数据敏感,对非线性问题没有通用的解决方案,核函数的正确选择不容易,计算复杂度高,主流的算法可以达到O(n2)的复杂度,这对大规模的数据是吃不消的。

参考:https://blog.csdn.net/liugan528/article/details/79448379 
 

不错的博客:

【1】SVM基础讲解有公式推导,不够详细https://blog.csdn.net/liugan528/article/details/79448379

【2】python中支持向量机的使用方法 http://sklearn.apachecn.org/#/docs/5?id=scores-probabilities

【3】kasci讲解视频https://www.bilibili.com/video/av35363386/?spm_id_from=333.788.videocard.0

【4】机器学习面试之有必要手推SVM吗 https://www.jianshu.com/p/f4c7bc6c4ce2  

【5】SVM https://blog.csdn.net/liugan528/article/details/79448379 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heda3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值