在支持向量机原理(一) 线性支持向量机中,我们对线性可分SVM的模型和损失函数优化做了总结。最后我们提到了有时候不能线性可分的原因是线性数据集里面多了少量的异常点,由于这些异常点导致了数据集不能线性可分,本篇就对线性支持向量机如何处理这些异常点的原理方法做一个总结。

1. 线性分类SVM面临的问题

    有时候本来数据的确是可分的,也就是说可以用 线性分类SVM的学习方法来求解,但是却因为混入了异常点,导致不能线性可分,比如下图,本来数据是可以按下面的实线来做超平面分离的,可以由于一个橙色和一个蓝色的异常点导致我们没法按照上一篇线性支持向量机中的方法来分类。

    另外一种情况没有这么糟糕到不可分,但是会严重影响我们模型的泛化预测效果,比如下图,本来如果我们不考虑异常点,SVM的超平面应该是下图中的红色线所示,但是由于有一个蓝色的异常点,导致我们学习到的超平面是下图中的粗虚线所示,这样会严重影响我们的分类模型预测效果。

    如何解决这些问题呢?SVM引入了软间隔最大化的方法来解决。

2. 线性分类SVM的软间隔最大化

    所谓的软间隔,是相对于硬间隔说的,我们可以认为上一篇线性分类SVM的学习方法属于硬间隔最大化。

    回顾下硬间隔最大化的条件:

min12 ||w|| 2 2 s.ty i (w T x i +b)≥1(i=1,2,...m) 

    接着我们再看如何可以软间隔最大化呢?

    SVM对训练集里面的每个样本(x i ,y i ) 引入了一个松弛变量ξ i ≥0 ,使函数间隔加上松弛变量大于等于1,也就是说:

y i (w∙x i +b)≥1−ξ i  

    对比硬间隔最大化,可以看到我们对样本到超平面的函数距离的要求放松了,之前是一定要大于等于1,现在只需要加上一个大于等于0的松弛变量能大于等于1就可以了。当然,松弛变量不能白加,这是有成本的,每一个松弛变量ξ i  , 对应了一个代价ξ i  ,这个就得到了我们的软间隔最大化的SVM学习条件如下:

min12 ||w|| 2 2 +C∑ i=1 m ξ i  
s.t.y i (w T x i +b)≥1−ξ i (i=1,2,...m) 
ξ i ≥0(i=1,2,...m) 

    这里,C>0 为惩罚参数,可以理解为我们一般回归和分类问题正则化时候的参数。C 越大,对误分类的惩罚越大,C 越小,对误分类的惩罚越小。

    也就是说,我们希望12 ||w|| 2 2  尽量小,误分类的点尽可能的少。C是协调两者关系的正则化惩罚系数。在实际应用中,需要调参来选择。

    这个目标函数的优化和上一篇的线性可分SVM的优化方式类似,我们下面就来看看怎么对线性分类SVM的软间隔最大化来进行学习优化。

3. 线性分类SVM的软间隔最大化目标函数的优化

    和线性可分SVM的优化方式类似,我们首先将软间隔最大化的约束问题用拉格朗日函数转化为无约束问题如下:

L(w,b,ξ,α,μ)=12 ||w|| 2 2 +C∑ i=1 m ξ i −∑ i=1 m α i [y i (w T x i +b)−1+ξ i ]−∑ i=1 m μ i ξ i  

    其中 μ i ≥0,α i ≥0 ,均为拉格朗日系数。

    也就是说,我们现在要优化的目标函数是:

min        w,b,ξ max        α i ≥0,μ i ≥0, L(w,b,α,ξ,μ) 

    这个优化目标也满足KKT条件,也就是说,我们可以通过拉格朗日对偶将我们的优化问题转化为等价的对偶问题来求解如下:

max        α i ≥0,μ i ≥0, min        w,b,ξ L(w,b,α,ξ,μ) 

    我们可以先求优化函数对于w,b,ξ 的极小值, 接着再求拉格朗日乘子α 和 μ 的极大值。

    首先我们来求优化函数对于w,b,ξ 的极小值,这个可以通过求偏导数求得:

∂L∂w =0⇒w=∑ i=1 m α i y i x i  
∂L∂b =0⇒∑ i=1 m α i y i =0 
∂L∂ξ =0⇒C−α i −μ i =0 

    好了,我们可以利用上面的三个式子去消除w 和b 了。

L(w,b,ξ,α,μ) =12 ||w|| 2 2 +C∑ i=1 m ξ i −∑ i=1 m α i [y i (w T x i +b)−1+ξ i ]−∑ i=1 m μ i ξ i  =12 ||w|| 2 2 −∑ i=1 m α i [y i (w T x i +b)−1+ξ i ]+∑ i=1 m α i ξ i =12 ||w|| 2 2 −∑ i=1 m α i [y i (w T x i +b)−1]=12 w T w−∑ i=1 m α i y i w T x i −∑ i=1 m α i y i b+∑ i=1 m α i =12 w T ∑ i=1 m α i y i x i −∑ i=1 m α i y i w T x i −∑ i=1 m α i y i b+∑ i=1 m α i =12 w T ∑ i=1 m α i y i x i −w T ∑ i=1 m α i y i x i −∑ i=1 m α i y i b+∑ i=1 m α i =−12 w T ∑ i=1 m α i y i x i −∑ i=1 m α i y i b+∑ i=1 m α i =−12 w T ∑ i=1 m α i y i x i −b∑ i=1 m α i y i +∑ i=1 m α i =−12 (∑ i=1 m α i y i x i ) T (∑ i=1 m α i y i x i )−b∑ i=1 m α i y i +∑ i=1 m α i =−12 ∑ i=1 m α i y i x T i ∑ i=1 m α i y i x i −b∑ i=1 m α i y i +∑ i=1 m α i =−12 ∑ i=1 m α i y i x T i ∑ i=1 m α i y i x i +∑ i=1 m α i =−12 ∑ i=1,j=1 m α i y i x T i α j y j x j +∑ i=1 m α i =∑ i=1 m α i −12 ∑ i=1,j=1 m α i α j y i y j x T i x j  (1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13) 

    其中,(1)式到(2)式用到了C−α i −μ i =0 , (2)式到(3)式合并了同类项,(3)式到(4)式用到了范数的定义||w|| 2 2 =w T w , (4)式到(5)式用到了上面的w=∑ i=1 m α i y i x i  , (5)式到(6)式把和样本无关的w T  提前,(6)式到(7)式合并了同类项,(7)式到(8)式把和样本无关的b 提前,(8)式到(9)式继续用到w=∑ i=1 m α i y i x i  ,(9)式到(10)式用到了向量的转置。由于常量的转置是其本身,所有只有向量x i  被转置,(10)式到(11)式用到了上面的∑ i=1 m α i y i =0 ,(11)式到(12)式使用了(a+b+c+…)(a+b+c+…)=aa+ab+ac+ba+bb+bc+… 的乘法运算法则,(12)式到(13)式仅仅是位置的调整。

    仔细观察可以发现,这个式子和我们上一篇线性可分SVM的一样。唯一不一样的是约束条件。现在我们看看我们的优化目标的数学形式:

max        α ∑ i=1 m α i −12 ∑ i=1,j=1 m α i α j y i y j x T i x j  
s.t.∑ i=1 m α i y i =0 
C−α i −μ i =0 
α i ≥0(i=1,2,...,m) 
μ i ≥0(i=1,2,...,m) 

    对于C−α i −μ i =0,α i ≥0,μ i ≥0 这3个式子,我们可以消去μ i  ,只留下α i  ,也就是说0≤α i ≤C 。 同时将优化目标函数变号,求极小值,如下:

min        α 12 ∑ i=1,j=1 m α i α j y i y j x T i x j −∑ i=1 m α i  
s.t.∑ i=1 m α i y i =0 
0≤α i ≤C 

    这就是软间隔最大化时的线性可分SVM的优化目标形式,和上一篇的硬间隔最大化的线性可分SVM相比,我们仅仅是多了一个约束条件0≤α i ≤C 。我们依然可以通过SMO算法来求上式极小化时对应的α 向量就可以求出w和b 了。

4. 软间隔最大化时的支持向量

    在硬间隔最大化时,支持向量比较简单,就是满足y i (w T x i +b)−1=0 就可以了。根据KKT条件中的对偶互补条件α ∗ i (y i (w T x i +b)−1)=0 ,如果α ∗ i >0 则有y i (w T x i +b)=1  即点在支持向量上,否则如果α ∗ i =0 则有y i (w T x i +b)≥1 ,即样本在支持向量上或者已经被正确分类。

    在软间隔最大化时,则稍微复杂一些,因为我们对每个样本(x i ,y i ) 引入了松弛变量ξ i  。我们从下图来研究软间隔最大化时支持向量的情况,第i个点到分类超平面的距离为ξ i ||w|| 2   。根据软间隔最大化时KKT条件中的对偶互补条件α ∗ i (y i (w T x i +b)−1+ξ ∗ i )=0 我们有:

    a) 如果α=0 ,那么y i (w T x i +b)−1≥0 ,即样本在支持向量上或者已经被正确分类。如图中所有远离支持向量的点。

    b) 如果0≤α≤C ,那么ξ i =0,y i (w T x i +b)−1=0 ,即点在支持向量上。如图中在虚线支持向量上的点。

    c) 如果α=C ,说明这是一个可能比较异常的点,需要检查此时ξ i

      i)如果0≤ξ i ≤1 ,那么点被正确分类,但是却在超平面和自己类别的支持向量之间。如图中的样本2和4.

      ii)如果ξ i =1 ,那么点在分离超平面上,无法被正确分类。

      iii)如果ξ i >1 ,那么点在超平面的另一侧,也就是说,这个点不能被正常分类。如图中的样本1和3.

     

5. 软间隔最大化的线性可分SVM的算法过程

    这里我们对软间隔最大化时的线性可分SVM的算法过程做一个总结。

    输入是线性可分的m个样本(x 1 ,y 1 ),(x 2 ,y 2 ),...,(x m ,y m ), ,其中x为n维特征向量。y为二元输出,值为1,或者-1.

    输出是分离超平面的参数w ∗ 和b ∗  和分类决策函数。

    算法过程如下:

    1)选择一个惩罚系数C>0 , 构造约束优化问题

min        α 12 ∑ i=1,j=1 m α i α j y i y j x T i x j −∑ i=1 m α i  
s.t.∑ i=1 m α i y i =0 
0≤α i ≤C 

    2)用SMO算法求出上式最小时对应的α 向量的值α ∗  向量.

    3) 计算w ∗ =∑ i=1 m α ∗ i y i x i

    4) 找出所有的S个支持向量,即满足0<α s <C 对应的样本(x s ,y s ) ,通过 y s (∑ i=1 S α i y i x T i x s +b)=1 ,计算出每个支持向量(x x ,y s ) 对应的b ∗ s  ,计算出这些b ∗ s =y s −∑ i=1 S α i y i x T i x s  . 所有的b ∗ s  对应的平均值即为最终的b ∗ =1S ∑ i=1 S b ∗ s

    这样最终的分类超平面为:w ∗ ∙x+b ∗ =0 ,最终的分类决策函数为:f(x)=sign(w ∗ ∙x+b ∗ )

6. 合页损失函数

    线性支持向量机还有另外一种解释如下:

min        w,b [1−y i (w∙x+b)] + +λ||w|| 2 2  

 

    其中L(y(w∙x+b))=[1−y i (w∙x+b)] +  称为合页损失函数(hinge loss function),下标+表示为:

[z] + ={z0 z>0z≤0  

  

    也就是说,如果点被正确分类,且函数间隔大于1,损失是0,否则损失是1−y(w∙x+b) ,如下图中的绿线。我们在下图还可以看出其他各种模型损失和函数间隔的关系:对于0-1损失函数,如果正确分类,损失是0,误分类损失1, 如下图黑线,可见0-1损失函数是不可导的。对于感知机模型,感知机的损失函数是[−y i (w∙x+b)] +  ,这样当样本被正确分类时,损失是0,误分类时,损失是−y i (w∙x+b) ,如下图紫线。对于逻辑回归之类和最大熵模型对应的对数损失,损失函数是log[1+exp(−y(w∙x+b))] , 如下图红线所示。

    线性可分SVM通过软间隔最大化,可以解决线性数据集带有异常点时的分类处理,但是现实生活中的确有很多数据不是线性可分的,这些线性不可分的数据也不是去掉异常点就能处理这么简单。那么SVM怎么能处理中这样的情况呢?我们在下一篇就来讨论线性不可分SVM和核函数的原理。

SVM支持向量机原理(二) 线性支持向量机的软间隔最大化模型相关推荐

  1. 支持向量机原理(一) 线性支持向量机

    我只是一名搬运工,以下内容来自:刘建平Pinard:https://www.cnblogs.com/pinard/p/6097604.html 1. 背景   支持向量机(Support Vecor ...

  2. 支持向量机原理(五)线性支持回归

    支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五) ...

  3. 支持向量机 一 :线性支持向量机介绍

    一.SVM简介 支持向量机(suport vector mechine,SVM)主要用于解决二分类问题.这里简单介绍一下线性SVM,希望能对SVM的入门者有所帮助. SVM是如何对样本对进行分类的呢? ...

  4. 支持向量机原理之线性SVM与非线性SVM

    一.什么是SVM? SVM的英文全称是Support Vector Machines,我们叫它支持向量机.支持向量机是我们用于分类的一种算法.让我们以一个小故事的形式,开启我们的SVM之旅吧. 在很久 ...

  5. svm matlab 图像分割,勇哥的视觉实验:SVM分类器(二) 支持向量机的应用例子,图片分割...

    前言: ========================================================== 分类器相对于深度学习来讲是一种古老传统的图片处理技术.halcon中常见的 ...

  6. 百面机器学习 #3 经典算法:01-2 不完全线性可分(软间隔)支撑向量机SVM

    文章目录 ①从原问题到对偶问题 ②对偶问题的解的形式化简 ③从对偶问题的解到原问题的解 ④从原问题的解到分离超平面.决策函数.支撑向量 假设训练数据集不是线性可分的.通常情况是,训练数据中有一些特异点 ...

  7. 机器学习算法总结之支持向量机(二)

    有时候不能线性可分的原因是线性数据集里面多了少量的异常点,由于这些异常点导致了数据集不能线性可分,本篇就对线性支持向量机如何处理这些异常点的原理方法做一个总结. 1.线性分SVM面临的问题 有时候本来 ...

  8. 支持向量机原理(四)SMO算法原理

    支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五) ...

  9. 支持向量机原理_支持向量机

    支持向量机原理 Python数据科学 (Python Data Science) The support vector machines (SVM) algorithm has application ...

最新文章

  1. Window7系统 中常见的进程命令分析?
  2. 进程间通信--信号(SIG)
  3. RocketMq重试及消息不丢失机制
  4. 重做 oracle_Oracle数据库基本知识(1)-数据库(1)
  5. hdu 4288 线段树 暴力 **
  6. 从零实现深度学习框架——自动求导神器计算图
  7. 常用oracle语句
  8. 学习参考《高性能MySQL(第3版)》中文PDF+英文PDF
  9. 猫途鹰:中国游客旅行花费低于全球平均水平,购物消费则远超全球
  10. ESXi下虚拟机迁移至PVE
  11. 小镇青年程序员的逆袭人生:从差点回老家到荔枝技术骨干
  12. 斯坦福大学区块链期末考试题
  13. python opencv入门 光流法(41)
  14. 已解决ValueError: All arrays must be of the same length
  15. Java---反射机制
  16. 测量用计算机软件管理办法,《计算机应用基础》测试题(一)
  17. 如何通过短信转发在iPad和Mac上发送和接收短信
  18. macromedia_Macromedia重新设计
  19. PostgreSQL之函数和操作符
  20. c语言将元年1月1日起的天数转化成日期,不用循环和数组

热门文章

  1. 双重差分模型python包_什么是双重差分模型(difference-in-differences model)?
  2. 硬盘-磁盘-分区-格式化-lvm-raid
  3. 【Fluent】Failed Share Topology in DM/SCDM,Attempting to repair model
  4. VS2019使用教程(使用VS2019编写C语言程序)
  5. 雅马哈机械手的基本操作,与上位机通讯程序编写
  6. 二叉树的非递归遍历(java)
  7. 2019年网易游戏初级测试工程师面试经验
  8. 竞赛:糖尿病遗传风险检测挑战赛(科大讯飞)
  9. iOS逆向 - 环境搭建
  10. Power Assist Wear