2006年的ICDM评出了十大数据挖掘算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART。
本系列是对这十大算法的个人理解。本文准备先用最通俗的语言大致解释下SVM是什么,把基本思想弄明白,然后再涉及一些数学等理论细节。
如有错误希望大家指出,一起交流~
本篇主要参考:支撑向量机导论
1.通俗理解支撑向量机
首先最简单的支撑向量机最用来做二分类的。简单来说二分类就是需要判断是非。比如给你一封邮件, 判断是不是垃圾邮件;给你一张图像,判断图像里是否包含人脸;给你一个用户的访问数据,判断这是不是恶意用户等等。
下面用一张图简单解释下二维情况下的支撑向量机。
图中红色点代表“是”,即A区域;紫色的点代表“非”,即B区域。直线L是区分区域A和区域B的分割线。
首先要知道什么是支撑向量。所谓支撑向量就是每个区域中离分割线L最近的点,即区域A的点c和区域B中的点D。L_A和L_B是和L平行的,分别过点C和过点D的直线。注意,L_A和L_B到L的距离也是相等的。
支撑向量机需要完成的工作就是根据上图的六个点,最终找到分割线L。
L需要满足的条件有:
1.能把两类点分隔开来
2.到支撑向量的距离相等
3.到支撑向量的距离最大
找到了分割线L之后,给定一个新的未知的点,我们就能很快判断出这个点是属于区域A还是区域B了。
2.支撑向量机的理论
2.1最优化函数的推导
首先我们假设我们拥有训练数据集,其中是点的坐标,的取值为,我们设y=+1为区域A,y=-1为区域B。
我们假设区域A和区域B的分割线L由下式定义:
则空间中任意一点到L的距离为:
上式中有绝对值,计算不方便。我们注意到区域A到L的距离和区域B到L的距离的方向相反,在符号上相差一个负号,我们规定从A到L的距离为正,从B到L的距离为负,则上式可以改写为:
我们又注意到,中,W和b可以进行任意缩放而不影响结果。假如一组为,那么我们把w和b都乘上2得到:。这两组得到的L其实是一样的。
为了防止参数的任意缩放,我们设定对于支撑向量,。由于支撑向量到L的距离是所有样本中的最小值,所以
综上:
1.支撑向量到L的距离为
2.任意向量到L的距离为,所以
我们的目的是最大化支撑向量到L的距离,这样才能更好的区分区域A和区域B,所以基本的支撑向量机又叫做最大间隔分类器。用数学表示如下:
最大就是最小,所以最终的最优化函数为:
上式是个典型的二次凸优化问题,可以用任何现成的凸优化算法来解。但是当把上式转化为Dual问题时,会发现有趣的性质。