学习SVM时,关于类别选择问题陷入了一个误区,如今把这个过程记录下来,但愿有一样疑问的童鞋也能注意一下。算法
如图1所示,直线方程为x+y-4=0,设直线上方的"o"为正例,直线下方的"+"为负例。当样本点被超平面正确分类时,知足yi(w*xi +b) > 0条件,可是这个前提是假设**直线上方的点为正例,下方的点为负例。学习
如今换一种打标签的方式,如今我设直线下方的点为正例,上方的点为负例,显然yi(w*xi +b) < 0(好比说取直线下方的点(0,0),代入直线方程得w*xi+b=0+0-4<0,而此时yi=+1,因此yi(wxi +b) < 0),也就是说,即便我把数据点正确分类了,可是此时知足的是yi(wxi +b) < 0而不是yi(w*xi +b) > 0。那岂不是说明,若是我这样打标签的话,SVM理论就不成立了?优化
答案固然不是,但看似这样想也没错,问题究竟出在哪呢?spa
这是由于咱们先入为主了,想像一下,若是让你本身解决这个分类问题,你怎么解决?如今已知的是数据点和它对应的标签,但你并不知道这条直线方程,好,如今咱们的目标固然是求这个直线方程。rem
(1)假设直线上方数据点是正例,下方的是负例,根据SVM算法,咱们求出直线方程是x+y-4=0,此时数据点被正确分类,知足yi(w*xi +b) > 0。it
(2)再假设直线上方数据点是负例,下方的是正例,根据SVM算法,咱们求出直线方程是-x-y+4=0,注意,如今的直线方程虽然与x+y-4=0是同样的,但却反映了不一样的问题,此时数据点被正确分类,知足yi(w*xi +b) > 0。(读者能够把正例点(0,0)代入验证一下。)class
最后再举一个简单的例子来阐述一下这个问题:学习方法
引用李航老师《统计学习方法》中的例7.1:已知一个如图1所示的训练数据集,其正例点是x1=(3,3)',x2=(4,3)',负例点是x3=(1,1)',('表示转置)试求最大间隔分离超平面。引用
解:方法
根据训练数据集构造约束优化问题:
解得:w1=w2=0.5,b=-2,因此最大间隔分离超平面为:0.5x1+0.5x2-2=0。数据点被正确分类。
如今把题目改动一下,设x1,x2为负例点,x3为正例点,则优化问题变成:
解得:w1=w2=-0.5,b=2,因此最大间隔分离超平面为:-0.5x1-0.5x2+2=0。数据点被正确分类。
也就是说,对于二分类问题,无论选哪一类为正例,哪一类为负例,都不影响分类的正确性,分离超平面也是同样的。不一样的是,一个超平面为w*x+b=0,另外一个超平面为-w*x-b=0,虽然表示的都是同一个超平面,但本质是不一样的。这个差异保证了超平面一侧的点代入w*x+b后的符号与相应的标签y是一致的。