机器学习入门(十六):SVM——线性 SVM,间隔由硬到软
从线性可分 SVM 到线性 SVM
从现实情况引出线性 SVM
线性可分 SVM,这种 SVM 学习的训练数据本身就是线性可分的——可以很清晰地在特征向量空间里分成正集和负集。
线性可分 SVM 正负样本之间的间隔叫做“硬间隔”,也就是说在这个“隔离带”里面,肯定不会出现任何训练样本。
我们不难想到,这种情况在现实生活中其实是很少见的。更多的时候,可能是像下面这个样子:
如果没有红圈里那两个点,本来可以很好的分割:
可是,偏偏多了那两个点!都找不到分隔超平面了!像下图这样,分来分去,怎么都分不开:
如果我们不那么“轴”,不是完全禁止两个辅助超平面之间有任何样本点。而是允许个别样本出现在“隔离带”里面,那样是不是会变得好分得多?比如像下面这样:
这样看起来也很合理啊。而且,一般情况下,怎么能保证样本就一定能够被分隔得清清楚楚呢?从直觉上我们也觉得,允许一部分样本存在于“隔离带”内更合理。
正是基于这种想法,相对于之前讲的线性可分 SVM 的硬间隔(Hard Margin),人们提出了软间隔(Soft Margin) 的概念。
相应的,对应于软间隔的 SVM,也就叫做线性 SVM。
下面我们对照来看一看它们:
线性可分 SVM
线性可分 SVM 成立的前提是训练样本在向量空间中线性可分,即存在一个超平面能够将不同类的样本完全彻底且无一错漏地分开。
用数学式子表达,全部训练样本满足如下约束条件:
wxi+b⩾1,yi=1 wxi+b⩽1,yi=−1
这时,wxi+b=1 和 wxi+b=−1 这两个超平面之间的间隔叫做硬间隔。位于它们两个正中的 wxi+b=0 是最大分割超平面。
线性 SVM
硬间隔到软间隔
由于样本线性可分的情况在现实当中出现很少,为了更有效地应对实际问题,我们不再要求所有不同类的样本全部线性可分,也就是不再要求硬间隔存在。
取而代之的是将不同类样本之间的硬间隔变成软间隔,即允许部分样本不满足约束条件: yi(wxi+b)⩾1。
当然,我们还是希望不满足硬间隔条件的样本尽量少,还能够是一个“软”间隔,而非间隔根本不存在。
为了度量这个间隔“软”到何种程度,我们针对每一个样本 (xi,yi),引入一个松弛变量 ξi,令 ξi⩾0,且 yi(wxi+b)⩾1−ξi。
对应到图形上是这样:
这样看起来,确实比硬间隔合理多了。
*优化目标*
于是,我们的优化目标就从原来的:
minw,b||w||22
s.t.1−yi(wxi+b)⩽0,i=1,2,...,m
变成了:
minw,b,ξ12||w||2+C∑mi=1ξi
s.t.yi(wxi+b)⩾1−ξi,i=1,2,...,m;ξi⩾0,i=1,2,...,m
其中 C 是一个大于0的常数,若 C 为无穷大,则 ξi 必然为无穷小,否则将无法最小化主问题。如此一来,线性 SVM 就又变成了线性可分 SVM。
当 C 为有限值的时候,才能允许部分样本不遵守约束条件 1–yi(wxi+b)⩽0。
这就是线性 SVM 的主问题!
对偶法最优化线性 SVM 主问题
算法思路
上面我们得出了线性 SVM 的主问题。
现在来回顾一下上节课我们讲解的,用对偶法求解线性可分 SVM 的主问题的思路——当时一共分了7步,不过这7步再抽象一下,大致可以分为4个阶段。
*Stage-1*:根据主问题构建拉格朗日函数,由拉格朗日函数的对偶性,将主问题转化为极大极小化拉格朗日函数的对偶问题。
*Stage-2*:分步求解极大极小问题。
在每次求解极值的过程中都是先对对应的函数求梯度,再令梯度为0。以此来推导出主问题参数和拉格朗日乘子之间的关系。
再将用拉格朗日乘子表达的主问题参数带回到拉格朗日函数中,最终一步步将整个对偶问题推导为拉格朗日乘子和样本 (xi,yi) 之间的关系。
*Stage-3*:通过最小化拉格朗日乘子与样本量组成的函数(也就是 Stage-2 的结果),求出拉格朗日乘子的值。
这里,可以用 SMO 算法进行求解。
*Stage-4*:将 Stage-3 求出的拉格朗日乘子的值带回到 Stage-2 中确定的乘子与主问题参数关系的等式中,求解主问题参数。
再根据主问题参数构造最终的分隔超平面和决策函数。
主问题求解
现在我们就按这个思路来对线性 SVM 主问题进行求解。
首先,将主问题写成我们熟悉的约束条件小于等于0的形式,如下:
minw,b,ξ12||w||2+C∑mi=1ξi
s.t.1−ξi−yi(wxi+b)⩽0,i=1,2,...,m;−ξi⩽0,i=1,2,...,m
然后开始逐步求解:
*1. 构建拉格朗日函数如下:*
L(w,b,ξ,α,μ)=12||w||2+C∑mi=1ξi+∑mi=1αi[1−ξi−yi(wxi+b)]+∑mi=1(−μiξi)
αi⩾0,μi⩾0
其中 αi 和 μi 是拉格朗日乘子,而 w、b 和 ξi 是主问题参数。
根据主问题的对偶性,主问题的对偶问题是:
maxα,μminw,b,ξL(w,b,ξ,α,μ)
*2. 极大极小化拉格朗日函数*
(1)极小化
首先 对 w、b 和 ξ 极小化 L(w,b,ξ,α,μ)——分别对 w、b和ξi 求偏导,然后令导数为0,得出如下关系:
w=∑mi=1αiyixi
0=∑mi=1αiyi
C=αi+μi
将这些关系带入线性 SVM 主问题的拉格朗日函数,得到:
minw,b,ξL(w,b,ξ,α,μ)=∑mi=1αi−12∑mi=1∑mj=1αiαjyiyj(xi⋅xj)
(2)极大化
然后,就要对 α 和 μ 进行极大化。
因为上面极小化的结果中只有 α 而没有 μ,所以现在只需要极大化 α 就好:
maxα,μminw,b,ξL(w,b,ξ,α,μ)=maxα(∑mi=1αi−12∑mi=1∑mj=1αiαjyiyj(xi⋅xj))
s.t.∑mi=1αiyi=0;C−αi−μi=0;αi⩾0;μi⩾0;i=1,2,...,m
*3. SMO 算法求解对偶问题*
我们将上面极大化目标约束条件中的 μ 用 α 替换掉,并将极大化目标求负转为极小化问题,得到:
maxα(∑mi=1αi−12∑mi=1∑mj=1αiαjyiyj(xi⋅xj))=min(12∑mi=1∑mj=1αiαjyiyj(xi⋅xj)−∑mi=1αi)
s.t.∑mi=1αiyi=0;0⩽αi⩽C;i=1,2,...,m
我们对照一下上一篇线性可分 SVM 最优化过程中步骤3的结果,不难发现,两者的极小化目标是一样的,所不同的就是约束条件而已。
所以,在上一篇我们用到的 SMO 算法,同样可以用于此处。运用 SMO 求解出拉格朗日乘子 α1,α2,…,αm。
*4. 根据拉格朗日乘子与主问题参数的关系求解分隔超平面和决策函数*
由 w=∑mi=1αiyixi 求出 w。
因为最终要求得的超平面满足 wx+b=0,这一点是和线性可分 SVM 的超平面一样的,因此求解 b 的过程也可以照搬:
b=1|S|∑s∈S(ys−wxs)
其中 S 是支持向量的集合。
线性 SVM 的支持向量
这里有个问题,到底哪些样本算是线性 SVM 的支持向量?
对于线性可分 SVM,支持向量本身是很明确的,就是那些落在最大分隔超平面两侧的两个辅助超平面上的样本。因为样本线性可分,所以这两个辅助超平面中间的硬间隔里,是没有任何样本存在的。
但是,对于线性 SVM,有些不同,这两个辅助超平面中间是软间隔,软间隔的区域内也存在若干样本。这些样本是和辅助超平面上的样本一样算作支持向量呢?还是不算作支持向量?
比如下图中的 sampleA 和 sampleB,前者还好,只是“分得不够清楚”, 后者根本就“跨界”到了“对方的地盘”。它们两个到底算不算支持向量呢?
我们先来看看线性 SVM(又名软间隔 SVM)主问题拉格朗日函数的 KKT 条件:
αi⩾0,μi⩾0
yif(xi)–1+ξi⩾0
αi(yif(xi)–1+ξi)=0
ξi⩾0
μiξi=0
其中 f(x)=wx+b,i=1,2,…,m
对于任意样本 (xi,yi),要么 αi=0, 要么 yif(xi)–1+ξi=0。
我们又知道 w 的计算公式为:
w=∑mi=1αiyixi
其中拉格朗日乘子为0(即 αi=0)的项,对于 w 的值是没有影响的,能够影响 w 的,一定是对应拉格朗日乘子大于0的样本。
根据 KKT 条件,这样的样本一定同时满足 yif(xi)–1+ξi=0,也就是 yif(xi)=1–ξi。所有这样的样本,都是线性 SVM 的支持向量。
在满足 yif(xi)=1–ξi 的前提之下,我们来看 ξi。
若 ξi=0, 则 yif(xi)=1,此时,样本正好落在两个辅助超平面上。所以,两个辅助超平面上的样本,肯定是支持向量。
若 ξi≠0:
当 ξi⩽1 时(例如上图中的 ξA),1−ξi>0, yif(xi)>0。也就是说 yi 和 f(xi) 的结果相乘虽然不为1,但至少这个样本还没有被归错类。
当 ξi>1时(例如上图中的 ξB),1−ξi<0,则 yif(xi)<0,这时,样本根本就被归错了类。但是,即使如此,毕竟这样的样本也影响了最终 w 的取值,所以,它也是支持向量。
机器学习入门(十六):SVM——线性 SVM,间隔由硬到软相关推荐
- OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope
OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...
- 吴恩达机器学习(十)支持向量机(SVM)
目录 0. 前言 1. 代价函数(Cost Function) 2. 假设函数(Hypothesis) 3. 范数表示 4. 高斯核函数(Gaussian Kernel) 5. SVM实现多分类 6. ...
- Java机器学习库ML之十一线性SVM
线性SVM的原理就不多说了,最强大的就是libsvm库(ml库也是用这个),参考:http://blog.csdn.net/fjssharpsword/article/details/53883340 ...
- 机器学习入门(十三):SVM——线性可分 SVM 原理
之前我们讲过的几个模型:线性回归.朴素贝叶斯.逻辑回归和决策树,其背后数学原理的难度属于初级.而接下来要讲的 SVM 和 SVR 则上升到了中级. 在下面的几 篇中,我们将不会再看到可爱.搞笑的图片和 ...
- 西瓜书+实战+吴恩达机器学习(十六)半监督学习(半监督SVM、半监督k-means、协同训练算法)
文章目录 0. 前言 1. 半监督SVM 2. 半监督k-means 2.1. 约束k-means 2.2. 约束种子k-means 3. 协同训练算法 如果这篇文章对你有一点小小的帮助,请给个关注, ...
- 机器学习基础(二十六)—— 将 SVM 推广到多类问题
有 3 种常用的策略可用于推广 SVM 解决多类问题,下面以一个 4 类问题为例进行说明. 1. 一对多的最大响应策略(one against all) 假设有 A.B.C.D 四类样本需要划分.在抽 ...
- 【机器学习入门到精通系列】SVM与核函数(附程序模拟!)
文章目录 1 核函数本质 2 选取 3 程序模拟 3.1 模拟数据集 3.2 经过高斯核,得到新的数据集! 1 核函数本质 1.在实际数据上经常遇到线性不可分的情况 而解决方法是将特征映射到更高维的空 ...
- 机器学习(十六)推荐系统
文章目录 Log 一.问题形式(Problem formulation) 1. 实例:电影评分预测(Predicting movie ratings) 二.基于内容的推荐算法(Content-base ...
- 机器学习(十六)——隐式狄利克雷划分
http://antkillerfarm.github.io/ 隐式狄利克雷划分 Latent Dirichlet Allocation,简称LDA.注意不要和Linear Discriminant ...
最新文章
- LR为什么要先离散化
- httpd-2.2和httpd-2.4安装部署
- JAVA面对对象(一)——封装
- LocalDateTime与LocalDate之间的相互转换
- *** Python版一键安装脚本
- 第一季7:海思制作的rootfs包含哪些内容?
- ASP.NET状态管理之六(缓存Cache)
- php之类重写父类的构造方法,php实现parent调用父类的构造方法与被覆写的方法
- 模式识别的几种基本算法
- 二分插入排序(折半插入排序)--排序算法(六)
- matlab 神经网络设计多层隐含层_MATLAB计算多层隐含层BP神经网络
- 《聪明的投资者》摘要——价值投资的起点
- animation心形--表白
- python如何打开npy文件_python实现npy格式文件转换为txt文件操作
- 现代通信原理与技术 matlab,现代通信原理与技术.pdf
- feedback算法C语言,Learner Reviews Feedback for 计算导论与C语言基础 Course | Coursera
- 01.消消乐填充的算法
- 图像增强论文精读——ExCNet:Zero-Shot Restoration of Back-lit Images Using Deep Internal Learning
- 计算机基础知识试题及答案
- 天宇电梯卡数据分析延期教程 电梯卡延期校验计算工具
热门文章
- calcite mysql_calcite简单入门
- 【MeetYou·遇见你】“去爱,去失去,要不负相遇”
- parsestring,使用xml2js parseString返回值
- Happy happy Mother's Day!!!
- python -m中m参数的解释
- 【autoware(node:waypoint_saver)】
- 为什么有人讨厌 Google 的新 Logo?
- 贵州大学oj C++ 【第八章】虚函数-1
- Visual Studio中的.suo(Solution User Options)文件
- VML与SVG 矢量绘图