支持向量机(support vector machines, SVM),一种监督式学习的方法,广泛应用于统计分类以及回归分析中。是一种二分类模型,它将实例的特征向量映射为空间中的一些点,SVM 的目的就是想要画出一条线,以 “最好地” 区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类。SVM 适合中小型数据样本、非线性、高维的分类问题。
深度学习出现(2012)之前,SVM被认为是机器学习在十几年来最成功,表现最好的算法。
相比于其他线性分类器,SVM 的目的就是想要画出一条线,以“最好地”区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类。 那么什么才叫这条线的效果好?哪里好?画线的标准是什么?
SVM 将会寻找可以区分两个类别并且能使间隔(margin)最大的划分超平面。比较好的划分超平面,样本局部扰动时对它的影响最小、产生的分类结果最鲁棒、对未见示例的泛化能力最强。 间隔(margin):对于任意一个超平面,其两侧数据点都距离它有一个最小距离(垂直距离),这两个最小距离的和就是间隔。比如下图中两条虚线构成的带状区域就是 margin,虚线是由距离中央实线最近的两个点所确定出来的(也就是由支持向量决定)。
支持向量:从上图可以看出,虚线上的点到划分超平面的距离都是一样的,实际上只有这几个点共同确定了超平面的位置,因此被称作 “支持向量(support vectors)”,“支持向量机” 也是由此来的。 我们把这些可以将两种数据区分开的数据区分开的平面叫做超平面,定义为f(x) = sign(wTx+ b) sign的含义是点在超平面上面取+1,在下面取-1,所以SVM本质上是一个判别模型,将用来支撑超平面的点叫做支持向量,一般选取的最佳的超平面一定是和两边支持向量相等的那一条。寻找最大间隔:就是寻找最大化支持向量到分隔超平面的距离,在此条件下求出分隔超平面。
一.硬间隔SVM
求解硬间隔问题即一个寻找最大间隔超平面的数学问题,定义为max margin(w,b)所以hard-margin SVM又称为最大间隔分类器。
到这里, SVM几何问题已经完全变成了一一个二次优化问题,而且这个函数是个凸优化问题(Convex optimization)。
模型化简
对于一些低维,简单的二次规划问题,我们可以借助Matlab来完成。但是实际中经常会遇到样本数较大,高维甚至无限维的情况,所以我们需要借助一些化简方法。
在SVM中采用拉格朗日乘子法
弱对偶关系与强对偶关系:一个集合上限的最小值一定大于等于下限的最大值。
从而我们可以推导出以下式子
从而将一个存在N个约束条件的优化问题转化为一个无约束问题。
无约束问题,可以直接进行求导
将结果带入原式子并化简可得到
模型求解步骤视图
模型求解问题转化为
KKT条件 KKT条件是一种解决非线性规划问题的方法。对于拉格朗日乘子式,KKT条件如下:
为求分割面方程,需求解w和b,根据之前求导的结论
根据第二条松弛约束条件,存在一点(xk,yk)使得
将w带入,可以得到
分别将w,b代入决策函数和决策平面方程,就可以得到对应表达式
Soft Margin
对于无法用一个平面分隔开的两种数据,它的核心思想就是允许有一点误差,所以我们在主函数上加上了loss。
我们把loss定义为和distance相关的函数。假设在y:(w * xi+b)≥1这个区间(两边白色区域) , loss为0说明所有点位置都是正确的,可以划分开的。
假设在y:(wTx;+ b)< 1这个区间(中间蓝色区域),loss=1- yi(wTxi+b) ,说明这些点位置都是存在误差的,需要用一个loss来矫正。
这里的i指的是所有的分布不正确点。相当于把超平面上下两个边界赋予一个可调度,而这个宽度为,称为松弛变量。
Soft Margin模型的求解过程和硬间隔基本一致,都是先进行拉格朗日算子运算,对偶转换,KKT条件计算。
低纬度向高纬映射 某些样本,即使加入惩罚函数,也很难用一个平面来划分,在一个维度下,很难用一条线把这两种样本分开,但是可以把他们映射到两个维度下,就可以很轻松的用一条线分开。
SVM with polynomial kernel 可视化_腾讯视频
svm核函数 从低维空间映射到高纬空间时,样本向量会不断的做内积,导致要做大量的运算,称为维度灾难,为了解决维度灾难问题,我们可以构造核函数使得计算结果等同于非线性映射,同时运算量又远小于线性映射。
举例:
同样的结果,使用核函数会简单很多。