【SVM】推算公式的由来


主要说明SVM是干什么用的,怎么来的,如何推导公式。
(其中有些公式没有严格打出来,比如矩阵W的转置,大家意会即可)。


一、SVM怎么来的

1、介绍PLA

PLA是perceptron learning algorithm,主要处理线性可分的数据。

比如二分类,pla做的就是找到空间中的一条线或超平面,能够将所有点正确分类。用权重w表示这个线或超平面。

即sign(wx)=y

过程是:

  • 首先给出初始化权重。
  • 对于Wt,找到其分类的一个错误点(x,y),sign(wx)不等于yn
  • 进行错误修正,W(t+1)=Wt+ynx
  • 迭代,直到找到权重W分类没有错误为止。

这样,PLA就找到了那条线性可分的线或超平面。

这里写图片描述

2、SVM

上面说PLA找到了线性可分的线或超平面,但是,这种线或超平面可能存在多条,但哪条最好呢?

这里写图片描述

上图中我们直观感受觉得第三条线最好。这是因为这条线看起来分割的更为均匀,当线稍微倾斜时,也能做到线性可分,但第1、2条看起来就没那么容易了,稍微一倾斜,就不再是线性可分线。

我们测试时拿到的数据经常是有噪音(如测量误差)的,经常会发生“倾斜”这种情况。SVM所做的就是找到一条最优的线性可分的线或超平面,使得其能够最大程度的避免因测量误差所造成的分类错误。

二、如何选最优线或超片面

1、直观上

直观上我们来看,就是找到一条最肥的线,而且这条线还能保证分类正确,即y(wx+b)>0.

我们用margin来表示线的肥瘦程度,margin定义为空间中的点到线的最小距离。目标就是找到一个最大的margin。如图:

这里写图片描述

2、距离

现在我们有了目标了,即得到一个最优的margin。但是条件中的距离如何表示呢?

我们已知要找的那个超平面符合wx+b=0,则我们可以找到这个超平面的的两个点,x’,x”,则有

wx’+b=0,
wx”+b=0

则w(x’-x”)=0,可以知道w就是这个超平面的法向量。

则空间内一点x,与x’连接,构成向量x-x’,这个向量在法向量w上的投影就是点x到平面的距离(做内积后要除以w的模,保证求到的是距离)。即w(x-x’)/||w||,如图所示:

这里写图片描述

但是,上图中,距离公式有|wx+b|,带有绝对值,我们不希望在求解时带有绝对值,于是想到,这个平面对每个点都是线性可分的,其y(wx+b)必然要大于0,所以,我们可以用y(wx+b)来代替|wx+b|,经过这一番,

于是,我们的目标现在变成如下图所示:

这里写图片描述

3、简化

其实空间中没有那么多的线和超平面,很多线和平面都是平行的,wx+b=0与3wx+3b=0其实是一条线或平面,所以,我们可以对上图中的距离公式进行缩放。

缩放为

这里写图片描述

当然,有了这个条件后,我们的条件y(wx+b)>0也可以去掉了,于是,现在目标变为下图:

这里写图片描述

好,现在我们已经得到一个比较明确的优化目标了,但是,我们需要求max,还需要求min,这太麻烦了,我们希望把这个min去掉,

所以,只需改成

这里写图片描述

当然,我们把条件范围扩大,会不会每个值都大于1,不存在等于1的情况,还能得到想要的最优解吗?这里我们反证一下。

如何我们得到一个解(b,w),其y(wx+b)>1.2(即min不等于1),此时,我们可以得到另外一组(b/1.2,w/1.2),w与b变得更小了,于是得到另外的margin=1/||w||更大,发现了一个更优解,这与之前解矛盾。所以我们可知扩大条件范围仍然能得到最优解。

于是,现在优化目标变为:

这里写图片描述

当然,我们还要对这个公式进行优化,

我们不喜欢进行max,希望改成min,所以可以改为min||w||,

我们也不喜欢求绝对值,将||w||改为w.w,为了以后计算方便,我们加系数1/2,则为min 1/2(w.w)

于是,最后目标变为:

这里写图片描述

好,以上就介绍完了SVM推导是如何来的。

三、求解SVM

这个可以直接用二次规划来做,很多现成的软件可以直接拿来用。具体数学怎么推导计算的,还没有仔细看。


猜你喜欢

转载自blog.csdn.net/liuxiao214/article/details/79523465
svm