SVM是非常强大的一种分类算法。Support Vector Machine
一个好的分类是怎样的?
图中的两组数据,显然它们是线性可分(linear separable)的,图里给出的三条分界线都可以准确区分这两类数据,可见a是效果最好的。
我们画出a的两条平行线,距离分界线a最近的点会落在这两条平行线上,而我们的分界线就在a1和a2中间,这三条线看起开就想一条公路,把不同的点分隔在路的两旁,a1和a2之间的距离就是路宽,分类过程好比就是修建这么一条公路,并且路越宽越好。SVM要做的就是修建这条最宽的路。
注:分界线严格的来说是decision boundary,decision boundary 在二维空间是一条线,在三维空间是一个平面,更高维的空间里称作超平面。本文使用“分界线”代表decision boundary。
向量的概念和基本性质:
空间的点用向量来表示(以原点为起点的向量):
直线表达式:
对于 SVM 来说仅仅这样是不够的,还记得吗我们要修一条路出来,我们得确保在一条足够宽的路里面没有数据点:
这样前面的式子就可以写成更为简洁的形式:
什么是支持向量?
这是一个基于 KKT 条件的二次规划问题,优化原理的内容超出了这篇文章的范畴,在这里我们只要知道拉格朗日乘数法可以求得这个最优解,引入新的系数αi :
令以上两式为0,我们可以得到: