【ML-9-1】支持向量机--软硬间隔与支持向量机

我们知道较早的分类模型——感知机(1957年)是二类分类的线性分类模型,也是后来神经网络和支持向量机的基础。支持向量机(Support vector machines)最早也是是一种二类分类模型,经过演进,现在成为了既能处理多元线性和非线性的问题,也能处理回归问题。在深度学习风靡之前,应该算是最好的分类算法。但目前SVM的应用仍然很多,尤其是在小样本集上。

一、目录

  • 目录
  • 感知机和其它知识
  • 硬间隔与支持向量机
  • 软间隔与支持向量机
  • 合页损失函数
  • 总结

二、感知机和其它知识(前戏)

2.1 感知机:

  感知机模型是一种二分类的线性分类器,只能处理线性可分的问题,感知机的模型就是尝试找到一个超平面将数据集分开,在二维空间这个超平面就是一条直线,在三维空间就是一个平面。感知机的分类模型如下:

感知机的超平面是wx+b = 0。

将上述分段函数整合成 y*(wx+b) > 0,则满足该式子的样本点即分类正确的点,不满足的即分类错误的点,我们的目标就是找到这样一组参数w,b 使得将训练集中的正类点和负类点分开。

接下来定义我们的损失函数(损失函数是一种衡量损失和错误的程度的函数),我们可以通过定义分类错误的样本的个数来作为损失函数,但是这种损失函数不是参数w,b 的连续可导函数,因此不容易优化。我们知道对于误分类的点

有-y(wx+b) > 0,我们让所有的误分类点到超平面的距离和最小(注意:感知机的损失函数只针对误分类点,而不是整个训练集):

?其中M是表示误分类的样本集合, 当w,b 成倍数增大时,并不会改变我们的超平面,||w||的值也会相应的增大,因此令||w|| = 1 不会影响我们的结果。最终的感知机损失函数如下:

2.2 其它知识:

最优化问题一般是指对于某一个函数而言,求解在其指定作用域上的全局最小值问题,一般分为以下三种情况(备注:以下几种方式求出来的解都有可能是局部极小值,只有当函数是凸函数的时候,才可以得到全局最小值):

  • 无约束问题:求解方式一般求解方式梯度下降法、牛顿法、坐标轴下降法等;
  • 等式约束条件:求解方式一般为拉格朗日乘子法
  • 不等式约束条件:求解方式一般为KKT条件(具体可见我的另一篇博文:KTT条件及其理解)

三、硬间隔与支持向量机

函数间隔:

上式中函数间隔并不能正常反应点到超平面的距离,在感知机模型里我们也提到,当分子成比例的增长时,分母也是成倍增长。为了统一度量,我们需要对法向量w加上约束条件,这样我们就得到了几何间隔γ,以下式子定义出距离超平面最近的点,即支持点(这也是支持向量机名称的来源),定义为:

其中w的值为权值:

以下要求是最大间隔分类超平面:如果所有的样本不光可以被超平面分开,还和超平面保持一定的函数距离(下图函数距离为1),那么这样的分类超平面是比感知机的分类超平面优的。可以证明,这样的超平面只有一个。和超平面平行的保持一定的函数距离的这两个超平面对应的向量,我们定义为支持向量,如下图虚线所示。

上面的式子可以直观的解释为:使得间隔值得相反得最小值(即使间隔最大),每个点满足大于等于1。

上面的问题中的 1/2||w||2 是凸函数,同时约束不等式是仿射函数,因此这是一个凸二次规划问题,根据凸优化理论,我们可以借助拉格朗日函数将我们的约束问题转化为无约束的问题来求解,我们的优化函数可以表达为:

将此时的目标函数和约束条件使用KKT条件转换为拉格朗日函数,从而转换为无约束的优化函数

引入拉格朗日乘子后,优化目标变成:

根据拉格朗日对偶化特性,将该优化目标转换为等价的对偶问题来求解,从而优化目标变成:

所以对于该优化函数而言,可以先求优化函数对于w和b的极小值,然后再求解对于拉格朗日乘子β的极大值。

首先求让函数L极小化的时候w和b的取值,这个极值可以直接通过对函数L分别求w和b的偏导数得到:

将求解出来的w和b带入优化函数L中,定义优化之后的函数如下:

转变问题为:

通过对w、b极小化后,我们最终得到的优化函数只和β有关,所以此时我们可以直接极大化我们的优化函数,得到β的值,从而可以最终得到w和b的值。

{ 假设存在最优解β*(使用ML-9-3的博文方法计算出值); 根据w、b和β的关系,可以分别计算出对应的w值和b值(一般使用所有支持向量的计算均值来作为实际的b值);

这里的(xs,ys)即支持向量,根据KKT条件中的对偶互补条件(松弛条件约束),支持向量必须满足一下公式:

}

线性可分SVM算法流程

引入KTT条件进行说明,(KTT条件是上面拉格朗日函数求最优解的必要条件):

 从KTT条件中可以看出,当yi(w*xi + b*) - 1 > 0 时,βi* = 0;当 βi* > 0 时,yi(w*xi + b*) - 1 = 0;

结合上面的w,b 表达式可以引出支持向量机的第二个亮点:w,b 参数只与满足 yi(w*xi + b*) - 1 = 0 的样本有关,而这些样本点就是离最大间隔超平面最近的点,我们将这些点称之为支持向量。因此很多时候支持向量在小样本集分类时也能表现的很好,也正是因为这个原因。(另外需注意:β 向量的个数是和训练集数量相等的,对与大的训练集,会导致所需要的参数数量增多,因此SVM在处理大的训练集时会比其他常见的机器学习算法要慢)

四、软间隔与支持向量机

    线性可分SVM的学习方法对于非线性的数据集是没有办法使用的, 有时候不能线性可分的原因是线性数据集里面多了少量的异常点,由于这些异常点导致了数据集不能线性可分, 那么怎么可以处理这些异常点使数据集依然可以用线性可分的思想呢? 这里介绍线性SVM的软间隔最大化。下图两个显示了软间隔的重要性:

如果线性数据中存在异常点导致没法直接使用SVM线性分割模型的时候,我们可以通过引入软间隔的概念来解决这个问题;

硬间隔:可以认为线性划分SVM中的距离度量就是硬间隔,在线性划分SVM中,要求函数距离一定是大于1的,最大化硬间隔条件为:

软间隔:SVM对于训练集中的每个样本都引入一个松弛因子(ξ),使得函数距离加上松弛因子后的值是大于等于1;这表示相对于硬间隔,对样本到超平面距离的要求放松了

松弛因子(ξ)越大,表示样本点离超平面越近,如果松弛因子大于1,那么表示允许该样本点分错,所以说加入松弛因子是有成本的,过大的松弛因子可能会导致模型分类错误,所以最终的目标函数就转换成为:

备注:函数中的C>0是惩罚参数,是一个超参数,类似L1/L2 norm的参数;C越大表示对误分类的惩罚越大,C越小表示对误分类的惩罚越小;C值的给定需要调参。

【简单对比下】

同硬间隔的SVM,构造软间隔最大化的约束问题对应的拉格朗日函数如下:

从而将我们的优化目标函数转换为:

优化目标同样满足KKT条件,所以使用拉格朗日对偶将优化问题转换为等价的对偶问题:

先求优化函数对于w、b、ξ的极小值,这个可以通过分别对优化函数L求w、b、ξ的偏导数得,从而可以得到w、b、ξ关于β和μ之间的关系。

将w、b、ξ的值带入L函数中,就可以消去优化函数中的w、b、ξ,定义优化之后的函数如下:

结果变成:

最终优化后的目标函数/损失函数和线性可分SVM模型基本一样,除了约束条件不同而已, 也就是说也可以使用SMO算法来求解。

在硬间隔最大化的时候,支持向量比较简单,就是离超平面的函数距离为1的样本点就是支持向量。

  • 如果β=0,那么yi(wTxi+b)?1≥0,即样本在间隔边界上或者已经被正确分类。如图中所有远离间隔边界的点。
  • 如果0<β<C ,那么ξi=0,即点在间隔边界上。
  • 如果β=C,说明这是一个可能比较异常的点,需要检查此时ξi
  • 如果0≤ξi≤1,那么点被正确分类,但是却在超平面和自己类别的间隔边界之间。如图中的样本2和4.
  • 如果ξi=1,那么点在分离超平面上,无法被正确分类。
  • 如果ξi>1,那么点在超平面的另一侧,也就是说,这个点不能被正常分类。如图中的样本1和3.

可参考:https://blog.csdn.net/james_616/article/details/72869015

备注:软间隔和硬间隔中的支持向量的规则是一样的;

软SVM流程:

?
?

五、合页损失函数

先介绍下:合页损失函数又称为hinge 损失函数,其表达式如下:

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

其中L(y(w?x+b))=[1?yi(w?x+b)]+称为合页损失函数(hinge loss function)。

对上述损失函数中的第一项可以理解为当样本分类正确且间隔大于1,即 yi(wxi + b) ≥ 1时,损失为0;而当 yi(wxi + b) < 1 时,损失为 1 - yi(wxi + b),注意在这里即使样本分类正确,但是间隔小于1 的也会计入损失,这就是支持向量机的苛刻性。下图是hinge损失函数和其他一些损失函数的比较:

绿线,如果点被正确分类,且函数间隔大于1,损失是0,否则损失是1?y(w?x+b);

黑线:对于0-1损失函数,如果正确分类,损失是0,误分类损失1,

紫线:可见0-1损失函数是不可导的。对于感知机模型,感知机的损失函数是[?yi(w?x+b)]+,这样当样本被正确分类时,损失是0,误分类时,损失是?yi(w?x+b);

对于逻辑回归之类和最大熵模型对应的对数损失,损失函数是log[1+exp(?y(w?x+b))]。

六、总结:

  • 可以解决线性数据中携带异常点的分类模型构建的问题;
  • 通过引入惩罚项系数(松弛因子),可以增加模型的泛化能力,即鲁棒性;
  • 如果给定的惩罚项系数C越小,表示在模型构建的时候,就允许存在越多的分类错误的样本, 也就表示此时模型的准确率会比较低;如果惩罚项系数越大,表示在模型构建的时候,就越不允许存在分类错误的样本,也就表示此时模型的准确率会比较高。

附件一:手写推导过程练习

?
?

原文地址:https://www.cnblogs.com/yifanrensheng/p/12354931.html

时间: 2024-10-31 19:46:01

【ML-9-1】支持向量机--软硬间隔与支持向量机的相关文章

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

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

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

? ? ? ? ? ?支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五)线性支持回归 支持向量机(Support Vecor Machine,以下简称SVM)虽然诞生只有短短的二十多年,但是自一诞生便由于它良好的分类性能席卷了机器学习领域,并牢牢压制了神经网络领域好多年.如果不考虑集成学习的算法,不考虑特定的训练数据集,在分类算法中的表现SVM说是

svm支持向量机系列(1) -- 线性支持向量机

1.主要内容 沿着之前学些机器学习基石课程中学习到的工具进行分析,该工具主要就是vc维,沿着特征转换这一目标进行探讨: (1).当数据的特征的数量很大时,如何进行特征转换?支撑向量机 (2).能不能找到具有预测性的特征然后联合起来? (3).如何发现隐藏的具有预测意义的特征?原先的神经网络到现在的深度学习技术. 这节课主要讲述svm的由来,背后的原理,最佳化的求解问题. 2.线性支持向量机的由来 (1).从线性分类器说起到svm问题的提出 如果数据线性可分,那么必然可以找到一条线对齐进行分类,计

支持向量机(SVM)的推导(线性SVM、软间隔SVM、Kernel Trick)

线性可分支持向量机 给定线性可分的训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习到的分离超平面为 \[w^{\ast }x+b^{\ast }=0\] 以及相应的决策函数 \[f\left( x\right) =sign\left(w^{\ast }x+b^{\ast } \right)\] 称为线性可分支持向量机 如上图所示,o和x分别代表正例和反例,此时的训练集是线性可分的,这时有许多直线能将两类数据正确划分,线性可分的SVM对应着能将两类数据正确划分且间隔最大的直线. 函数

支持向量机(Support Vector Machines)算法初探

1. SVM简介 支持向量机(support vector machine SVM)是一种二类分类模型.它的基本模型是定义在特征空间(feature space)上的间隔最大线性分类器 因为SVM加入了间隔最大这项约束,所以SVM有别于别的感知机,即有唯一最优解(这一约束使其具备了结构化风险最小策略特性):除此之外支持向量机还包括核技巧,这使它成为实质上的非线性分类器. 支持向量机的模型是支持向量和超分类面的距离,学习策略就是间隔最大化,求解最优解的过程的算法根据待分类问题数据集的线性性决定是否

02-31 线性支持向量机

[TOC] 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/ 线性支持向量机 在线性可分支持向量机中说到线性可分支持向量机有一个缺点是无法对异常点做处理,也正是因为这些异常点导致数据变得线性不可分或者会因为它的正好被判断为支持向量导致模型的泛化能力变差. # 异常点导致数据线性不可分图例 import matplotlib.pyplot as plt from matp

机器学习之支持向量机(Support Vector Machine)(更新中...)

支持向量机 支持向量机(support vector machines,SVMs)是一种二类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机:支持向量机还包括核技巧,这使它成为实质上的非线性分类器.支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题. 支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机(linear support vector machine in

支持向量机SVM

SVM(Support Vector Machine)有监督的机器学习方法,可以做分类也可以做回归.有好几个模型,SVM基本,SVM对偶型,软间隔SVM,核方法,前两个有理论价值,后两个有实践价值.下图来自龙老师整理课件. 基本概念 线性SVM,线性可分的分类问题场景下的SVM.硬间隔. 线性不可分SVM,很难找到超平面进行分类场景下的SVM.软间隔. 非线性SVM,核函数(应用最广的一种技巧,核函数的选择十分重要). SVR(支持向量回归).可以做回归. SVC,用SVM进行分类. 一.硬间隔

Stanford机器学习---第八讲. 支持向量机SVM

本文原始文章见http://blog.csdn.net/abcjennifer/article/details/7849812,本文添加了一些自己的理解 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.所有内容均来自Sta