网上有很多介绍SVM的文章,csdn里写得最好的是
July大神的 支持向量机通俗导论(理解SVM的三层境界),该文最初写于2012年6月,而后不断反反复复修改&优化,修改次数达上百次,最后修改于2016年11月。
下面的文章只是我自己的笔记。可以配合July的文章理解。我把理解SVM需要的参考资料概念都贴过来。包括对偶,朗格朗日乘子, KKT条件等理解SVM需要的概念等。
本文是学习吴恩达S229 机器学习课的关于SVM的笔记整理。
SVM主要是二分类算法, 通过支持向量,在很少的数据集上也能表现不错。而且SVM通过核函数,容易扩展到非线性空间。还有一个有点,SVM可以支持很多维甚至是无限维的特征空间。
SVM也可以扩展到回归算法SVR。或者多分类问题。
-
基本的符号表示
SVM里面函数的类别一般用-1,1来表示反例和正例。即
定义一个g函数有
那么针对线性情况有
其中 并且
其实就是
其中w就是特征向量, b就是截取值
,
2. 间隔的概念
根据线性分类器的基础概念我们知道,要求一个超平面用来分割两类数据
超平面为
那么距离超平面的距离就是
对每一个样本 ,y值都是-1, 或1, 所以样本距离超平面的距离总可以表示为
当的时候需要
当的时候需要
如果样本的 则表示样本被正确分类。
每个样本都有一个距离,叫做函数间隔
几何间隔直观的理解就是点到直线的距离,度量为单位法线
这样已知一个采样点 , 那么这个点沿着直线的法线反方向移动一段距离就可以到直线上的点。
这个距离就是几何间距
因为得到的点在直线上,所以有
对该式求解:
因此有
考虑到y的取值范围为-1 或者 1,那么得到正的几何距离
因此可以看出函数边界和几何边界的关系
3. 最大间隔分类器
对真个训练集,几何间隔为
最大间隔分类器算法会选择w, b 使的最大,即可以描述为
因为||w||=1是非凸性约束,我们考虑函数间隔
对w, b 任意缩放都不影响结果,所以不妨假设
这样我们最大话的目标其实是 1/||w||
因而我们的求解目标可以变为 在约束下min||w||^2
这样就变成了凸优化问题。