SVM简单理论

间隔与支持向量

我们就简单举个例子,假设我们有一个男女生身高体重的数据集,我们想能不能通过学习这个数据集训练一个模型,然后这个模型能够读取一个人的身高体重数据,然后判断出这个人是女生还是男生。我们的想法是这样,构建一个二维的平面,横纵坐标是身高体重,这样我们就能够看出它的分布情况。(橙黄色是女生,蓝色是男生)

image-20221127105612377

ok,我们就得到了这样一个的分布情况,那么我们现在就想,能不能画一条线,让这个线把男生和女生分开来,这样新来一个学生,我们就能根据它跟这个线的位置来判断这是男生还是女生。

但现在问题来了,你看上面这个图,你没有办法画一条直线把这两类完全分离开,这就要讲到我们需要了解的知识了。

(本篇博客使用的课件截取自B站数之道,侵删。)

硬间隔

image

按上图这种,我们一定要将两种类型分类开来,不能相互混合,这种情况就是硬间隔

软间隔

image-20221127112256675

这种情况就是软间隔,我们允许出现一些这种异常点,但是这些异常点是有损失成本的,所以我们要综合考虑出一个方法,能够平衡这个间隔与损失,是这个分割更加合理。

软间隔是相对复杂的一个问题,我们一会专门讲这个东西。

支持向量

image-20221127112420717

星号的点就是支持向量,这是分割边界经过的两个点。

SVM基本模型

我们现在暂时只讨论硬间隔问题,软间隔下面会讲到。

如果我们要进行分类的话,其中最重要的一点就是我们要最大化r,r是点到线的距离,也就是这个间隔越大越好,这就牵扯出一个问题,如何才能使r最大,那么我们可以确定L的表达式,然后通过对r求导就可以计算出这个的最大值了。

image-20221126220324164

首先我们给出一个超平面的方程,我们的超平面可以用一个方程来进行表示

$w^Tx+b=0$

我们简单解释一下这个方程

x不是横坐标,而是指x这个点,x(X1,X2)这个点,这个$w^T$也是两个参数,至于为什么有个转置符号,就是为了使用向量相乘,我们可以使用线的方程进行类比,比如$[a,b]^T[x,y]+c=0 $可以写成$ax+by+c=0$这就是线的方程了。

这样就可以唯一的表示一个平面,至于这个$w^T$,我们这样写其实就是为了兼容多维度的情况,如果有多个维度的话我们的$w^T $就会比二维多一个元素,因为在三维中两个方程才可以确定一个面能将空间分割(其实就是相当于把多个方程就合并了,比如在如果一个数据有三个数据,我们要进行区分,那就需要两个方程,如果有四个数据那我们就需要有三个方程去确定平面,我们就同意用$w^T $来进行表示)在我们这个例子中我们是在一个二维空间,所以我们完全可以将这个方程写成$ax+by+c=0$。(这一段看不懂也没关系,看完后面的自然也就懂了)

首先我们可以得到一个点x到面的距离距离公式,这个初中就讲过,具体方法略了,总的公式在下面,这个就是空间中计算距离的方程,各个维度通用。

$r=\frac{|w^Tx +b|}{||w||} $

那么问题来了,知道距离方程了,我们如何才能确定好这个平面呢?

如果我们要正确的进行分类,就要让不同的数据分隔在线的两端,这样的话其实更加方便了,因为我们知道向量是有方向的,方向相反,符号不同,我们只需要尽可能两端符号不同就行了,也就是说,如果我们发现两类向量到平面的方向相反,就说明这个平面是合理的

image-20221126221421469

这就需要用到支持向量,也就是靠近平面最近的两个向量,至于为什么是2,因为它是等式两边都可以等比放大$w^T,b$都是可变的,所以取多少都可以,但是为了方便计算我们两个边都选1,这样加起来就是2,也就是最后的那个间隔的2.

这样我们之前的问题就转化为,如果让满足分类条件(两类点在线的两边)的情况下,让这个间隔最大,用数学的方法来表示就是

image-20221126222602224

关于这个的计算方法我就不在这里讲了,因为可能要讲上很久,需要很强的理论知识才能看懂,本篇博客只是介绍一个入门,不会太深,如果有兴趣可以看台湾大学或者斯坦福大学的公开课,他们讲的都很详细准确。

非线性可分问题

如果我们没有办法找出一个线将他们分割开怎么办?

比如这样(故意找茬是不是,滑稽)

image-20221126223537223

我们可以这样,我们给他加个维度,把它搞成三维,不就完了吗

image-20221126223724128

image-20221126223646082

牛皮!绝了

我们想的是这样,假设$x_1,x_2$的内积是$$

存在某个变化方法$x$转化为高维的$\phi(x)$,然后高维中的内积为$<\phi(x_1),\phi(x_2)>$

有一个函数K,$K(x_1,x_2)=<\phi(x_1),\phi(x_2)> $

这种方法叫核技巧,K叫核函数

映射到高维后我们就可以进行相应的处理了

软间隔

这种方式就是我们允许存在一些点是错误的,但是这样我们就要定义一个代价函数使代价最小才可以

image-20221126225122688

image-20221126225138553