机器学习之支持向量机算法(一)

  支持向量机(SVM,Support Vector Machine)在2012年前还是很牛逼的,但是在12年之后神经网络更牛逼些,但是由于应用场景以及应用算法的不同,我们还是很有必要了解SVM的,而且在面试的过程中SVM一般都会问到。支持向量机是一个非常经典且高效的分类模型。我们的目标:基于下述问题对SVM进行推导。

  要解决的问题:如下图所示,3条黑色的线都可以将两边的数据进行分类,那哪条线作为决策边界才是最好的呢?如果特征数据本身就很难分,那又怎么办呢?计算复杂度怎么样?能实际应用吗?

   

机器学习之支持向量机算法(一)

二、距离求解

  假设有一个部队过雷区,左边是一堆雷区,右边是另一堆雷区,现在需要开辟出部队前进的方向。我们需要做的就是让这个方向完全分割开左边和右边的雷区,并且我们肯定希望这个方向的边界越大越好,这样踩雷的风险就越低。

  决策边界:选出来离雷区最远的(雷区就是边界上的点,要Large Margin(间隔)),毫无疑问第二个分类效果肯定比第一个好。那为什么需要这个边界距离越大越好呢?答案就是边界越大在测试集上的泛化能力就越好。

   

机器学习之支持向量机算法(一)

  我们如果说找到了离决策边界最近的点,那这样就找到了决策边界,如上面圈出来的这些点。所以我们现在需要计算出到底哪个点距离决策边界最近吧,在这之前,首先需要引入这个距离是怎么计算的。

  首先,我们假设决策边界是一个阴影平面,那这个距离就是求点到平面的距离,然后将这个距离转换成求点到点的距离,然后再求出这个点到点的距离在垂直于这个平面上的投影,那么这个投影就是点到平面的距离了。

  那接下来,我们可以假设这个平面方程为wTx+b=0。初学的我好像并不明白这个方程怎么来的,后来查阅一些资料得知。

  因为二维空间里面,一条直线的方程可以表示为:Ax+By+C=0。三维空间里面,平面的方程可以表示为:Ax+By+Cz+D=0。依次推广,n维空间的超平面方程可以表示为:Ax1+Bx2+Cx3+Dx4+Ex5+Fx6+....+K=0

  因为n维空间对应的是n维坐标系,仅仅用x、y、z几个字母较难表示,所以此处用x1、x2、x3、...、xn来表示n维坐标系,各个维度的系数此处也可以用w1、w2、w3、...、wn来表示,所以n维空间里面的超平面方程可以写成如下形式:w1x1+w2x2+w3x3+w4x4+...+wnxn+b=0。wx相乘可以看作是内积的相乘

   

机器学习之支持向量机算法(一)

  可以将x看作w,y看作x则上面超平面方程就变成了:[w,x]+b = 0 ,即wTx+b=0。所以,样本空间中,任何一个超平面都可以用方程如下方程表示:WTX+b=0。其中,W=(w1,w2,w3,...,wn)为法向量,b为位移项可以认为是截距,该超平面可以唯一的由此方程决定。

   

机器学习之支持向量机算法(一)

三、目标函数

  上面已经得出了距离的计算公式,那现在就要依据这个距离公式来找出最优的决策边界了。首先假设平面上有三个数据点(X1,Y1)(X2,Y2)… (Xn,Yn),注意这里X和Y不是代表横纵坐标,X代表数据的样本,Y为样本的类别也就是样本标签。现在使用支持向量机做一个二分类问题,也就是说如果当X为正例时那么Y = +1,当X为负例时 Y = -1

  现在决策边界方程为:y(x) = wTΦ(x)+b(其中Φ(x)是对数据做了核变换,后面继续说)。根据上面所述可以得到如下图所示的表达式。

   

机器学习之支持向量机算法(一)

  我们最终需要得到的决策边界,通俗解释就是,找到一个条线(w和b),使得离该线最近的点(雷区)离这条线的距离能够最远,那这条线就是我们的决策边界了。这句话很重要,建议读者认真多读几遍。

  上面最终得出距离公式为:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzywwd.html