支持向量机
哈尔滨工程大学-537
算法原理:
一、寻找最大间隔
如下图所示,用一条分割线将两类点分割开来(二维的是一条分割线,多维的就是分隔面),显然三条线都能将两类点分割开来,然而,从直观来看,红色的分割线显然分割效果最好。为什么这么说呢?
因为红色的分割线到两边最近的点的距离更远。可以直观把两边的两类点想象成地雷,我们有一支红军要通过这片雷区,显然,沿着绿色和灰色的路线行军,两边不会踩到地雷的安全区域非常的窄,而沿着红色的路线行军,安全区域明显更宽。我们的目的就是要找到能够使安全区域最宽的行军路线,最终使红军夺得革命战争的胜利。
如下图所示,距离分割线最近的几个点的位置,决定了分割线的位置,形象的来说,就是距离红军队伍最近的几个地雷的位置,决定了红军穿过雷区的行军路线,如果距离红军最近的地雷的位置发生改变,红军的行军路线就必须随之改变,否则安全区域就有可能变窄,踩到地雷的可能性就会增加。
那么此时要解决的目标就非常明确了,即找到距离分割线最近的那几个点,而这几个距离分割线最近的点,就叫做支持向量,这就是支持向量机一词的由来。
那么如何找到距离分割线最近的那几个点?
由高中数学可知:空间中一个点(x1,y1,z1)(x1,y1,z1)到平面线ax+by+cz+d=0ax+by+cz+d=0 的距离为:ax1+by1+cz1+da2+b2+c2√ax1+by1+cz1+da2+b2+c2 ;
扩展为多维的情况,点Xi=(xi1,xi2...xik)Xi=(xi1,xi2...xik)到一个超平面WTX+b=0WTX+b=0的距离为:WTXi+b||W||WTXi+b||W||,其中WW和 为kk维向量(因为 有kk个特征)。
于是当前的任务就是要找到 值最小的数据点,将该点的WTXi+b||W||WTXi+b||W||最大化,此时的WW和 就是我们要找的最优分割超平面的参数。
由高中数学可知:若点(x1,y1)(x1,y1)在直线y=ax+by=ax+b的上侧,则将点(x1,y1)(x1,y1)带入直线得ax1+b−y1>0ax1+b−y1>0,反之,若在下侧,则带入直线得ax1+b−y1<0ax1+b−y1<0;
推广到多维的情况:若数据点XiXi在超平面正侧,WTXi+b>0WTXi+b>0,那么将在这一侧的数据点定义为1类,即类别标签yiyi为1,那么yi(WTXi+b)>0yi(WTXi+b)>0;
反之,若数据点XiXi在超平面的负侧,WTXi+b<0WTXi+b<0,那么将这一侧的数据点定义为-1类,即类别标签yiyi为-1,那么yi(WTXi+b)>0yi(WTXi+b)>0 , 这样在比较大小的时候,就避免了负数的出现。
那么此时,首要任务就是找到yi(WTXi+b)||W||yi(WTXi+b)||W||最小的数据点,并将该点的yi(WTXi+b)||W||yi(WTXi+b)||W||值最大化。
若限制yi(WTXi+b)≥1yi(WTXi+b)≥1,则距离超平面最近的点的yi(WTXi+b)yi(WTXi+b)应等于1,而||W||||W||则越大,说明该点离超平面越近。
如下图,可以更加直观的理解以上说法,虚线WTX+b−1=0WTX+b−1=0和虚线WTX+b+1=0WTX+b+1=0分别是两条与直线WTX+b=0WTX+b=0平行的直线(由高中数学可知,WTX+b−1=0WTX+b−1=0在直线上侧,WTX+b+1=0WTX+b+1=0在直线下侧),通过归一化系数W,可以使最后的常数一直保持+1和-1,也就是说,这两条虚线可以在平面上任意移动,而始终保持WTX+b−1=0WTX+b−1=0和WTX+b+1=0WTX+b+1=0的形式。那么现在的要求就是,让这两条虚线之间的距离最大,且要保证所有点都在这两条虚线之外(或在虚线之上),即1类样本点都在WTX+b−1=0WTX+b−1=0的正侧(或在线上),即WTXi+b−1≥0WTXi+b−1≥0;而-1类样本点都在WTX+b+1=