【机器学习基础】软间隔支持向量机

引言

在上一小节中,我们介绍了核支持向量机。于是,不管是简单的问题还是复杂的问题,我们都可以做得到。

然而,像高斯核的方法太复杂了,可能造成过拟合的问题。导致过拟合的现象的原因有可能是你选择特征转换太强大了,导致无法用最大间隔的方法控制模型的复杂度,还有一个原因是,如果坚持将所有的数据都做到正确分类,这样有可能将噪声也考虑到模型的构建之中,这样就会将噪声拟合进你的结果中去了。

软间隔支持向量机

第一步:容忍错误的发生

这是硬间隔支持向量机(hard-margin SVM)的基本定义,其中要求所有的数据都要分类正确,并且还要选择w最小的情况:

为了缓解这样的问题,不如我们容忍一些错误的发生,将发生错误的情况加入到目标式子之中,希望能得到一个错分类情况越少越好的结果。其中参数C代表了间隔和犯错情况的相对重要性(即C是对最大间隔[large margin]和噪声容忍度[noise tolerance]的权衡和折中),C比较大的时候代表犯错越少越好,C比较小的时候代表找到的w越短越好,也就是在对的数据上的间隔越宽越好。

这个式子有一个缺点,因为存在判断是非问题(booling problem)的运算,所以这不是一个线性的式子,于是就不能用二次规划的方法来解决。并且这种方法也没法衡量错误的大小。

为了解决这些问题,我们需要提出一个新的式子,这个式子能够区分小错和大错,而且它可以继续使用二次规划的方法来求解。

第二步:对于错误的衡量

下面的式子中的ξn是用来衡量数据犯了多大的错误,而不是数据犯了几个错误。并且这样的改变,将ξ作为一个变量加入到式子中去,得到ξ的一次式,这样可以用二次规划的方法来求解。

我们用ξ来记录违规数据距离边界的距离,并将这个距离纳入到最佳化的标准里面。

参数C控制我们到底要多大的边界还是更加在意违反边界的情形越少越好。

越大的C代表,我们宁可边界窄一点,也要违反的数据少一点。

小的C代表,我们希望得到更宽的边界。

第三步:推导对偶问题

我们接下来要做的是,推导上面问题的对偶问题,得到了对偶问题就可以很轻易的引入核技巧来轻易地做特征转换(feature transform)。

原始问题是这样的:

由于现在是两个条件,所以我们使用αn和βn来构造拉格朗日函数:

得到了拉格朗日函数后,我们就可以将其转化为对偶问题,并用KKT条件来简化。

我们想对ξn做简化,通过对ξn求偏微分:

这样我们就可以用αn来表示βn了,但是由于βn>0,所以αn还要有一个限制条件:

这样我们就可以去掉ξn和βn两个变量,得到如下的式子:

上面得到的式子就和硬间隔支持向量机的对偶形式很相似了,我们就可以对b和w求偏微分,得到和标准的支持向量机对偶问题几乎一样的答案:

这就是标准的软间隔支持向量机的对偶形式:

与硬间隔支持向量机不同的是,这里的αn有C这个上限的限制。

核软间隔支持向量机

接下来,我们得到了核软间隔支持向量机的算法步骤:

这里与之前硬间隔支持向量机不同的是在求b的过程是不一样的。现在因为是一个新的二次规划问题,其KKT条件已经变化了。

求b

我们对比一下硬间隔SVM和软间隔SVM的不同:

从上图看到,在求硬间隔SVM的b参数的时候,使用KKT条件中的互补松弛特性(complementary slackness),根据两个式子相乘为0,当αn>0的时候(即对应支持向量),求得b的表达式。

现在,我们在观察软间隔SVM的互补松弛特性。

根据上面两个式子,我们令αs不等于C,这样就使得ξs=0。这样我们就可以得到b的式子。

经过上面的一番解释,我们知道,这里要求b,不是像硬间隔SVM中那样要找一个任意的支持向量来计算b,而是找一个自由的支持向量(free SV),来计算b。

不同的C对应的效果

上面的图像是使用高斯核软间隔SVM,但是不同C的值的不同的分类效果。

当C=1的时候,蓝色区域表示圆圈的区域,红色区域表示红叉的区域,灰色的区域表示边界部分。这里我们看到存在错误的情况。

当C=10的时候,我们通过使用比较大的C来控制,我们希望分类要尽量减少错误,这里我们发现灰色的边界区域变窄了,但是犯错的数据减少了。

当C=100的时候,犯错的数据变少了,但是会出现过拟合的问题。

这告诉我们,要通过选择参数来避免过拟合问题。

αn的物理意义

我们可以根据之前的互补松弛特性的两个式子,将数据分成三种情况:

对于0 < αn < C的情况,ξn=0,这里对应的是在边界上的支持向量的数据

对于αn=0,ξn=0,这是没有违反边界,被正确分类的数据,这些点在边界的外面

对于αn=C,这种情形是违反边界的数据,图中用三角标注的数据,我们使用ξn记录下来数据到边界中线的距离(这里违反的数据有比较小的违反,即虽然在边界内,但是没有被错误分类;另一种是被错误分类的数据,是比较大的违反)

这里的αn的不同情况对于我们进行数据的分析是很有帮助的,它的不同的值能够说明其所代表的数据与边界是什么位置关系。

模型选择

通过交叉检验来选择模型参数

上面这个图表示的是使用高斯核SVM在不同的C和不同的γ的不同的边界表现,其中横轴对应不同C,而纵轴代表不同的γ。

上面这个图表示了使用交叉验证的方法我们选择误差最小的那个模型参数,我们这里只能选择几个不同的C和γ,比较一下哪个参数组合形式比较好。

SVM留一交叉验证误差与支持向量的关系

SVM中有个很有意思是关系,留一交叉验证的误差会小于等于支持向量在所有数据中的比例。

如果将非支持向量的那个数据去除,这对找到构造边界的最佳解没有影响,所以非支持向量在留一交叉验证的误差上的贡献一定是0,而支持向量在留一交叉验证的误差上的贡献可能是0也可能是1。所以得到了这个限制关系。

于是我们也可以根据支持向量的数量来进行模型参数的选择,但值得注意的是,支持向量的数量只能用于估计一个上限,但不一定是最好的,所以通常利用这种关系来排除一些明显不好的模型参数。

转载请注明作者Jason Ding及其出处

GitCafe博客主页(http://jasonding1354.gitcafe.io/)

Github博客主页(http://jasonding1354.github.io/)

CSDN博客(http://blog.csdn.net/jasonding1354)

简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)

百度搜索jasonding1354进入我的博客主页

时间: 2024-10-26 02:27:31

【机器学习基础】软间隔支持向量机的相关文章

【机器学习基础】对偶支持向量机

引言 在上一小节中,我们介绍,用二次规划的方法来求解支持向量机的问题.如果用非线性的特征转化的方式,可以在一个更复杂的Z空间里做二次规划.这种思想是希望通过最大间隔的方式来控制模型的复杂度,通过特征转换来实现复杂的边界. 但是这引入了新的问题:在进行特征转换之后,在新的高维空间中,求解二次规划问题就会变得很困难.甚至在无限大的维度上求解最佳化的问题就变得不可能了. 所以,这一小节,我们要解答的是,通过非常复杂的特征转换,甚至无限维的特征转换,该如何移除在Z空间上对高维度的依赖. 对偶问题 对于原

【机器学习基础】核支持向量机

引言 在上一小节中,我们介绍了SVM的对偶形式,该形式也可以使用二次规划的方式来求解. 这个对偶形式告诉我们SVM背后的一些集合意义,再者,有了这个对偶问题,我们要求解的难度和转换的高维空间的维度好像没有关系. 在这一小节中,我们就之前未解决的问题继续探讨,使用核技巧的方式高效求解SVM. 核技巧(Kernel Trick) 在上一小节二次规划问题中的Q矩阵的求解中,我们要计算Z空间的两个向量的内积,这个计算可以看做是先将向量x进行空间转换得到高维向量z,然后再做内积.但是,如果我们可以将这两步

支持向量机(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对应着能将两类数据正确划分且间隔最大的直线. 函数

【机器学习基础】核逻辑回归

将软间隔支持向量机看做正则化模型 上一小节中我们介绍了软间隔支持向量机,该模型允许有错分类数据的存在,从而使模型对数据有更好的适应性,有效避免过拟合的问题. 现在我们回顾一下松弛变量ξn,我们用ξn来记录违反分类边界的数据到边界的距离. 我们可以从另外一个角度,考虑一下ξn的计算: 对于任何一个点,如果该点违反了边界,那么ξn记录了其到边界的距离:如果没有违反,ξn为0. 所以我们可以用下面这个式子来表示: 与正则化模型的比较 在正则化中,我们用w的长度来控制复杂度,并且我们希望某个误差度量最小

【机器学习基础】线性可分支持向量机

引言 接下里的一系列有关机器学习的博文,我将具体的介绍常用的算法,并且希望在这个过程中尽可能地结合实际应用更加深入的理解其精髓,希望所付出的努力能得到应有的回报. 接下来的有关机器学习基础博文主要根据机器学习技法课程的学习,围绕特征转换(feature transforms)这个主要工具,从以下三个方向进行探讨: 如果现在有很多特征转换可以使用的时候,我们该如何运用这些特征转换,如何控制特征转换中的复杂度的问题,从这个角度刺激了支持向量机(Support Vector Machine)算法的发展

2. 支持向量机(SVM)软间隔

1. 前言 在前一篇1. 支持向量机(SVM)原理中,我们对线性可分SVM的模型和损失函数优化做了总结.但是大家有没发现,之前的文章介绍的支持向量机会无法处理一些情况,比如在有0,1两类,在0类的中间出现了几个1类的异常点,这样的话要之前最原始的SVM绝对分离两个类基本是不可能的了.本文对支持向量机做一个推广,允许超平面能够错分一些点,来达到能分离异常点. 2. SVM异常点问题 有时候本来数据的确是可分的,也就是说可以用线性分类SVM的学习方法来求解,但是却因为混入了异常点,导致不能线性可分,

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

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

线性可分支持向量机与软间隔最大化--SVM

线性可分支持向量机与软间隔最大化--SVM 给定线性可分的数据集 假设输入空间(特征向量)为,输出空间为. 输入 表示实例的特征向量,对应于输入空间的点: 输出 表示示例的类别. 我们说可以通过间隔最大化或者等价的求出相应的凸二次规划问题得到的分离超平面 以及决策函数: 但是,上述的解决方法对于下面的数据却不是很友好, 例如,下图中黄色的点不满足间隔大于等于1的条件 这样的数据集不是线性可分的, 但是去除少量的异常点之后,剩下的点都是线性可分的, 因此, 我们称这样的数据集是近似线性可分的. 对

支持向量机(SVM)(五)--软间隔

上一节讲线性SVM时,文末提到在线性可分的情况下,找到一个支持向量,可求得b 但是当出现下图实例时,无法找到一条线将实例分为两类,所谓线性不可分问题. 针对这种情况SVM提出了软间隔(soft margin),相对于硬间隔来说,简单将线性SVM看做硬间隔. 回顾硬间隔时优化目标: min $\frac{1}{2}\left \| w_{2} \right \|_{2}^{2}$ $s.t y_{i}(w\cdot x_{i}+b)≥1$ 在软间隔中,我们给每个样本点的函数距离减去了一个松弛变量(