机器学习(九):支持向量机SVM(超详细理论基础)

机器学习(九):支持向量机SVM

一,前言

从学习机器学习到现在,也实现了大大小小得多个算法了。下面便会对机器学习中较为出名的一种算法SVM进行原理阐述和理论推导。可能内容比较多,还需要慢慢查看。

二,SVM是什么?

 SVM的英文全称是Support Vector Machines,我们叫它支持向量机。支持向量机是我们用于分类的一种算法。让我们以一个小故事的形式,开启我们的SVM之旅吧。
 在很久以前的有两个小孩在玩分类小游戏,游戏规则是用一根小棒将两种不同颜色的小球分成两个部分。第一个小孩有规律地在桌子上。

在这里插入图片描述
另一个小孩很快地就将两个分类完成。
在这里插入图片描述
于是小孩又在桌上放了更多的球,似乎有一个球站错了阵营。显然,另一个小孩需要对棍做出调整。
在这里插入图片描述
小孩思考了一会,很快地得出了答案。
在这里插入图片描述
放球的小孩不开心了,于是将两种颜色的小球随便洒在了桌面上,如图所示:
在这里插入图片描述
放棍子的小孩看到这个,无论如何也不能用一根棍子将其划分,一着急,将桌子一拍,球都飞到了空中,恰好的,小孩突然发现将一张纸插到两种球的中间
在这里插入图片描述
放球的小孩从上往下看,看到的就是一条曲线:
在这里插入图片描述
再之后,这个故事流传千古。无聊的大人们,把这些球叫做data,把棍子叫做classifier, 找到最大间隙的trick叫做optimization,拍桌子叫做kernelling, 那张纸叫做hyperplane。

概述一下:
 当一个分类问题,数据是线性可分的,也就是用一根棍就可以将两种小球分开的时候,我们只要将棍的位置放在让小球距离棍的距离最大化的位置即可,寻找这个最大间隔的过程,就叫做最优化。但是,现实往往是很残酷的,一般的数据是线性不可分的,也就是找不到一个棍将两种小球很好的分类。这个时候,我们就需要像大侠一样,将小球拍起,用一张纸代替小棍将小球进行分类。想要让数据飞起,我们需要的东西就是核函数(kernel),用于切分小球的纸,就是超平面。

三,线性SVM

先看一下线性可分的二分类问题
在这里插入图片描述
上图中的(a)是已有的数据,红色和蓝色分别代表两个不同的类别。数据显然是线性可分的,但是将两类数据点分开的直线显然不止一条。上图的(b)和©分别给出了B、C两种不同的分类方案,其中黑色实线为分界线,术语称为“决策面”。每个决策面对应了一个线性分类器。虽然从分类结果上看,分类器A和分类器B的效果是相同的。但是他们的性能是有差距的,看下图:
在这里插入图片描述
在"决策面"不变的情况下,我又添加了一个红点。可以看到,分类器B依然能很好的分类结果,而分类器C则出现了分类错误。显然分类器B的"决策面"放置的位置优于分类器C的"决策面"放置的位置,SVM算法也是这么认为的,它的依据就是分类器B的分类间隔比分类器C的分类间隔大。这里涉及到第一个SVM独有的概念"分类间隔"。在保证决策面方向不变且不会出现错分样本的情况下移动决策面,会在原来的决策面两侧找到两个极限位置(越过该位置就会产生错分现象),如虚线所示。虚线的位置由决策面的方向和距离原决策面最近的几个样本的位置决定。而这两条平行虚线正中间的分界线就是在保持当前决策面方向不变的前提下的最优决策面。两条虚线之间的垂直距离就是这个最优决策面对应的分类间隔。显然每一个可能把数据集正确分开的方向都有一个最优决策面(有些方向无论如何移动决策面的位置也不可能将两类样本完全分开),而不同方向的最优决策面的分类间隔通常是不同的,那个具有“最大间隔”的决策面就是SVM要寻找的最优解。而这个真正的最优解对应的两侧虚线所穿过的样本点,就是SVM中的支持样本点,称为"支持向量"。

四,公式推导

1.数学建模

求解这个"决策面"的过程,就是最优化。一个最优化问题通常有两个基本的因素:

  1. 目标函数,也就是你希望什么东西的什么指标达到最好;
  2. 优化对象,你期望通过改变哪些因素来使你的目标函数达到最优。
    在线性SVM算法中,目标函数显然就是那个"分类间隔",而优化对象则是决策面。所以要对SVM问题进行数学建模,首先要对上述两个对象(“分类间隔"和"决策面”)进行数学描述。按照一般的思维习惯,我们先描述决策面。数学建模的时候,先在二维空间建模,然后再推广到多维。
(1)“决策面”方程

二维空间下一条直线的方式如下所示:
y = a x + b y = ax+b y=ax+b
将原来的x轴变成 x 1 x_1 x1,y轴变成 x 2 x_2 x2:
x 2 = a x 1 + b x_2 = ax_1 + b x2=ax1+b
移项得:
a x 1 − x 2 + b = 0 ax_1 - x_2+ b=0 ax1x2+b=0
将公式向量化得:

在这里插入图片描述
进一步向量化,用w列向量和x列向量和标量γ进一步向量化:
在这里插入图片描述
其中,向量w和x分别为:
在这里插入图片描述
这里w1=a,w2=-1。我们都知道,最初的那个直线方程a和b的几何意义,a表示直线的斜率,b表示截距,a决定了直线与x轴正方向的夹角,b决定了直线与y轴交点位置。那么向量化后的直线的w和r的几何意义是什么呢?
现在假设:
在这里插入图片描述
可得:
在这里插入图片描述
在坐标轴上画出直线和向量w:在这里插入图片描述
 蓝色的线代表向量w,红色的线代表直线y。我们可以看到向量w和直线的关系为垂直关系。这说明了向量w也控制这直线的方向,只不过是与这个直线的方向是垂直的。标量γ的作用也没有变,依然决定了直线的截距。此时,我们称w为直线的法向量。

 二维空间的直线方程已经推导完成,将其推广到n维空间,就变成了超平面方程。(一个超平面,在二维空间的例子就是一个直线)但是它的公式没变,依然是:
在这里插入图片描述
不同之处在于:
在这里插入图片描述
我们已经顺利推导出了"决策面"方程,它就是我们的超平面方程,之后,我们统称其为超平面方程。

(2)"分类间隔"方程

现在,我们依然对于一个二维平面的简单例子进行推导。
在这里插入图片描述
我们已经知道间隔的大小实际上就是支持向量对应的样本点到决策面的距离的二倍。那么图中的距离d我们怎么求?我们高中都学过,点到直线的距离距离公式如下:

在这里插入图片描述
公式中的直线方程为Ax0+By0+C=0,点P的坐标为(x0,y0)。
现在,将直线方程扩展到多维,求得我们现在的超平面方程,对公式进行如下变形:
在这里插入图片描述
这个d就是"分类间隔"。其中||w||表示w的二范数,求所有元素的平方和,然后再开方。比如对于二维平面:
在这里插入图片描述
在这里插入图片描述
目的是为了找出一个分类效果好的超平面作为分类器。分类器的好坏的评定依据是分类间隔W=2d的大小,即分类间隔w越大,我们认为这个超平面的分类效果越好。此时,求解超平面的问题就变成了求解分类间隔W最大化的为题。W的最大化也就是d最大化的。

(3)约束条件

看起来,我们已经顺利获得了目标函数的数学形式。但是为了求解w的最大值。我们不得不面对如下问题:

  • 如何判断超平面是否将样本点正确分类?
  • 我们知道要求距离d的最大值,我们首先需要找到支持向量上的点,怎么在众多的点中选出支持向量上的点呢?
    上述我们需要面对的问题就是约束条件,也就是说我们优化的变量d的取值范围受到了限制和约束。事实上约束条件一直是最优化问题里最让人头疼的东西。但既然我们已经知道了这些约束条件确实存在,就不得不用数学语言对他们进行描述。但SVM算法通过一些巧妙的小技巧,将这些约束条件融合到一个不等式里面。

这个二维平面上有两种点,我们分别对它们进行标记:

  • 红颜色的圆点标记为1,我们人为规定其为正样本;
  • 蓝颜色的五角星标记为-1,我们人为规定其为负样本。

对每个样本点xi加上一个类别标签yi:
在这里插入图片描述
如果我们的超平面方程能够完全正确地对上图的样本点进行分类,就会满足下面的方程:
在这里插入图片描述
如果我们要求再高一点,假设决策面正好处于间隔区域的中轴线上,并且相应的支持向量对应的样本点到决策面的距离为d,那么公式进一步写成:
在这里插入图片描述
上述公式的解释就是,对于所有分类标签为1和-1样本点,它们到直线的距离都大于等于d(支持向量上的样本点到超平面的距离)。公式两边都除以d,就可以得到:
在这里插入图片描述
其中,
在这里插入图片描述
因为||w||和d都是标量。所以上述公式的两个矢量,依然描述一条直线的法向量和截距。
在这里插入图片描述
上述两个公式,都是描述一条直线,数学模型代表的意义是一样的。现在,让我们对wd和γd重新起个名字,就叫它们w和γ。因此,我们就可以说:“对于存在分类间隔的两类样本点,我们一定可以找到一些超平面,使其对于所有的样本点均满足下面的条件:”
在这里插入图片描述
上述方程即给出了SVM最优化问题的约束条件。这时候,可能有人会问了,为什么标记为1和-1呢?因为这样标记方便我们将上述方程变成如下形式:
在这里插入图片描述
正是因为标签为1和-1,才方便我们将约束条件变成一个约束方程,从而方便我们的计算。

(4) 线性SVM优化问题基本描述

现在整合一下思路,我们已经得到我们的目标函数:
在这里插入图片描述
我们的优化目标是是d最大化。我们已经说过,我们是用支持向量上的样本点求解d的最大化的问题的。那么支持向量上的样本点有什么特点呢?
在这里插入图片描述
你赞同这个观点吗?所有支持向量上的样本点,都满足如上公式。如果不赞同,请重看"分类间隔"方程推导过程。
现在我们就可以将我们的目标函数进一步化简:
在这里插入图片描述
因为,我们只关心支持向量上的点。随后我们求解d的最大化问题变成了||w||的最小化问题。进而||w||的最小化问题等效于
在这里插入图片描述
为什么要做这样的等效呢?这是为了在进行最优化的过程中对目标函数求导时比较方便,但这绝对不影响最优化问题最后的求解。我们将最终的目标函数和约束条件放在一起进行描述:
在这里插入图片描述
这里n是样本点的总个数,缩写s.t.表示"Subject to",是"服从某某条件"的意思。上述公式描述的是一个典型的不等式约束条件下的二次型函数优化问题,同时也是支持向量机的基本数学模型

(5)求解准备

我们已经得到支持向量机的基本数学模型,接下来的问题就是如何根据数学模型,求得我们想要的最优解。在学习求解方法之前,我们得知道一点,想用我下面讲述的求解方法有一个前提,就是我们的目标函数必须是凸函数。理解凸函数,我们还要先明确另一个概念,凸集。在凸几何中,凸集(convex set)是在)凸组合下闭合的放射空间的子集。看一幅图可能更容易理解:
在这里插入图片描述
左右量图都是一个集合。如果集合中任意2个元素连线上的点也在集合中,那么这个集合就是凸集。显然,上图中的左图是一个凸集,上图中的右图是一个非凸集。

凸函数的定义也是如此,其几何意义表示为函数任意两点连线上的值大于对应自变量处的函数值。若这里凸集C即某个区间L,那么,设函数f为定义在区间L上的函数,若对L上的任意两点x1,x2和任意的实数λ,λ属于(0,1),总有:
在这里插入图片描述
则函数f称为L上的凸函数,当且仅当其上镜图(在函数图像上方的点集)为一个凸集。再看一幅图,也许更容易理解:
在这里插入图片描述
像上图这样的函数,它整体就是一个非凸函数,我们无法获得全局最优解的,只能获得局部最优解。比如红框内的部分,如果单独拿出来,它就是一个凸函数。对于我们的目标函数:
在这里插入图片描述
很显然,它是一个凸函数。所以,可以使用我接下来讲述的方法求取最优解。

通常我们需要求解的最优化问题有如下几类:

  • 无约束优化问题,可以写为:
    在这里插入图片描述

  • 有等式约束的优化问题,可以写为:
    在这里插入图片描述

  • 有不等式约束的优化问题,可以写为:
    在这里插入图片描述
    对于第(a)类的优化问题,尝试使用的方法就是费马大定理(Fermat),即使用求取函数f(x)的导数,然后令其为零,可以求得候选最优值,再在这些候选值中验证;如果是凸函数,可以保证是最优解。这也就是我们高中经常使用的求函数的极值的方法。

对于第(b)类的优化问题,常常使用的方法就是拉格朗日乘子法(Lagrange Multiplier) ,即把等式约束h_i(x)用一个系数与f(x)写为一个式子,称为拉格朗日函数,而系数称为拉格朗日乘子。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值。

对于第©类的优化问题,常常使用的方法就是KKT条件。同样地,我们把所有的等式、不等式约束与f(x)写为一个式子,也叫拉格朗日函数,系数也称拉格朗日乘子,通过一些条件,可以求出最优值的必要条件,这个条件称为KKT条件。

必要条件和充要条件如果不理解,可以看下面这句话:

  • A的必要条件就是A可以推出的结论
  • A的充分条件就是可以推出A的前提
    了解到这些,现在让我们再看一下我们的最优化问题:
    在这里插入图片描述
    现在,我们的这个对优化问题属于哪一类?很显然,它属于第©类问题。在学习求解最优化问题之前,我们还要学习两个东西:拉格朗日函数和KKT条件。
(6)拉格朗日函数

首先,我们先要从宏观的视野上了解一下拉格朗日对偶问题出现的原因和背景。
我们知道我们要求解的是最小化问题,所以一个直观的想法是如果我能够构造一个函数,使得该函数在可行解区域内与原目标函数完全一致,而在可行解区域外的数值非常大,甚至是无穷大,那么这个没有约束条件的新目标函数的优化问题就与原来有约束条件的原始目标函数的优化问题是等价的问题。这就是使用拉格朗日方程的目的,它将约束条件放到目标函数中,从而将有约束优化问题转换为无约束优化问题。
随后,人们又发现,使用拉格朗日获得的函数,使用求导的方法求解依然困难。进而,需要对问题再进行一次转换,即使用一个数学技巧:拉格朗日对偶。
所以,显而易见的是,我们在拉格朗日优化我们的问题这个道路上,需要进行下面二个步骤:

  • 将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数
  • 使用拉格朗日对偶性,将不易求解的优化问题转化为易求解的优化

下面,进行第一步:将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数
公式变形如下:
在这里插入图片描述
其中αi是拉格朗日乘子,αi大于等于0,是我们构造新目标函数时引入的系数变量(我们自己设置)。现在我们令:

在这里插入图片描述
当样本点不满足约束条件时,即在可行解区域外:
在这里插入图片描述
此时,我们将αi设置为正无穷,此时θ(w)显然也是正无穷。
当样本点满足约束条件时,即在可行解区域内:
在这里插入图片描述
此时,显然θ(w)为原目标函数本身。我们将上述两种情况结合一下,就得到了新的目标函数:
在这里插入图片描述
此时,再看我们的初衷,就是为了建立一个在可行解区域内与原目标函数相同,在可行解区域外函数值趋近于无穷大的新函数,现在我们做到了
现在,我们的问题变成了求新目标函数的最小值,即:
在这里插入图片描述
这里用p表示这个问题的最优值,且和最初的问题是等价的。
接下来,我们进行第二步:将不易求解的优化问题转化为易求解的优化
我们看一下我们的新目标函数,先求最大值,再求最小值。这样的话,我们首先就要面对带有需要求解的参数w和b的方程,而αi又是不等式约束,这个求解过程不好做。所以,我们需要使用拉格朗日函数对偶性,将最小和最大的位置交换一下,这样就变成了
在这里插入图片描述
交换以后的新问题是原始问题的对偶问题,这个新问题的最优值用d
来表示。而且d*<=p*。我们关心的是d=p的时候,这才是我们要的解。需要什么条件才能让d=p呢?

  • 首先必须满足这个优化问题是凸优化问题。
  • 其次,需要满足KKT条件。

凸优化问题的定义是:求取最小值的目标函数为凸函数的一类优化问题。目标函数是凸函数我们已经知道,这个优化问题又是求最小值。所以我们的最优化问题就是凸优化问题。
接下里,就是探讨是否满足KKT条件了。

(7)KKT条件

我们已经使用拉格朗日函数对我们的目标函数进行了处理,生成了一个新的目标函数。通过一些条件,可以求出最优值的必要条件,这个条件就是接下来要说的KKT条件。一个最优化模型能够表示成下列标准形式:

**加粗样式**
KKT条件的全称是Karush-Kuhn-Tucker条件,KKT条件是说最优值条件必须满足以下条件:

  • 条件一:经过拉格朗日函数处理之后的新目标函数L(w,b,α)对x求导为零:
  • 条件二:h(x) = 0;
  • 条件三:α*g(x) = 0;
    对于我们的优化问题:
    在这里插入图片描述
    三个条件都满足。现在,凸优化问题和KKT都满足了,问题转换成了对偶问题。而求解这个对偶学习问题,可以分为三个步骤:首先要让L(w,b,α)关于w和b最小化,然后求对α的极大,最后利用SMO算法求解对偶问题中的拉格朗日乘子。现在,我们继续推导。
(8)对偶问题求解

第一步
根据上述推导已知:
在这里插入图片描述
首先固定α,要让L(w,b,α)关于w和b最小化,我们分别对w和b偏导数,令其等于0,即:
在这里插入图片描述
将上述结果带回L(w,b,α)得到:
在这里插入图片描述
从上面的最后一个式子,我们可以看出,此时的L(w,b,α)函数只含有一个变量,即αi。
第二步:
现在内侧的最小值求解完成,我们求解外侧的最大值,从上面的式子得到
在这里插入图片描述
现在我们的优化问题变成了如上的形式。对于这个问题,我们有更高效的优化算法,即序列最小优化(SMO)算法。我们通过这个优化算法能得到α,再根据α,我们就可以求解出w和b,进而求得我们最初的目的:找到超平面,即"决策平面"。
对于上述问题,我们就可以使用SMO算法进行求解了,但是,SMO算法又是什么呢?

2.SMO算法

现在,我们已经得到了可以用SMO算法求解的目标函数,但是对于怎么编程实现SMO算法还是感觉无从下手。那么现在就聊聊如何使用SMO算法进行求解。

(1)Platt的SMO算法

1996年,John Platt发布了一个称为SMO的强大算法,用于训练SVM。SM表示序列最小化(Sequential Minimal Optimizaion)。Platt的SMO算法是将大优化问题分解为多个小优化问题来求解的。这些小优化问题往往很容易求解,并且对它们进行顺序求解的结果与将它们作为整体来求解的结果完全一致的。在结果完全相同的同时,SMO算法的求解时间短很多。

SMO算法的目标是求出一系列alpha和b,一旦求出了这些alpha,就很容易计算出权重向量w并得到分隔超平面。

SMO算法的工作原理是:每次循环中选择两个alpha进行优化处理。一旦找到了一对合适的alpha,那么就增大其中一个同时减小另一个。这里所谓的"合适"就是指两个alpha必须符合以下两个条件,条件之一就是两个alpha必须要在间隔边界之外,而且第二个条件则是这两个alpha还没有进行过区间化处理或者不在边界上。

(2)SMO算法的解读

先来定义特征到结果的输出函数为:
在这里插入图片描述
接着,我们回忆一下原始优化问题,如下:
在这里插入图片描述
求导得:
在这里插入图片描述
将上述公式带入输出函数中:
在这里插入图片描述
与此同时,拉格朗日对偶后得到最终的目标化函数:
在这里插入图片描述
将目标函数变形,在前面增加一个符号,将最大值问题转换成最小值问题:
在这里插入图片描述
实际上,对于上述目标函数,是存在一个假设的,即数据100%线性可分。但是,目前为止,我们知道几乎所有数据都不那么"干净"。这时我们就可以通过引入所谓的松弛变量ξ(slack variable)和惩罚参数C,来允许有些数据点可以处于超平面的错误的一侧。此时我们的约束条件有所改变:
在这里插入图片描述
同时,考虑到松弛变量和松弛变量ξ和惩罚参数C,目标函数变为:
在这里插入图片描述
原始问题的拉格朗日函数变为:
在这里插入图片描述
对偶问题拉格朗日函数的极大极小问题,得到以下等价优化问题:
在这里插入图片描述
则,原始问题的解对偶问题的解相同需要满足KKT对偶互补条件,即:
在这里插入图片描述
对样本点xi,记SVM的输出结果为:
在这里插入图片描述
Platt在序列最小优化(SMO)方法1中提到,对正定二次优化问题(a positive definite QP problem)的优化点的充分必要条件为KKT条件(Karush-Kuhn-Tucker conditions)。
对于所有的i,若满足以下条件,QP问题可解。KKT条件如下:
在这里插入图片描述
其中yiui就是每个样本点的函数间隔。

KKT 条件推导:
在这里插入图片描述
因此:
在这里插入图片描述
而最优解需要满足KKT条件,即上述3个条件都得满足,如果存在不能满足KKT条件的αi,那么需要更新这些αi,这是第一个约束条件。此外,更新的同时还要受到第二个约束条件的限制,即:
在这里插入图片描述
因为这个条件,我们同时更新两个α值,因为只有成对更新,才能保证更新之后的值仍然满足和为0的约束,假设我们选择的两个乘子为α1和α2:
在这里插入图片描述
其中, ksi为常数。因为两个因子不好同时求解,所以可以先求第二个乘子α2的解(α2 new),得到α2的解(α2 new)之后,再用α2的解(α2 new)表示α1的解(α1 new )。为了求解α2 new ,得先确定α2 new的取值范围。假设它的上下边界分别为H和L,那么有:
在这里插入图片描述
接下来,综合下面两个条件:
在这里插入图片描述
当y1不等于y2时,即一个为正1,一个为负1的时候,可以得到:
在这里插入图片描述
所以有:
在这里插入图片描述
此时,取值范围如下图所示:
在这里插入图片描述
当y1等于y2时,即两个都为正1或者都为负1,可以得到:
在这里插入图片描述
所以有:
在这里插入图片描述
此时,取值范围如下图所示:
在这里插入图片描述
如此,根据y1和y2异号或同号,可以得出α2 new的上下界分别为:
在这里插入图片描述
这个界限就是编程的时候需要用到的。已经确定了边界,接下来,就是推导迭代式,用于更新 α值。
我们已经知道,更新α的边界,接下来就是讨论如何更新α值。我们依然假设选择的两个乘子为α1和α2。固定这两个乘子,进行推导。于是目标函数变成了:
在这里插入图片描述
为了描述方便,我们定义如下符号:
在这里插入图片描述
最终目标函数变为:
在这里插入图片描述
我们不关心constant的部分,因为对于α1和α2来说,它们都是常数项,在求导的时候,直接变为0。对于这个目标函数,如果对其求导,还有个未知数α1,所以要推导出α1和α2的关系,然后用α2代替α1,这样目标函数就剩一个未知数了,我们就可以求导了,推导出迭代公式。所以现在继续推导α1和α2的关系。注意第一个约束条件:
在这里插入图片描述
我们在求α1和α2的时候,可以将α3,α4,…,αn和y3,y4,…,yn看作常数项。因此有:
在这里插入图片描述
我们不必关心常数B的大小,现在将上述等式两边同时乘以y1,得到(y1y1=1):
在这里插入图片描述
其中γ为常数By1,我们不关心这个值,s=y1y2。接下来,我们将得到的α1带入W(α2)公式得:
在这里插入图片描述
这样目标函数中就只剩下α2了,我们对其求偏导(注意:s=y1y2,所以s的平方为1,y1的平方和y2的平方均为1):
在这里插入图片描述
继续化简,将s=y1y2带入方程。
在这里插入图片描述
我们令:在这里插入图片描述
Ei为误差项,η为学习速率。
再根据我们已知的公式:
在这里插入图片描述
将α2 new继续化简得:
在这里插入图片描述
这样,我们就得到了最终需要的迭代公式。这个是没有经过剪辑是的解,需要考虑约束:
在这里插入图片描述
据之前推导的α取值范围,我们得到最终的解析解为:
在这里插入图片描述
又因为:
在这里插入图片描述
消去γ得:
在这里插入图片描述
这样,我们就知道了怎样计算α1和α2了,也就是如何对选择的α进行更新。
当我们更新了α1和α2之后,需要重新计算阈值b,因为b关系到了我们f(x)的计算,也就关系到了误差Ei的计算。
我们要根据α的取值范围,去更正b的值,使间隔最大化。当α1 new在0和C之间的时候,根据KKT条件可知,这个点是支持向量上的点。因此,满足下列公式:
在这里插入图片描述
公式两边同时乘以y1得(y1y1=1):
在这里插入图片描述
因为我们是根据α1和α2的值去更新b,所以单独提出i=1和i=2的时候,整理可得:
在这里插入图片描述
其中前两项为:
在这里插入图片描述
将上述两个公式,整理得:
在这里插入图片描述
同理可得b2 new为:
在这里插入图片描述
当b1和b2都有效的时候,它们是相等的,即:
在这里插入图片描述
当两个乘子都在边界上,则b阈值和KKT条件一致。当不满足的时候,SMO算法选择他们的中点作为新的阈值:
在这里插入图片描述
最后,更新所有的α和b,这样模型就出来了,从而即可求出我们的分类函数。

现在,让我们梳理下SMO算法的步骤:

  • 步骤1:计算误差:
    在这里插入图片描述
  • 步骤2:计算上下界L和H:
    在这里插入图片描述
  • 步骤3:计算η:
    在这里插入图片描述
  • 步骤4:更新αj:
    在这里插入图片描述
  • 步骤5:根据取值范围修剪αj:
    在这里插入图片描述
  • 步骤6:更新αi:
    在这里插入图片描述
  • 步骤7:更新b1和b2:
    在这里插入图片描述
  • 步骤8:根据b1和b2更新b:
    在这里插入图片描述
    转载博客:https://cuijiahua.com/blog/2017/11/ml_8_svm_1.html
  • 17
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 支持向量机(Support Vector Machine,简称SVM)是一种机器学习算法,主要用于进行分类和回归分析。其理论基础包括以下几个方面。 首先,SVM基于统计学习理论中的结构风险最小化原理。该原理认为,为了提高模型的泛化能力,除了要最小化经验风险(即训练集上的错误率)外,还要最小化模型的复杂度。SVM通过引入间隔来度量模型的复杂度,使模型在保持较低错误率的同时,尽可能远离样本的边界。 其次,SVM基于线性可分和间隔最大化的思想。对于线性可分的数据集,SVM的目标是找到一个平面,将不同类别的样本完全分开,并使两个类别样本之间的间隔最大化。通过最大化间隔,SVM能够更好地处理噪声和异常点的情况,提高模型的鲁棒性。 另外,SVM基于核函数的非线性映射。对于线性不可分的情况,SVM采用核函数对样本进行非线性映射,将其转化为线性可分的问题。常用的核函数有线性核、多项式核和高斯核等。通过核函数的引入,SVM能够处理更加复杂的数据集,并提高分类和回归的准确性。 最后,SVM理论基础还涉及到拉格朗日乘子法和对偶表示。SVM将优化问题转化为对偶问题,并通过求解对偶问题得到最优解。通过引入拉格朗日乘子,SVM能够处理约束条件,进一步提高算法的效率。 综上所述,支持向量机理论基础包括结构风险最小化、线性可分和间隔最大化、非线性映射和核函数、拉格朗日乘子法和对偶表示等方面。这些理论基础SVM的应用提供了坚实的理论支撑,并在实际问题中得到了广泛应用。 ### 回答2: 支持向量机(Support Vector Machine,SVM)是一种常用的机器学习方法,在分类和回归问题中都有广泛应用。SVM的主要思想是将数据转换为高维特征空间,通过在特征空间中找到一个平面来实现分类或回归。SVM的基本原理是找到一个最佳的分割平面,使得样本点到平面的最小距离最大化。 SVM理论基础主要包括以下几个方面: 1. 函数间隔和几何间隔:利用平面来将样本分割,对于每个样本点都可以计算其到平面的函数间隔。为了消除样本数量的影响,可以将函数间隔标准化为几何间隔。几何间隔是样本点到平面的真实距离。 2. 最大间隔分类器:最大间隔分类器的目标是寻找一个平面,使得训练样本点的几何间隔最大化。最大间隔分类器的优势是具有较好的泛化能力。 3. 对偶问题:SVM问题可以通过对偶问题来求解,转化为一个只包含内积操作的优化问题。对偶问题的求解可以通过拉格朗日乘子法来实现。通过求解对偶问题,可以得到分类函数。 4. 核函数:对于非线性可分的问题,可以利用核函数将数据映射到高维特征空间中。常用的核函数有线性核函数、多项式核函数、高斯核函数等。 SVM理论基础可以通过学习相关的数学知识来理解和推导。掌握SVM理论基础可以帮助我们更好地理解其原理和应用,从而更加有效地应用SVM解决实际问题。 ### 回答3: 支持向量机(Support Vector Machine,SVM)是一种常用于分类和回归分析的机器学习方法。其基本原理是构造一个平面,将不同类别的数据分离开来,使得两个类别样本中离平面最近的样本点到平面的距离最大化,这些样本点就是支持向量。 支持向量机理论基础主要可以从以下几个方面来分析: 1. 最大间隔分类:支持向量机通过最大化两个类别之间的间隔来进行分类。这个间隔是由支持向量与平面之间的距离决定的,因此被称为最大间隔分类。 2. 核技巧:支持向量机不仅可以处理线性可分的情况,还可以处理线性不可分的情况。通过将数据映射到高维空间,使得在高维空间中数据线性可分。而核技巧则是一种计算高维空间中内积的技巧,可以避免进行实际的高维计算。 3. 优化算法:支持向量机的目标是求解一个凸二次规划问题,通常使用序列最小最优化(Sequential Minimal Optimization,SMO)算法进行求解。 4. 常用核函数:支持向量机常用的核函数有线性核函数、多项式核函数、高斯核函数等。这些核函数可根据数据特点选择合适的核函数。 总结来说,支持向量机作为一种基于凸优化理论的分类和回归方法,其理论基础包括最大间隔分类、核技巧、优化算法和常用核函数等。对于支持向量机理论基础的深入了解,有助于更好地理解和应用该算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值