一、线性可分SVM
SVM算法最初是用来处理二分类问题的,是一种有监督学习的分类算法。
对于线性可分的二分类问题,我们可以找到无穷多个超平面,将两类样本进行区分。(超平面:一维中是一个点;二维中是一条线;三维中是一个面……)
在上面的多个超平面中,它们都可以成功将样本集划分两边,但哪一个超平面更好?
一般来说,当样本点离超平面越近,样本的标签为某类型的概率应该为0.5左右,确信度比较低,而样本点离超平面越远,样本的标签为某类型的概率越大,确信度比较高。
而线性可分SVM所寻找的最优超平面就是要尽可能的远离所有类别的数据点,使得间隔(margin)最大,利用间隔最大化来求得最优超平面。间隔的定义如下图所示:
一般来说,间隔(Margin)中间是无点区域。为了偏袒于某一类样本,超平面到两类样本点集合的最小距离都是相等的,即间隔等于超平面到两类样本集的最小距离*2。对于间隔越大的超平面,分类犯错的机率就越小,分类的确信度就越高。
二、超平面和间隔
接下来,需要做的就是将间隔(Margin)进行最大化,来寻找最优超平面。在这之前,需要对超平面进行定义,以便于计算点到超平面距离。
可将超平面定义为 ,向量 为超平面的法向量,标量 b 为截距。
向量 x 为样本的特征向量。而向量 x 点乘 向量 可理解为向量 x 在 向量 w 上未进行归一化的投影。
通过这样定义超平面后,由图可以发现:所有在超平面右上方的样本点都有 ,所有在超平面左下方的样本点都有 。
当然,所有在超平面上的点都有 。
进一步,我们可以通过等比例缩放 法向量 和 截距 b,使得:
其中, 为第 i 个样本的特征向量,并将正样本的标签令作 1,负样本的标签令作 -1;这样这两个式子整合为一个式子:
。
具体效果如图所示:
而“支持向量”就是所有落在间隔两边的超平面H1、H2上的点,超平面H1、H2上的任意一点(支持向量)到分界超平面的距离为 。因此,隔间的宽度应该为 。
具体的公式推导如下:
三、最大化间隔
在上面,我们找到了间隔(margin)的表达式为 ,也找到了向量w的约束条件为