-->

机器学习40讲_18_17_几何角度看分类支持向量机

你好,我是王天一。

今天我和你分享的主题是几何,角度看分类支持向量机。

前面介绍过的逻辑回归是基于自然度的分类方法,通过对数据的概率分布进行建模,来得到软输出。

而在另一类,基于判别式的硬输出分类方法当中,比较有代表性,就得数今天要介绍的支持向量机了。

支持向量机呢他并不关心数据的概率如何,而是要基于判别式找到最优的超平面。

作为二分类问题的决策边界,也就是对这个决策边界进行建模。

支持向量机的发明者布拉基米尔瓦普尼克用一句名言清晰的解释了他的思想,他的思想是什么呢?能走直线就别兜圈子。

当然了,这是打这引号的信达雅的一法。

老马的原来时不引引入更加复杂的问题,作为解决当前问题的中间步骤。

那么很显然啊,在他看来推测数据的概率分布就是那个作为中间步骤的加复杂杂问题题。

当一个学习英语的时候啊,他只需要自己报一个班儿啊,或者自己看书都可以啊。

没有人会说我在学英语之前啊,先学习这个截区咬牙的拉丁语作为基础。

所以说既然解决分类问题,只需要一个简单的判别式,那就没有必要费尽心机的去计算这个似然概率或者是后验概率。

也正是这个化繁为简的原则,给支持向量机带来了超乎寻常的优良的效果。

一提到支持向量机呢,大部分人的第一反应可能都是核技巧,可是核技巧它诞生在一九九五年。

而支持向量机呢早在三十年前就已经面世。

支持向量机它可以看成是基于几何意义的非概率的线性二分类器。

而所谓的核技巧只是支持向量机的一个拓展,通过维度的升高,将决策边界从线性推广为非线性。

所以说对于支持向量机基本原则的理解和核技巧没有关系,这个呢是关乎于决策边界的生成方式。

想象一下啊,如果一个数据集啊,它是二维平面上线性可喷的数据集的话,那它的决策边界就是一条简单的直线。

可是能将所有训练数据正确区分的这条直线是不是唯一的呢?很显然,答案是否定。

因为对于线性可分的数据集来说,两个距离最近的异类点之间啊必然会存在着一段距离。

一个正例,一个复立啊,两者之间不是贴在一块儿啊,是有一段距离。

那么点击文稿,你可以看到线性可分数据集的决策边界。

在图中呢能够正确区分的数据的这个直线啊就有无数条。

既然这样的话,问题来了,在这些直线当中哪一条才是最好的呢?这里啊我们抛开复杂的数学证明,而是通过直观的几何视角来解释。

回头看看上面的示意图,蓝色直线h二和红色直线h三啊,都能不出任何错误的完成分类。

那么在不存在关于数据的其他信息的情况之下,你是会选择h二还是h三作为最优的决策边界呢?我们先刨除这个数据的抽样义,而是把不同的颜色的这个原点想象成正在打仗的两支军队。

现在呢双方要停火救战啊,自然要画出一条停火线以及由停火线所延伸出来的这个非救战区。

假设你是黑军的司令官,那就断然不会选择h一作为停火器。

因为他直接把你的一部分麾下赶到了,对方阵地当中,把自己人拱手相让作为俘虏,可不是优秀的指挥官应该做的事情。

既然h一不行,哪那么h二行不行呢?这样的一条停火线,能够保证双方各自坚守阵地,看起来呢是个不错的选择。

可是问题在于,他离双方的阵地太近了。

如果有些人存心越雷池搞事儿的话啊,他完全可以偷偷摸摸的穿越飞礁战区,越过停火线,打一梭子,黑枪立马就跑。

由于停火舰和阵地的距离太近啊,那么对方白军的骚扰部队完全可以在你发现之前神不知鬼不觉的完成任务,并且安全返回。

虽然你的黑军啊也可以同样的操作,以眼还眼,以牙还牙,但这样归根结底还是不利于和平的嘛。

这样看来的话啊,能够入你法眼的挺火舰就只有h三了。

它既保证了所有士兵都驻扎在自己的阵地当中,也就是数据里没有分类的错误,又划定出了足够宽阔的非礁战区,杜绝了偷袭的可能性,也就是数据和决策边界的距离。

足够大有了这样的一条停火线啊,谈判的时候心里是不是也会多几分的踏实呢?说完这个类比啊,我们还是要书归正传,回到数据本身。

机器学习的算法。

他所关注的不仅是训练误差,那更是泛化误差。

这也是我们前面多次提到的概念。

在上面的这个二分类问题当中,编辑HR它过于靠近一些训练数据。

那么当这些靠近边界的数据受到噪声或者干扰影响啊,得到的真实数据就更加容易从一个类别跳到另一个类别啊,导致分类的错误,还有泛化性能的下降。

相比之下呢,边界h三距离两侧的数据都比较远啊,如果这些数据点他想要从h三的一侧跳到另一侧的话,他们要跨越的距离和h二相比就会更大,那么跳过去的难度也就大多了。

直观的几何意义啊,告诉我们,位于不同类别数据正中间的决策边界,对于样本扰动的容忍度最高。

所以呢它在未知数据上的半化性能也就好。

那么问题来了,什么样的超平面才算正中间呢?这个问题呢就得通过构造最优化问题来解决相关的内容呢。

在人工智能基础课当中已经有过介绍,在这儿呢我就不重复了。

这里我们换一个角度正中间的超平面,实际上就是几何意义上最优的决策边界。

还是以二维平面为例,我们不妨假设存在着能够将数据完全区分开来的两条平行线。

这里我们不找一条找两条,那么所有正类的数据点都在这两条平线的一侧啊,所有负类的数据点都在两条平行线的另一侧,相当于这两条平行线构成了一个楚合焊界。

啊,红紫儿在一边,黑子在另一边更重要,要一点点什么呢?我我要让这两条条平行中的一条,经过一个正类点,另一条经过一个负类点,也就是恰巧卡在这个边界之上。

那么结合前面的假设就不难发现,平行线压住的这两个点,实际上就是欧式距离最近的两个异类点啊,也就是离得距最近的两个不同类别的点。

接下来呢我们让这两条平行线啊,以它们各自经过的异类点为不动点进行旋转。

两个线是可以旋转的。

但是旋转的中心是这两个点。

在旋转的过程当中呢,我们一要保证平行关系不变,两个转着转着还是平行的。

二要保证分类特性不变。

不管你怎么转正类,都得在同一侧啊,负类都得在另一侧。

这是一个重要的先决条件啊,我再重复一遍。

同时保证平行关系还有分类特性不变啊,这是重要的前提条件。

在旋转的过程当中呢,这两个不动点也就是两个异类点之间的欧式距离是不变,但是两条线的斜率一直在改变,所以它们之间的这个距离呢,垂直方向上这个距离也会不断的变化。

那么转到什么时候为止呢?转到当其中的一条直线啊,经过第二个数据点的时候,不管这个数据点是正立还是负立,只要一条直线压到了第三个数据点。

那么这两条直线之间的距离就会达到这个最大值。

这个时候呢这两条平行线中间那个直线就是最优的决策边界,干了这样的一个过程啊,我们是用语言描述出来的啊,你可以在纸上画一个图啊,或者说结合着我们文稿当中的图片啊,自己想象一下这个过程。

如果你对上一季的内容还有印象的话啊,就会想到落在两条平行线上的这几个异类点,就是所谓的支持向量。

如果说将最优的决策边界看成一扇双向的推拉门的话,那么把这扇门向两个方向推开,就相当于两条平行线的距离逐渐的增加。

当这两扇门各自接触到吱吱酱料的时候,停止移动留下来的这个门缝就是两个类别之间的间隔间隔,这是支持向量机的核心概念之一。

它是对支持向量到分离超平面的一个距离的度量,可以进一步的表示分类的正确性。

还有可信的程度。

根据规划与否的区别,间隔呢还可以分成几何间隔和函数间隔。

这两者的定义也在人工智能基础课当中做过介绍啊,你可以回忆一下。

那么当数据线性可分的时候啊,分离超平面有千千万万,但是几何间隔最大的只有一个。

那么支持向量机基本的思想就是找到能够正确划分数据集,并且具有最大几何间隔的分离超平面。

这也就对应着我对这个判别式进行建模。

但是啊将线性可分的数据给它分开啊,并不算是大本事。

应用在线性不可分的数据上的时候呢,支持向量机会不会像单层感知器一样崩溃呢?肯定会呀。

但是支持向量机他明白,不能不撞南墙不回头。

这样的道理,既然将全部的数据点正确分类是不可能完成的任务,那就不如退而求其次,以放过几个漏网之鱼为代价,来保证大多数数据的正常分类。

那么这些漏网之鱼就是通常所说的异常点,他们将线性可分条件下的硬间隔变成了线性不可分条件下的软间隔。

这就让支持向量机它优化的对象从原始的间隔距离变成了间隔距离和分类错误率的一个折中。

在计算软间隔的时候,支持向量机是利用荷页损失函数来表示分类的错误率合叶损失可以看成是对技术表示的这个分类错误率的一个近似。

从它的图像可以看出来啊,作为一个连续函数合叶损失,它只计算了错误分类结果相关的指标,分类正确的数据对他是没有贡献。

所以在软间隔的优化当中,其实我们也只需要考虑几个异常点,对于决策边界的影响。

这呢恰恰体现出了支持向量机它的一个思想方法,最终的决策边界仅仅和少数的知识向量有关,它并不会受到大量普通数据的影响。

荷叶损失的引入呢可以看成是对线性可奔支持向量机,一种正则化的处理。

在优化问题当中,他们会以松弛变量的形式出现。

但是在劳瓦的这个词典里啊,在瓦布尼特的这个词典里,这种思想叫做结构风险最小化和结构风险最小化。

相对应的呢就是经验风险最小化,经验风险最小化。

关注的什么呢?训练误差最小,在极端的情况下,训练误差是可以等于零的。

但是在之前的文章当中,我们也多次提到训练误差太小,它并不是一件好事,因为这很可能导致模型过于复杂,从而出现过拟合。

啊,那么结构风险最小化,这种思想呢就是带着抑制过拟合的任务出现。

马普尼克呢他将支持向量机的泛化误差分成了两个部分啊,其中一部分是模型在训练集上的经验风险,也就是训练误差。

另一部分呢则表示了训练误差在泛化时候的置信区间也可以叫做置信风险。

你这个训练误差在多大程度上能够真实的模拟泛化误差呢?置信风险给出的就是这样的一个指标。

置信风险呢它和假设空间的VC维有关。

假设空间的VC维越小,意味着模型的复杂度就越低,对应的置信误差就越小,模型的泛化性能也就越强。

除了间隔之外啊,支持向量机的另一个核心概念是对偶性间隔的作用体现在原理上,而对偶性的作用体现在实现上。

虽然通过前面那些形象的例子,我解释了为什么最优的决策边界会存在,但他们却解决不了如何求解最优边界的问题。

无论是硬间隔的计算,还是软间隔的计算,都可以通过拉格朗日橙子的引入转化,成为原始问题的对偶问题来找到最优解。

那么这一部分内容呢主要应用在算法的实际实践当中啊,会在下一篇里出现。

这儿呢我们先做一个铺垫,用来测试支持下降机的数据也来自英超。

因为是分类问题啊,所以我们将关注的焦点着眼于不同的比赛风格之上。

啊,传统的英式足球呢强调身体对抗啊,长传冲吊,还有高举高打,来自大陆和南美的这个拉丁拜打法则,偏重于对球的控制啊和精确的传切。

那么这两种不同的风格可以通过比赛数据直观的体现出来。

那么我将以一七到一八赛季啊英超联赛冠军曼城,还有副班长锡布朗三十八场联赛的数据作为样本。

那么在每个样本当中呢,都包含着每一场比赛的这个长传的数目,短船数目、头球的射门书,还有脚下的射门数这四个属性。

但在实际的分类当中呢,我们要对它做一个处理。

实际使用的属性有两个,一个是长转数目和短转数目的比值啊,一个是头球射门和脚下射门数的比值。

用这两个比例来作为分类的依据。

在python中,实践支持限量机的话,需要调用SK lan库中的SVM模块啊,并且通过其中的SVC类来实现分类。

要生成线性连接的话,我们需要将SVC当中的kernel参数啊设置为li.同时呢还要将常数降c设置为一个接近于正无穷的值啊,比方说十的九次方或者十的十次方,从而呢避免正则化的使用。

还需要说明的一点,是啊,在SVM模块当中,还有另外一个名字叫linar. Svc的类啊,它的功能呢和linar kernel的SVC近似。

但是在同一个数据集上得到的结果啊,两个是不一样的啊,你可以测试一下两者之间的区别,你可以参考文稿中的这个网址啊,在此呢也要感谢原作者点击文稿啊,你可以看到支持相相机的分类结果啊。

图中的横坐标是传球比例,纵坐标呢是射门的比例。

可以看出来啊,拉丁派的曼城啊,球风是长传少啊,投球少。

而传统英式打法的西布朗恰恰相反。

但是具体到不同的比赛当中啊,两支球队偶尔也会出现与常规球风相左的这个情形。

那么这些情形呢共同构成了数据集忆的异常点。

因为这个数据集它并不是线性可分的啊,所以只能用软间隔来刻画。

从分类的结果来看啊,直持向量机的分类结果还是差强人意。

除了三个明显的异常点之外啊,其他数据的划分都是正确的。

有些数据点,它虽然说距离最优分离超平面的距离较近,但是呢并没有出现错误。

今天我和你分享了支持相像机的概念和原理,着重从几何意义上解释了算法的来龙去脉。

啊,包括以下四个要点,第一,支持向量机是基于线性判别式几何意义的分类算法。

第二,支持向量机通过间隔最大化来定义最优的角色边界。

第三,支持限量机,通过对偶问题来求解最优的决策边界。

第四,支持向量机的目标是让结构风险最小化。

支持向量机呢它好用是好用,但是由于原理的限制,它不能够直接的推广到多分类问题上。

它的几何意义呢在多分类任务当中也并不能够直观的体现。

那么如何利用支持降量机来解决多分类问题呢?你可以查阅相关资料,并在这里分享你的见解。