1. 支持向量机
支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。SVM使用铰链损失函数(hinge loss)计算经验风险(empirical risk)并在求解系统中加入了正则化项以优化结构风险(structural risk),是一个具有稀疏性和稳健性的分类器。SVM可以通过核方法(kernel method)进行非线性分类,是常见的核学习(kernel learning)方法之一。SVM被提出于1964年,在二十世纪90年代后得到快速发展并衍生出一系列改进和扩展算法,在人像识别、文本分类等模式识别(pattern recognition)问题中有得到应用。
2. SVM欧式距离
SVM中使用的是欧式距离,高等数学中的立体几何告诉我们,三维空间中所有处于同一平面的点所对应的方程,任何一个平面都可以用三元一次方程来表示。如果知道一个平面的法向量W=(a,b,c),平面内一点P=(x1,y1,z1),平面内任意一点(x,y,z),可以求得与法向量垂直,且过P点的平面。方程如下:
(x-x1)a+(y-y1)b+(z-z1)c=0 (点法式方程)
即满足此方程的所有(x,y,z)点组成了该平面,式子中(x-x1),(y-y1),(z-z1)为这两点组成的向量,展开后方程为ax+by+cz-(ax1+by1+cz1)=0,其中-(ax1+by1+cz1)为常数,为0时表明该平面过原点。
记D=-(ax1+by1+cz1)。由点到面的距离公式得到:
两平面之间的距离公式是:互相平行的两个平面,设两个平面是:ax+by+cz+d=0,ax+by+cz+e=0。那么两平面的距离为:
现假设划分超平面的线性方程为:
上式中,W=(w1,w2,…,wn)为法向量坐标,X=(x1,x2,…,xn)为超平面内的满足此方程的任意点坐标。b为位移项,源点到超平面距离与其有关。一旦W与b确定了,由X组成的平面也就确定了。
在三维空间中,已知A1点的坐标与A2点的坐标,且都在平面内;W为该平面的法向量,d为点X到平面的距离。
可以得到
根据图可以由两点的坐标可以计算XA1向量。我们知道向量的内积公式: ab=|a||b|cosθ
所以平面外任意点X到平面的距离公式可以计算如下:
其中WT/W为单位法向量。上式进一步化简可得到:
上式中|W|为二阶范式,三维空间中表示向量的模。二阶范式的计算公式如下:
3. 线性可分
前面已经了解到了,SVM是一个线性分类器,通过核函数也可以进行非线性分类。在二维空间或三维空间中,两个点集(D0和D1)被一条直线或者平面完全分开叫做线性可分。
严格的数学定义如下:
D0和D1是n维欧式空间中的两个点集。如果存在n维向量W和实数b,使得所有属于D0的点Xi都有WXi+b>0,所有属于D1的点Xj都有WXi+b<0,则我们称D0与D1线性可分。我们知道在平面直角坐标系与空间直角坐标系中,当点在线上或者平面中时,WX+b=0,当不在线上或者平面时,则WX+b≠0;(在线或者面上方大于0,下方则小于0)。
4. 最大间隔超平面
SVM的目标是找到一个最佳的超平面(WX+b=0),将D0与D1进行分开。所谓最佳就是使得离超平面最近的点越远越好,也就是找到最大间隔超平面。如下图所示,左边为任意一个非最大间隔超平面,右边为最大间隔超平面。从图中可以看出最大间隔超平面使得距离超平面最近的点的距离d最大化。距离d越大,表示分类效果越好,鲁棒性越好。
5. 支持向量
样本中距离超平面最近的点叫做支持向量。因为这些点对分类的超平面起着决定性的作用,决定了超平面的位置。
6. SVM目标函数与最优化问题
从上图中我们可以知道支持向量到超平面的距离为d,其他点到超平面的距离均大于d。这里我们定义数据集标签(目标值)的取值为y=1或y=-1,分别表示两个类别。于是,根据前面的距离公式,进一步可以得到如下两个式子:
上式中,分子与前面稍有不同,去掉了绝对值,超平面的两侧分别为正值与负值。对上式子进行转换可以得到:
然后我们可以得到最大间隔超平面的上下两个超平面的方程如下图所示。
现在对式子作变量替换,替换如下:
所以上下两个边界(最大间隔超平面边界)的平面方程可以写为下面这样:
同样道理,我们对最大间隔超平面也进行变量伸缩变换,对WTX+b=0等式左右两边同时除以||W||d,所表示的超平面没有变化。在使用上面的式子W’与b’替换得到最大间隔超平面的方程为:
由于y的两个类别是-1与1.对于距离公式去掉绝对值后,第i个样本点到最大间隔超平面的距离公式如下:
最大间隔超平面的目标函数(2d的值)可以表示为:
上式中,花括号内是求支持向量(离最大间隔超平面最近的点)到最大间隔超平面的距离。整个式子表示找到使得支持向量到最大间隔超平面的距离最大的情况下,W’,b’的取值。我们知道了最大间隔超平面的上下两个平面的方程,所以支持向量到最大间隔超平面的距离为d,也就是最小值,根据两个平行超平面的公式现在可以求得d的值如下:
所以最大间隔就是2d。在图中表示更清晰,如下:
目标函数(2d的值)则可以进一步表示为:
为了让求解变得简单,上述问题的最大值转换为以下目标函数的最小值:
其约束条件为:
转换后的目标函数的平方是为了去除二阶范式W’的根号,将来计算方便,不改变最优的W’,b’的结果值。
7. 拉格朗日乘子法与目标函数求解
拉格朗日乘子法是给定约束条件求极值,现在设z=f(x,y)在条件g(x,y)=0的情况下,在点(x0,y0)处(切点处,只有切点处才是附近的最大或者最小值,否则偏导数如果不等于0,则沿着x或者y方向走一小段距离,则值变大或者变小)取得极值。那么f(x,y)与g(x,y)在该点(x0,y0)处的梯度(两个偏导数所在方向的向量的和)必定平行;
所以(fx′(x0,y0),fy′(x0,y0))(fx′(x0,y0),fy′(x0,y0))与向量(gx′(x0,y0),gy′(x0,y0))(gx′(x0,y0),gy′(x0,y0))平行。所以有
进一步得到: