目录

  • 1.SVM的问题提出
  • 2.SVM推导与证明
  • 3.线性SVM求解优化方法


1.SVM的问题提出

  终于讲到大名鼎鼎的支撑向量机(support vector machine)SVM。初见此名,相信大家跟我一样都是满脸的黑人问号,什么是支撑向量,什么又是向量机?切莫着急,听我一一道来。

  之前我们在讲线性回归和PLA的时候,着眼点都在能不能正确分类样本,对一个线性可分的样本,我们能找到一个分类面,使所有的样本都正确分类。但是,由于对于线性可分的样本,正确率肯定是100%,我们无法对分类面进行评价,无法知道到底哪一个分类面是最好的。所谓的好,指的就是当一个未知样本放进来的时候,哪一个分类面更有可能将它区分正确。线性SVM为了解决哪一个分类面最好的问题,引入了支持向量的概念。首先,我们看看下面这张图:

支持向量机envi分类_人工智能


黑色的线是分界面。从直观的感觉出发,很显然,第三个分类面应该是最好的。在这个分类面下,两类样本到分类面的最短距离是最大的,也就是说灰色的这条间隙是最大的。对于这个间隙,我的理解是容噪能力。试设想,如果真实的点就是样本点加上噪声,比如高斯噪声,那么我们就在该点边上画一个圆,显然,图三能容纳的圆的半径是要远远大于图一和图二的,因此我们说图三找到的这个分界面优于其他,因为它的容噪能力更强。我们就把处在间隙边缘,也就是到分类面距离为最小距离的点(特征向量),称为支撑向量,可以想象为它们从两边夹住了中间这个间隙。而SVM就是寻找支撑向量、从而获得这个分类面的算法(我不太清楚为什么是向量机,可能是用支撑向量做了一个分类机?)

2.SVM推导与证明

支持向量机envi分类_支持向量机envi分类_02的距离公式:
支持向量机envi分类_算法_03
这个公式怎么来的在第一篇PLA有推导,那么SVM的优化目标就可以写作:
支持向量机envi分类_支持向量机_04
这个问题还是不好解啊,有一个maxmin在里头。那怎么办?我们假设支持向量机envi分类_支持向量机envi分类_05,此时的分界面支持向量机envi分类_特征向量_06,我们令将分类面进行缩放,变成支持向量机envi分类_人工智能_07,这两个分类面其实是一样的,将这个式子带入,结果支持向量机envi分类_特征向量_08就变成了1,但是分类面并没有改变。那么我们就可以人为的使支持向量机envi分类_算法_09,因为这并不会改变分类面,上述问题就可以转化为如下问题:
支持向量机envi分类_支持向量机_10
max问题并不好解,可以转化为min问题,加上一个系数并不影响结果:
支持向量机envi分类_人工智能_11

3.线性SVM求解优化方法

  看到我们化简出来的这个式子,其实就是一个典型的二次规划问题,二次规划的标准形式为:
支持向量机envi分类_特征向量_12
跟上面的式子是一样的,我们只需要令:
支持向量机envi分类_支持向量机_13
就把SVM的问题化为了标准的二次规划问题,如果G是一个半正定矩阵,那么就是一个凸优化问题,数学上有很多解法,matlab和python都有相应的包,就不再解释了。