机器学习----SVM算法

svm算法的通常理解在二维问题上,对于二元分类来说,svm的目的就是找一条线把两类分开。不过下面这个例子,有三条不同的直线都能把这两类分开,那么我们该选哪一条线呢?这将是我们考虑的问题:


首先我们先假设一条直线W*X+b=0是最优的分割线。我们把这种最优SVM分割平面叫做超平面,我们现在的目标就是确定最优的W和b的值。SVM定义超平面为:能使支持向量和超平面之间的最小距离的最大值。那么这句话该如何理解?我们结合着下面这张图:让支持向量和超平面之间的最小值最大化,目的就是使两个类到超平面的间隔是最大的,我们不考虑所有的点和超平面之间的关系,只考虑和超平面最近的点。分类按照这个标准不难理解,因此也就不难理解为什么要求超平面。


根据上面的假设,我们提出已知条件:有蓝色星星样本5个,假设它们代表的类Y=1;同时有紫色圆圈样本5个,假设它们代表的样本Y=-1;因此T={(x1,y1),(x2,y2),(x3,y3)......},超平面方程为W*x+b=0。样本点到超平面的几何距离为:


这个距离大家可以推导一下,按照点到直线距离推导即可,这里就不推理验证了。

下面的问题就是怎样获取超平面:

超平面定义为:支持向量到超平面的最小距离的最大值,即:max[支持向量到超平面的最小距离]。可以表示如下:


加入约束:min yi(w*xi+b) = 1,因此:其他的样本点的函数距离一定是大于1。即y(w*x+b) >= 1,把这个条件带到公式进行优化,得到公式1-3:



在公式1-3的基础上再进行优化,优化最大化分数,转化为优化最大化分母,将公式转化为1-4


为了优化1-4,利用拉格朗日公式和KTT条件,转化如下:


其中列出相等的两个部分是等价的,因此最终我们可以写成对偶表达式的形式:


因此要先求最小值,对w,b求偏导:


把上面求得的参数带入公式优化max:




最终得到超平面。






阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页