引言
这篇文章详细地介绍了SVM背后的原理,它为什么是大间距分类器?分类器的参数C为什么影响着分类器的行为?核函数背后采用了什么样的技术,看过这篇文章以后,相信你能很好地理解这些问题。最后,我用scikit-learn来分别来拟合线性和非线性的SVM,让大家对SVM分类器有更加深刻的理解。
找寻最优化目标
相信所有用过SVM的人都知道它是一个大间距分类器。但是,它的原理是什么?它为什么可以最大化决策边界与样本之间的距离?下面我将一步一步的揭开它神秘的面纱。
从上图中我们可以看到,SVM会最大化间距,也就是那个 m 。但是,你可能会疑惑,上面的直线都怎么得出来的,m等于什么?我现在给你一个关于原点到直线距离的公式:
这里我给你一个例子,应用一下这个公式,让你更好地理解它。我相信大家很早就知道 y=−x+1 这个函数图像了吧!如下:
我们可以把 y=−x+1写成x+y=1 ,这里 w=[11],k=1.应用上面的公式:k||w||=12√ ,现在你可以用勾股定理去验证一下这个结论,结果也是一样的。现在如果我们把这个公式应用到 wtx+b=−1和wtx+b=1 ,我们就可以得到 m=2||w|| 。
PS:你可以把这两个式子写成 wtx=−1−b和wtx=1−b ,最后 b 会约掉,得到我上面的结果。
如果你想要了解得到
http://www.svm-tutorial.com/2014/11/svm-understanding-math-part-1/
http://www.svm-tutorial.com/2014/11/svm-understanding-math-part-2/
http://www.svm-tutorial.com/2015/06/svm-understanding-math-part-3/
现在,我们已经得到了间距
上面公式中的 i 表示第
现在,我们可以总结一下SVM最优化目标了:
看到此情此景,我们是否想起了什么呢?Yeah,就是拉格朗日乘子(Lagrangemultiplier),它可以搞定这个有约束的最优化条件。
拉格朗日乘子法
为了让大家更好地理解拉格朗日乘子法,现在我用一个实例一步一步地来讲解这个知识点。
假设,我现在有个想要最大化的函数为: f(x,y)=2x+y ,这是一个三维的函数,图像如下:
现在,我们有个约束为: x2+y2=1 ,这很明显是个圆形。因此,我们可以把这个最优化问题解释成:“单位圆上的哪个点 (x,y) 使得 2x+y ”最大?为了使这个问题简单化,我们用等高线(contour lines)来描述这个问题,如果你不熟悉它,请参考我的这篇文章:http://blog.csdn.net/xlinsist/article/details/50920479
从上图我们可以看出,当 f(x,y) 取得最大值或最小值时的等高线与约束图像相切。其它的函数也都是同样的道理。谈到切线,让我们不禁会想到梯度,下面让我们来看看梯度在我们求解问题的道路中扮演什么样的角色?
函数 f 在点