前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《机器学习》-- 第六章 支持向量机

《机器学习》-- 第六章 支持向量机

作者头像
fireWang
发布2020-07-31 16:46:47
7310
发布2020-07-31 16:46:47
举报
文章被收录于专栏:零维领域零维领域

本文目录:

  • 6.1 间隔和支持向量
  • 6.2 原始优化问题到对偶问题
  • 6.3 核函数(核方法)
  • 6.4 软间隔和正则化
  • 6.5 支持向量回归

6、支持向量机

支持向量机(Support Vector Machine,SVM)是一种经典的二分类模型,基本模型定义为特征空间中最大间隔的线性分类器,其学习的优化目标便是间隔最大化,因此支持向量机本身可以转化为一个凸二次规划求解的问题。

6.1 间隔和支持向量

6.1.1 函数间隔

6.2 从原始优化问题到对偶问题

这样就将原问题的求最小变成了对偶问题求最大(用对偶这个词还是很形象),接下来便可以先求L对w和b的极小,再求L对α的极大。

(1)首先求L对w和b的极小,分别求L关于w和b的偏导,可以得出:

将上述结果代入L得到:

(2)通过SMO(Sequential Minimal Optimization)算法,对L关于α极大求解α

(3)最后便可以根据求解出的α,计算出w和b,从而得到分类超平面函数。

在对新的点进行预测时,实际上就是将数据点x*代入分类函数f(x)=w'x+b中,若f(x)>0,则为正类,f(x)<0,则为负类,根据前面推导得出的w与b,分类函数如下所示,此时便出现了上面所提到的内积形式。

这里实际上只需计算新样本与支持向量的内积,因为对于非支持向量的数据点,其对应的拉格朗日乘子一定为0,根据最优化理论(K-T条件),对于不等式约束y(w'x+b)-1≥0,满足:

6.2.1 KKT条件

6.2.2 SMO优化

6.2.3 拉格朗日乘子

6.3 核函数(核方法)

由于上述的超平面只能解决线性可分的问题,对于线性不可分的问题,例如:异或问题,我们需要使用核函数将其进行推广。一般地,解决线性不可分问题时,常常采用「映射」的方式,将低维原始空间映射到高维特征空间,使得数据集在高维空间中变得线性可分,从而再使用线性学习器分类。如果原始空间为有限维,即属性数有限,那么总是存在一个高维特征空间使得样本线性可分。若∅代表一个映射,则在特征空间中的划分函数变为:

按照同样的方法,先写出新目标函数的拉格朗日函数,接着写出其对偶问题,求L关于w和b的极大,最后运用SMO求解α。可以得出:

(1)原对偶问题变为:

(2)原分类函数变为:

求解的过程中,只涉及到了高维特征空间中的内积运算,由于特征空间的维数可能会非常大,例如:若原始空间为二维,映射后的特征空间为5维,若原始空间为三维,映射后的特征空间将是19维,之后甚至可能出现无穷维,根本无法进行内积运算了,此时便引出了「核函数」(Kernel)的概念。

因此,核函数可以直接计算隐式映射到高维特征空间后的向量内积,而不需要显式地写出映射后的结果,它虽然完成了将特征从低维到高维的转换,但最终却是在低维空间中完成向量内积计算,与高维特征空间中的计算等效**(低维计算,高维表现)**,从而避免了直接在高维空间无法计算的问题。引入核函数后,原来的对偶问题与分类函数则变为:

(1)对偶问题:

(2)分类函数:

因此,在线性不可分问题中,核函数的选择成了支持向量机的最大变数,若选择了不合适的核函数,则意味着将样本映射到了一个不合适的特征空间,则极可能导致性能不佳。同时,核函数需要满足以下这个必要条件:

由于核函数的构造十分困难,通常我们都是从一些常用的核函数中选择,下面列出了几种常用的核函数:

6.4 软间隔与正则化

现在我们已经知道:当数据线性可分时,直接使用最大间隔的超平面划分;当数据线性不可分时,则通过核函数将数据映射到高维特征空间,使之线性可分。

然而在现实问题中,对于某些情形还是很难处理,例如数据中有「噪声」的情形,噪声数据(「outlier」)本身就偏离了正常位置,但是在前面的SVM模型中,我们要求所有的样本数据都必须满足约束,如果不要这些噪声数据还好,当加入这些outlier后导致划分超平面被挤歪了,对支持向量机的泛化性能造成很大的影响。

为了解决这一问题,我们需要允许某一些数据点不满足约束,即可以在一定程度上偏移超平面,同时使得不满足约束的数据点尽可能少,这便引出了**“软间隔”支持向量机**的概念

代码语言:javascript
复制
* 允许某些数据点不满足约束y(w'x+b)≥1;
* 同时又使得不满足约束的样本尽可能少。

这样优化目标变为:

如同阶跃函数,0/1损失函数虽然表示效果最好,但是数学性质不佳。因此常用其它函数作为“替代损失函数”。

支持向量机中的损失函数为「hinge损失」,引入**“松弛变量”**,目标函数与约束条件可以写为:

其中C为一个参数,控制着目标函数与新引入正则项之间的权重,这样显然每个样本数据都有一个对应的松弛变量,用以表示该样本不满足约束的程度,将新的目标函数转化为拉格朗日函数得到:

按照与之前相同的方法,先让L求关于w,b以及松弛变量的极小,再使用SMO求出α,有:

将w代入L化简,便得到其对偶问题:

将“软间隔”下产生的对偶问题与原对偶问题对比可以发现:新的对偶问题只是约束条件中的α多出了一个上限C,其它的完全相同,因此在引入核函数处理线性不可分问题时,便能使用与“硬间隔”支持向量机完全相同的方法。

6.5 支持向量回归

SVR回归(support vector regression)与SVM分类的区别在于,SVR的样本点最终只有一类,它所寻求的最优超平面不是SVM那样使两类或多类样本点分的“最开”,而是使所有的样本点离着超平面的总偏差最小。

统计上的理解就是:使得所有的数据的类内方差最小,把所有的类的数据看作是一个类。

6.6 核方法

本文项目地址:

https://github.com/firewang/lingweilingyu/blob/master/contents/Machine_Learning_Zhi-Hua_Zhou.md

(喜欢的话,Star一下)

参考网址:

  • 周志华 著. 机器学习, 北京: 清华大学出版社, 2016年1月.
  • https://github.com/Vay-keen/Machine-learning-learning-notes
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 零维领域 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 6、支持向量机
    • 6.1 间隔和支持向量
      • 6.1.1 函数间隔
    • 6.2 从原始优化问题到对偶问题
      • 6.2.1 KKT条件
      • 6.2.2 SMO优化
      • 6.2.3 拉格朗日乘子
    • 6.3 核函数(核方法)
      • 6.4 软间隔与正则化
        • 6.5 支持向量回归
          • 6.6 核方法
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档