SVM对于中小规模的数据来说是非常好的模型。由于其可以用数学严谨的推导出结果,可解释性比较强,所以在工业上应用的比较广。
一,SVM的推导
简单起见先考虑SVM在线性的二分类中的应用。
如图1所示svm的目的就是找到一条直线能够很好的将正、负样本“很好的”分开。这个“很好的”是指对于样本的鲁棒性比较好,及时样本点受到一点噪声也不会影响分类的结果,比较直观的看就是正负样本点离分割线的距离比较远。这就是svm的关键点之1:
KEY 1:分割线与正负样本的间隔越大越好。
那么就有如下公式:
w为分割线的法向量,u为要判断的样本点,通过公式来判断样本对是正样本还是负样本。
此时svm的目标是找到合适的w和b来使对新样本的判断比较正确。
若有w,b满足公式(1),那么肯定存在缩放的w’,b’使得下面公式(2)成立。
在训练样本中,对于正负样本的存在如下的不等式,即svm的最大间隔假设:
其中离分割线最近的正负样本点(就是图1中出现在分割线两遍绿色边界线上的点)称作“支持向量点”,Vector Point,这些点能够使公式(3)上的等号成立。
图1中的边界的距离margin为,正样本向量减去负样本的向量然后向边界的法向量上的投影:如图2:
如图2所示,margin长度d为正样本X+与负样本X-的差并在分割线法向量w上的投影,距离d的计算如下:
公式(9)成立的条件是:
也就是说只有“支持向量点”对应的α_i才不为0,其他的α_i都为0。可以使用QP或者是SMO来求得一组α_i的值及其对应的x_i的值来,这样就能得到要求的支持向量模型。
二,SVM核函数
若训练集为非线性的,那么与线性的类似,我们需要将样本从不易划分的原始空间映射到容易划分的高维空间,如下图所示:
如上图所示在二维空间中不好划分,但是映射到三维空间就好划分了。
那么之前的线性模型就可以写成这样:
那么其对偶问题的解为:
其中∅(x_i )∅(x_j )表示样本x_i与x_j 映射到特征空间的内积。在非线性中关心的就是变换之后的样本点的内积,而核函数是两个线性变化之后的内积,定义为:k(x_1,x_2 )=ρ(x_1 )ρ(x_2)。
只要一个对称函数所对应的核矩阵半正定,它就能作为核函数。常用的作为核函数的函数有:
另外还可以函数组合得到核函数,若k_1和k_2为核函数,那么他们的线性组合也是核函数:ak_1+b*k_2。
三,软间隔
软间隔是值允许有些样本在支持向量机上出错。就是有些样本不满足公式(3).在最大化间隔的同时不不满足约束条件的点应该尽可能的少。于是优化目标为:
而将之转化为对偶问题的结果为:
其中C是一个常数,当C无穷大时迫使所有样本都满足公式(3) 那么就不是“软间隔”了,当C为有限值时就允许有些样本不满足约束条件(3)。C越大不满足约束条件的点越少,满足约束条件的点就越多,所以拟合能力越强,但是容易过拟合。
注意:还有一个重要参数是当把核函数定义为RBF核时的高斯核σ,当σ越大,f越平滑,非线性效能越小,对噪声越不敏感。σ 隐含地决定了数据映射到新的特征空间后的分布,gamma越大,支持向量越少,gamma值越小,支持向量越多。支持向量的个数影响训练与预测的速度。
在RBF核中,σ对函数的影响,如下图:
四,SVM简约版(面试专用)
1,svm是基于训练样本在样本空间中找到一个划分超平面,将不同类别划分开。
超平面可以使用如下方程描述:,其中
表示的是超平面的法向量。
2,若超平面可以将样本正确分类,那么有:,那么存在缩放变换,可以将w,b进行缩放得到如下公式:
。
说明:若有f(x1,x2)=x1+x2-0.6,满足负样本(0,0),有f(0,0)<0;正样本(1,1),有f(2,2)>0.那么有f(x1,x2)=2x1+2x2-1.2,使f(0,0)<-1,f(1,1)>1,仅仅是方程的系数改变了而已。
3,可以将上式改写成:
4,任意一点到超平面的距离为:,那么两个异类支持向量到超平面的距离(可以理解为到超平面法向量上的投影)为:
,称之为“间隔”。
5,“间隔”越大那么超平面分割的效果就越好。那么有如下转换:,将最大化问题转化成了最小化问题。于是就得到第一个关键公式:
6,使用拉格朗日乘子法可以将其转化成“对偶问题”:
说明:上式的第二项为正数,减去一个正数肯定不大于原来的树,所以要找到a能使L的值达到最大(L的第二项达到最小),然后再找到w,b使L最小,即。转化之后就可以得到其对偶问题了:
,即先寻找w,b得到L的最小值,然后寻找a使L达到最大。
7,对L(w,b,a)对w,b求偏导,并令之为0,得到:
将(2)式带入到(1)中并化简可以得到: