间隔与支持向量
给定训练样本集,
,这里一定记住只有两类:-1和+1,并非0/1类。分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开。
以上是以二维平面为例,可以看到有很多个超平面将两类数据分开,那我们应该去找哪一个呢??? 直观的看,找最中间的划分超平面,其受数据扰动比如异常数据的“容忍性”最强,泛化能力最大。知道找哪一个,那应该如何找到?
首先引入划分超平面的公式
假设我们是在二维平面中,样本中只用两个属性,其中和
均是向量,
,
,请注意,
是列向量,我用的是分号隔开了里面的
。那么上面的这个公式就可以写成
。如此,只有w和b需要求解。接下来我们计算样本点中的任意点到超平面的距离,就是计算点到直线的距离,这个计算公式应该是能够理解的:
补充,点到平面距离的公式:假设在二维平面中,有一个平面的方式为Ax+By+C=0,那么平面中任何一点()到这个平面的距离公式为:
对照上面的公式,以二维平面举例:
其中
这就是关于点到直线的距离,以及向量的模的计算方式。 回到上面说要找最中间的划分平面,无非就是两个类别中最接近的平面的点到划分平面的距离最大,这样一来,在类别之内的点自然也离这个划分平面最远:
从上图我们可以看到,离划分平面中最近的点已经被圈出,这些点就称为支持向量。根据上面的点到平面的距离公式,两个异类的支持向量到划分平面的距离为:
这个也被称为“间隔”, 那么支持向量机就是想找到“最大间隔”的划分超平面,也就是说最大化两个异类的支持向量到划分平面的距离,引入公式:
就是求解上面这个公式,那么仅仅这一个公式肯定不够,我们是不是还有什么其他的约束条件?? 是我们样本的真实标签,而
是我们的分类结果,也就是预测值,一个好的分类器,当然是分类结果与真实的标签一致,如果
=+1,那么
>0;如果
=-1,那么
<0。令:
当不等式取等号的时候,碰到的样本点就是我们的支持向量。所以我们的约束条件是:
显然,为了最大化间隔,我们仅仅需要最大化,等价于最小化
,所以,我们只需要求解:
这就是支持向量机的基本型。