matlab中svm两超平面之间的距离,SVM系列第三讲--函数间隔和几何间隔

上一节我们讲到,我们要像线性分类器一样找到一个超平面,不仅能够对数据点进行一个准确的分隔,同时我们希望所有的点尽量都能够远离我们的超平面,即所有点的f(x)值都是很大的正数或者是很小的负数。

但这里就会有一个疑问了,为什么f(x)值能够代表数据点远离超平面的程度呢?接下来,我们将讨论点到超平面的距离问题。

1、函数间隔

我们的函数间隔定义为:

函数间隔

可以看到,函数间隔其实就是类别标签乘上了f(x)的值,可以看到,该值永远是大于等于0的,正好符合了距离的概念,距离总不能是负的吧。那么为什么该值可以表示数据点到超平面的距离呢?我们不妨这样想,假设y=1,f(x)=1,其实就是将原来的分类超平面f(x) 向右平移了1个单位,而y=1,f(x)=2是将原来的分类超平面f(x) 向右平移了2个单位,所以f(x)值越大的点到分类超平面的距离当然越远,这就解释了我们之前提出的问题。

但是函数间隔存在一定的问题,上述定义的函数间隔虽然可以表示分类预测的正确性和确信度,但在选择分类 超平面时,只有函数间隔还远远不够,因为如果成比例的改变 w 和 b,如将他们改变为 2w 和 2b,虽然此时超 平面没有改变,但函数间隔的值 yf (x) 却变成了原来的 4 倍。

所以在实际中,我们定义点到超平面的距离时,采用的是几何间隔。

2、几何间隔

在介绍几何间隔之前,我们先来看一下下图:

几何间隔

对应的为 x0,由于 w 是垂直于超平面的一个向量,r 为样本 x 到分类间隔的距离,我们有:

要理解这个式子,我们首先需要知道为什么w是垂直于超平面的向量,其实举个例子就很容易明白,假设超平面的公式为 x1+x2-1 = 0

w=(1,1)T(表示转置):

另一方面,要想使r表示距离,我们必须对w进行标准化,所以需要除以它的二范数。

又由于 x0 是超平面上的点,满足 f(x0) = 0,代入超平面的方程即可算出:

这个式子是如何推导的呢,看下面的过程:

推导过程

字写的比较烂,希望大家不要介意。

不过这里的 γ 是带符号的,我们需要的只是它的绝对值,因此类似地,也乘上对应的类别 y 即可,因此实际上我们定义几何间隔为:

几何间隔

可以看到,此时系数的成倍的变化,不会带来几何间隔的改变。数学功底比较深厚的童鞋可能发现了,这里的几何间隔其实就是我们本科高等数学中学到的点到直线的距离公式,这里我们顺手就将其推倒出来了,是不是很有成就感!

点到直线的距离公式

你可能感兴趣的:(matlab中svm两超平面之间的距离,SVM系列第三讲--函数间隔和几何间隔)