详解支持向量机-支持向量机分类器原理【菜菜的sklearn课堂笔记】

时间:2022-11-18 19:18:12

视频作者:[菜菜TsaiTsai] 链接:[【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili]

支持向量机是如何工作的

支持向量机所作的事情其实非常容易理解。先来看看下面这一组数据的分布,这是一组两种标签的数据,两种标签分别由圆和方块代表。支持向量机的分类方法,是在这组分布中找出一个超平面作为决策边界,使模型在数据上的分类误差尽量接近于小,尤其是在未知数据集上的分类误差(泛化误差)尽量小详解支持向量机-支持向量机分类器原理【菜菜的sklearn课堂笔记】

关键概念:超平面 在几何中,超平面是一个空间的子空间,它是维度比所在空间小一维的空间。 如果数据空间本身是三维的,则其超平面是二维平面,而如果数据空间本身是二维的,则其超平面是一维的直线。

关键概念:决策边界 **在二分类问题中,如果一个超平面能够将数据划分为两个集合,其中每个集合中包含单独的一个类别,我们就说这个超平面是数据的“决策边界”**。

决策边界一侧的所有点在分类为属于一个类,而另一侧的所有点分类属于另一个类。如果我们能够找出决策边界,分类问题就可以变成探讨每个样本对于决策边界而言的相对位置。比如上面的数据分布,我们很容易就可以在方块和圆的中间画出一条线,并让所有落在直线左边的样本被分类为方块,在直线右边的样本被分类为圆。如果把数据当作我们的训练集,只要直线的一边只有一种类型的数据,就没有分类错误,我们的训练误差就会为0。 但是,对于一个数据集来说,让训练误差为0的决策边界可以有无数条。 详解支持向量机-支持向量机分类器原理【菜菜的sklearn课堂笔记】

但在此基础上,我们无法保证这条决策边界在未知数据集(测试集)上的表现也会优秀。对于现有的数据集来说,我们有$B_{1}$和$B_{2}$两条可能的决策边界 详解支持向量机-支持向量机分类器原理【菜菜的sklearn课堂笔记】

我们可以把决策边界$B_{1}$向两边平移,直到碰到离这条决策边界最近的方块和圆圈后停下,形成了两个新的超平面,分别是$b_{11}$和$b_{12}$,并且我们将原始的决策边界移动到$b_{11}$和$b_{12}$的中间,确保$B_{1}$到$b_{11}$和$b_{12}$的距离相等。在$b_{11}$和$b_{12}$中间的位置,叫做$B_{1}$这条决策边界的边际,通常记作$d$

为了简便,我们称$b_{11}$和$b_{12}$为虚线超平面,在其他博客或教材中可能有着其他的称呼,但大家知道是这两个超平面是由原来的决策边界向两边移动,直到碰到原来的决策边界最近的样本后停下而形成的超平面就可以了

对$B_{2}$也执行同样的操作,然后我们来对比一下两个决策边界。现在两条决策边界右边的数据都被判断为圆,左边的数据都被判断为方块,两条决策边界在现在的数据集上的训练误差都是0,没有一个样本被分错。 我们引入和原本的数据集相同分布的测试样本(红色所示),平面中的样本变多了,此时我们可以发现,对于$B_{1}$而言,依然没有一个样本被分错,这条决策边界上的泛化误差也是0。但是对于$B_{2}$而言,却有三个方块被误人类成了圆,二有两个圆被误分类成了方块,这条决策边界上的泛化误差就远远大于$B_{1}$了。这个例子表现出,拥有更大边际的决策边界在分类中的泛化误差更小,这一点可以由结构风险最小化定律来证明(SRM)。如果边际很小,则任何轻微扰动都会对决策边界的分类产生很大的影响。边际很小的情况,是一种模型在训练集上表现很好,却在测试集上表现糟糕的情况,所以会“过拟合”。所以我们在找寻决策边界的时候,希望边际越大越好。 详解支持向量机-支持向量机分类器原理【菜菜的sklearn课堂笔记】

支持向量机,就是通过找出边际最大的决策边界,来对数据进行分类的分类器。也因此,支持向量分类器又叫做最大边际分类器。这个过程在二维平面中看起来十分简单,但将上述过程使用数学表达出来,就不是一件简单的事情了。

支持向量机原理的三层理解

目标是"找出边际最大的决策边界",听起来是一个十分熟悉的表达,这是一个最优化问题,而最优化问题往往和损失函数联系在一起。和逻辑回归中的过程一样,SVM也是通过最小化损失函数来求解一个用于后续模型使用的重要信息:决策边界详解支持向量机-支持向量机分类器原理【菜菜的sklearn课堂笔记】

sklearn中的支持向量机

详解支持向量机-支持向量机分类器原理【菜菜的sklearn课堂笔记】