07 SVM - 软间隔模型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了07 SVM - 软间隔模型相关的知识,希望对你有一定的参考价值。
参考技术A 之前两章介绍的内容是硬间隔模型:
《 05 SVM - 支持向量机 - 概念、线性可分 》
《 06 SVM - 线性可分SVM算法和案例 》
线性可分SVM中要求数据必须是线性可分的,才可以找到分类的超平面,但是有的时候线性数据集中存在少量的异常点,由于这些异常点导致了数据集不能够线性划分;直白来讲就是:正常数据本身是线性可分的,但是由于存在异常点数据,导致数据集不能够线性可分;
如果线性数据中存在异常点导致没法直接使用SVM线性分割模型的时候,我们可以通过引入 软间隔 的概念来解决这个问题;
硬间隔: 可以认为线性划分SVM中的距离度量就是硬间隔,在线性划分SVM中,要求函数距离一定是大于1的,最大化硬间隔条件为:
软间隔: SVM对于训练集中的每个样本都引入一个松弛因子(ξ),使得函数距离加上松弛因子后的值是大于等于1;这表示相对于硬间隔,对样本到超平面距离的要求放松了。
松弛因子(ξ)越大,表示样本点离超平面越近。如果松弛因子大于1,那么表示允许该样本点分错。
所以说加入松弛因子是有成本的,过大的松弛因子可能会导致模型分类错误,所以最终的目标函数就转换成:
PS: 函数中的C>0是惩罚参数,是一个超参数,类似L1/L2 norm的参数;C越大表示对误分类的惩罚越大,C越小表示对误分类的惩罚越小;C值的给定需要调参。
1、同线性可分SVM,构造软间隔最大化的约束问题对应的拉格朗日函数如下:
2、从而将我们的优化目标函数转换为:
3、优化目标同样满足KKT条件,所以使用拉格朗日对偶将优化问题转换为等价的对偶问题:
4、先求优化函数对于w、b、ξ的极小值,这个可以通过分别对优化函数L求w、b、ξ的偏导数得,从而可以得到w、b、ξ关于β和μ之间的关系。
5、将w、b、ξ的值带入L函数中,就可以消去优化函数中的w、b、ξ,定义优化之后的函数如下:
6、最终优化后的目标函数/损失函数和线性可分SVM模型基本一样,除了约束条件不同而已, 也就是说也可以使用SMO算法来求解。
在 硬间隔 最大化的时候,支持向量比较简单,就是离超平面的函数距离为1的样本点就是支持向量。
在 软间隔 中,根据KKT条件中的对偶互补条件: β(y(wx+b)-1+ξ)=0,从而有:当0<βi≤C的时候,并且ξi=0的样本点均是支持向量(即所有的0<βi<C)。即满足|wx+b|=1的所有样本均是支持向量。
PS: 软间隔和硬间隔中的支持向量的规则是一样的;
08 SVM - 软间隔模型算法流程
SVM--支持向量机
一、简介
支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。由简至繁的模型包括:
(1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;
(2)当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;
(3)当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机;
二、线性可分支持向量机
1、间隔最大化和支持向量
如果一个线性函数能够将样本分开,称这些数据样本是线性可分的。那么什么是线性函数呢?其实很简单,在二维空间中就是一条直线,在三维空间中就是一个平面,以此类推,如果不考虑空间维数,这样的线性函数统称为超平面。我们看一个简单的二维空间的例子,O代表正类,X代表负类,样本是线性可分的,但是很显然不只有这一条直线可以将样本分开,而是有无数条,我们所说的线性可分支持向量机就对应着能将数据正确划分并且间隔最大的直线。
那么我们考虑第一个问题,为什么要间隔最大呢?一般来说,一个点距离分离超平面的远近可以表示分类预测的确信度,如图中的A B两个样本点,B点被预测为正类的确信度要大于A点,所以SVM的目标是寻找一个超平面,使得离超平面较近的异类点之间能有更大的间隔,即不必考虑所有样本点,只需让求得的超平面使得离它近的点间隔最大。
接下来考虑第二个问题,怎么计算间隔?只有计算出了间隔,才能使得间隔最大化。在样本空间中,划分超平面可通过如下线性方程来描述:
其中w为法向量,决定了超平面的方向,b为位移量,决定了超平面与原点的距离。假设超平面能将训练样本正确地分类,即对于训练样本(xi,yi),满足以下公式:
公式(2)称为最大间隔假设,yi=+1 表示样本为正样本,yi=?1 表示样本为负样本,式子前面选择大于等于+1,小于等于-1只是为了计算方便,原则上可以是任意常数,但无论是多少,都可以通过对 w 的变换使其为 +1 和 -1 ,此时将公式(2)左右都乘以 yi,得到如下:
实际上等价于:
训练集中的所有样本都应满足公式(3)。如下图所示,距离超平面最近的这几个样本点满足 yiwTxi+b=1,它们被称为“支持向量”。虚线称为边界,两条虚线间的距离称为间隔(margin)。
下面我们开始计算间隔,其实间隔就等于两个异类支持向量的差在 w 上的投影,即:
其中 x+ 和x- 分别表示两个正负支持向量,因为x+和x-满足 yiwTxi+b=1,即:
推出:
代入公式(4)中可以得到:
至此,我们求得了间隔,SVM的思想是使得间隔最大化,也就是:
显然,最大化 相当于最小化 ∥W∥,为了计算方便,将公式(6)转化成如下:
公式(7)即为支持向量机的基本型。
2、对偶问题
公式(7)本身是一个凸二次规划问题,可以使用现有的优化计算包来计算,但我们选择更为高效的方法。对公式(7)使用拉格朗日乘子法得到其对偶问题,该问题的拉格朗日函数可以写为:
公式(8)分别对 w 和 b求偏导:
令其分别为0,可以得到:
将公式(9)(10)代入公式(8),可得:
最后得到:
从而:
此时,原问题就转化为以下仅关于 α 的问题:
解出α 之后,根据公式(9)可以求得w,进而求得 b,可以得到模型:
上述过程的KKT条件为:
我们分析一下,对于任意的训练样本 (xi,yi),
(1)若 αi=0,则其不会在公式(13)中的求和项中出现,也就是说,它不影响模型的训练;
(2)若 αi>0,则 ,也就是,即该样本一定在边界上,是一个支持向量。
这里显示出了支持向量机的重要特征:当训练完成后,大部分样本都不需要保留,最终模型只与支持向量有关。
三、非线性支持向量机和核函数
对于非线性问题,线性可分支持向量机并不能有效解决,要使用非线性模型才能很好地分类。先看一个例子,如下图,很显然使用直线并不能将两类样本分开,但是可以使用一条椭圆曲线(非线性模型)将它们分开。非线性问题往往不好求解,所以希望能用解线性分类问题的方法求解,因此可以采用非线性变换,将非线性问题变换成线性问题。
对于这样的问题,可以将训练样本从原始空间映射到一个更高维的空间,使得样本在这个空间中线性可分,如果原始空间维数是有限的,即属性是有限的,那么一定存在一个高维特征空间是样本可分。令?(x)表示将 x 映射后的特征向量,于是在特征空间中,划分超平面所对应的的模型可表示为:
于是有最小化函数:
其对偶问题为:
若要对公式(16)求解,会涉及到计算,这是样本xi 和 xj映射到特征空间之后的内积,由于特征空间的维数可能很高,甚至是无穷维,因此直接计算 ?xiT?xj通常是困难的,于是想到这样一个函数:
即 xi 和 xj 在特征空间中的内积等于他们在原始样本空间中通过函数 κ(xi , xj )计算的函数值,于是公式(16)写成如下:
求解后得到:
这里的函数 κ(xi , xj) 就是核函数,在实际应用中,通常人们会从一些常用的核函数里选择(根据样本数据的不同,选择不同的参数,实际上就得到了不同的核函数)。
下面给出常用的核函数:
(1)线性核:
(2)多项式核(d是多项式的次数,d=1是退化为线性核):
(3)高斯核(σ>0):
(4)拉普拉斯核(σ>0):
(5)sigmiod核(β>0,θ>0):
此外,核函数也可以通过组合得到,在此不再赘述。
四、线性支持向量机(软间隔支持向量机)与松弛变量
1、线性支持向量机
在前面的讨论中,我们假设训练样本在样本空间或者特征空间中是线性可分的,但在现实任务中往往很难确定合适的核函数使训练集在特征空间中线性可分,退一步说,即使瞧好找到了这样的核函数使得样本在特征空间中线性可分,也很难判断是不是由于过拟合造成。
线性不可分意味着某些样本点 xi , yi 不能满足间隔大于等于1的条件,样本点落在超平面与边界之间。为解决这一问题,可以对每个样本点引入一个松弛变量 ξi≥0,使得间隔加上松弛变量大于等于1,这样约束条件变为:
同时,对于每一个松弛变量ξi≥0,目标函数变为:
其中 C>0为惩罚参数,C值大时对误分类的惩罚增大, C值小时对误分类的惩罚减小,公式(21)包含两层含义:使 尽量小即间隔尽量大,同时使误分类点的个数尽量小,C是调和两者的系数。
有了公式(21),可以和线性可分支持向量机一样考虑线性支持向量机的学习过程,此时,线性支持向量机的学习问题变成如下凸二次规划问题的求解(原始问题):
2、对偶问题
与线性可分支持向量机的对偶问题解法一致,公式(22)的拉格朗日函数为:
其中 αi≥0, μi≥0 是拉格朗日乘子。
令 L(w,b,α,ξ,μ) 对 w,b, ξ 的偏导数为0可得如下:
将公式(24)(25)(26)代入公式(23)得对偶问题:
解出 α 之后,根据公式(9)可以求得 w , 进而求得 b,可以得到模型:
上述过程的KKT条件为:
我们分析一下,对于任意的训练样本 (xi,yi) ,总有 αi=0或者 。
(1)若 αi=0 ,则该样本不出现在公式(13)中,不影响模型。
(2)若 αi>0,必有 ,即 ,此时该样本为支持向量。
由于 C= αi+μi(公式26)
(1)若 αi<C, 则必有μi>0 ,根据公式(28)知 ξi=0 ,即该样本恰好落在最大间隔的边界上;
(2)若 αi=C ,则 μi=0,此时若 ξi≤1 则该样本在最大间隔内部,若 ξi>1 则样本分类错误。
参考:
https://blog.csdn.net/sinat_20177327/article/details/79729551
https://blog.csdn.net/v_july_v/article/details/7624837
https://blog.csdn.net/xianlingmao/article/details/7919597
SVM-支持向量机
一、简介
支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。由简至繁的模型包括:
(1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;
(2)当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;
(3)当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机;
二、线性可分支持向量机
1、间隔最大化和支持向量
如果一个线性函数能够将样本分开,称这些数据样本是线性可分的。那么什么是线性函数呢?其实很简单,在二维空间中就是一条直线,在三维空间中就是一个平面,以此类推,如果不考虑空间维数,这样的线性函数统称为超平面。我们看一个简单的二维空间的例子,O代表正类,X代表负类,样本是线性可分的,但是很显然不只有这一条直线可以将样本分开,而是有无数条,我们所说的线性可分支持向量机就对应着能将数据正确划分并且间隔最大的直线。
那么我们考虑第一个问题,为什么要间隔最大呢?一般来说,一个点距离分离超平面的远近可以表示分类预测的确信度,如图中的A B两个样本点,B点被预测为正类的确信度要大于A点,所以SVM的目标是寻找一个超平面,使得离超平面较近的异类点之间能有更大的间隔,即不必考虑所有样本点,只需让求得的超平面使得离它近的点间隔最大。
接下来考虑第二个问题,怎么计算间隔?只有计算出了间隔,才能使得间隔最大化。在样本空间中,划分超平面可通过如下线性方程来描述:
其中w为法向量,决定了超平面的方向,b为位移量,决定了超平面与原点的距离。假设超平面能将训练样本正确地分类,即对于训练样本(xi,yi),满足以下公式:
公式(2)称为最大间隔假设,=+1 表示样本为正样本,=?1 表示样本为负样本,式子前面选择大于等于+1,小于等于-1只是为了计算方便,原则上可以是任意常数,但无论是多少,都可以通过对 w 的变换使其为 +1 和 -1 ,此时将公式(2)左右都乘以 yi,得到如下:
实际上等价于:
训练集中的所有样本都应满足公式(3)。如下图所示,距离超平面最近的这几个样本点满足 ,它们被称为“支持向量”。虚线称为边界,两条虚线间的距离称为间隔(margin)。
下面我们开始计算间隔,其实间隔就等于两个异类支持向量的差在 w 上的投影,即:
其中 和 分别表示两个正负支持向量,因为和满足 ,即:
推出:
代入公式(4)中可以得到:
至此,我们求得了间隔,SVM的思想是使得间隔最大化,也就是:
显然,最大化 相当于最小化 ,为了计算方便,将公式(6)转化成如下:
公式(7)即为支持向量机的基本型。
2、对偶问题
公式(7)本身是一个凸二次规划问题,可以使用现有的优化计算包来计算,但我们选择更为高效的方法。对公式(7)使用拉格朗日乘子法得到其对偶问题,该问题的拉格朗日函数可以写为:
公式(8)分别对 w 和 b求偏导:
令其分别为0,可以得到:
将公式(9)(10)代入公式(8),可得:
最后得到:
从而:
此时,原问题就转化为以下仅关于 的问题:
解出 之后,根据公式(9)可以求得w,进而求得 b,可以得到模型:
上述过程的KKT条件为:
我们分析一下,对于任意的训练样本 (xi,yi),
(1)若 =0,则其不会在公式(13)中的求和项中出现,也就是说,它不影响模型的训练;
(2)若 >0,则 =0,也就是 =1,即该样本一定在边界上,是一个支持向量。
这里显示出了支持向量机的重要特征:当训练完成后,大部分样本都不需要保留,最终模型只与支持向量有关。
三、非线性支持向量机和核函数
对于非线性问题,线性可分支持向量机并不能有效解决,要使用非线性模型才能很好地分类。先看一个例子,如下图,很显然使用直线并不能将两类样本分开,但是可以使用一条椭圆曲线(非线性模型)将它们分开。非线性问题往往不好求解,所以希望能用解线性分类问题的方法求解,因此可以采用非线性变换,将非线性问题变换成线性问题。
对于这样的问题,可以将训练样本从原始空间映射到一个更高维的空间,使得样本在这个空间中线性可分,如果原始空间维数是有限的,即属性是有限的,那么一定存在一个高维特征空间是样本可分。令表示将 x 映射后的特征向量,于是在特征空间中,划分超平面所对应的的模型可表示为:
于是有最小化函数:
其对偶问题为:
若要对公式(16)求解,会涉及到计算,这是样本 和 映射到特征空间之后的内积,由于特征空间的维数可能很高,甚至是无穷维,因此直接计算 通常是困难的,于是想到这样一个函数:
即 和 在特征空间中的内积等于他们在原始样本空间中通过函数 计算的函数值,于是公式(16)写成如下:
求解后得到:
这里的函数 就是核函数,在实际应用中,通常人们会从一些常用的核函数里选择(根据样本数据的不同,选择不同的参数,实际上就得到了不同的核函数)。
下面给出常用的核函数:
(1)线性核:
(2)多项式核(d是多项式的次数,d=1是退化为线性核):
(3)高斯核():
(4)拉普拉斯核():
(5)sigmiod核():
此外,核函数也可以通过组合得到,在此不再赘述。
四、线性支持向量机(软间隔支持向量机)与松弛变量
1、线性支持向量机
在前面的讨论中,我们假设训练样本在样本空间或者特征空间中是线性可分的,但在现实任务中往往很难确定合适的核函数使训练集在特征空间中线性可分,退一步说,即使瞧好找到了这样的核函数使得样本在特征空间中线性可分,也很难判断是不是由于过拟合造成。
线性不可分意味着某些样本点 不能满足间隔大于等于1的条件,样本点落在超平面与边界之间。为解决这一问题,可以对每个样本点引入一个松弛变量 ,使得间隔加上松弛变量大于等于1,这样约束条件变为:
同时,对于每一个松弛变量,目标函数变为:
其中 为惩罚参数,C值大时对误分类的惩罚增大, C值小时对误分类的惩罚减小,公式(21)包含两层含义:使 尽量小即间隔尽量大,同时使误分类点的个数尽量小,C是调和两者的系数。
有了公式(21),可以和线性可分支持向量机一样考虑线性支持向量机的学习过程,此时,线性支持向量机的学习问题变成如下凸二次规划问题的求解(原始问题):
2、对偶问题
与线性可分支持向量机的对偶问题解法一致,公式(22)的拉格朗日函数为:
其中 是拉格朗日乘子。
令 对 w,b, 的偏导数为0可得如下:
将公式(24)(25)(26)代入公式(23)得对偶问题:
解出 之后,根据公式(9)可以求得 w , 进而求得 b,可以得到模型:
上述过程的KKT条件为:
我们分析一下,对于任意的训练样本 (xi,yi) ,总有 或者 。
(1)若 ,则该样本不出现在公式(13)中,不影响模型。
(2)若 ,必有 ,即 ,此时该样本为支持向量。
由于 (公式26)
(1)若 , 则必有 ,根据公式(28)知 ,即该样本恰好落在最大间隔的边界上;
(2)若 ,则 ,此时若 则该样本在最大间隔内部,若 则样本分类错误。
以上是关于07 SVM - 软间隔模型的主要内容,如果未能解决你的问题,请参考以下文章