机器学习之SVM

SVM (support vector machine)(支持向量机)算法

在传统机器学习算法中SVM应该算是最方便的“开箱即用”的算法了,也是比较难理解掌握的算法了,但实际上是一点就透的知识。今天我将由浅入深帮助你们理解SVM。网络

若是有什么纰漏,也请你们在评论中指出,感谢。机器学习

在机器学习算法中咱们大体能够分为 分类和聚类两种,SVM属于监督学习的分类算法,是个分类器,严格的说是二分类器,在一次分类中只能进行二类分类不是多分类器。函数

分类算法的本质是:在一个N维空间里找到决策边界,决策边界将这个数据空间划分为X个子空间。某个新加入的N维数据向量即一个数据点,是经过它所属在哪一个子空间来预测它的分类的。

接下来我用几张图(都是只有X Y轴的二维空间)示来讲明上面的总结,途中的线就是决策边界,每一个二维空间都被决策边界划分为了若干个子空间,下面列举的传统机器学习算方中,对于一样一个空间(即一样一份样本数据)不一样分类算法的区别只是画决策边界的方式不同而已。工具

kNN(最近邻算法)学习

决策树测试

SVM优化

一个分类器是否优秀取决于两个方面:一是在被学习的样本空间上进行分类的正确率,即数据拟合的能力。二是 泛化·推广 的能力,即对未出如今样本里的新数据的预测能力,若是这方面能力低下咱们就称之为overfit过分拟合。每每这两方面能力会相互抵消和影响,若是两者平衡的好就是好算法。spa

接下来正式开始讲解SVM。it

下图中3条线都将2类数据正确的分开,可是那条线最好呢?

虽然3条线分割的正确率都是100%,可是显然B更好的,这个决策边界离两边的数据都比较远,比较好的避免过分拟合的问题,也就是说B有更好的泛化和推广能力。

下面是推导,假设 令决策边界 名为C,决策边界到原点的距离为L,决策边界的法线为f,蓝色点为A向量,红色点为B向量

从图中能够看出,显然A·f <L和 B·f >L,即 图中的每一个点的向量表示投影(向量的点乘能够简单的理解为投影,好比A·f)到决策边界法线方向上的长度 必定是小于L的为1类 大于L的为另一类,无论决策边界自身摆放方向如何,是否足够好,只要C能正确的进行分类,那么C就必定符合这一特性。

因此咱们只要能肯定表明C的二元方程C(v)便可,则对于任意一个新来的样本v, 有当C(v)<0 时v为蓝色的点 ,C(v)>0时为红点。至此,分类问题转变求未知方程C(v)的问题。

咱们要求的分割线方程应该刚好同时远离红和蓝两个区域,即这个待求的未知方程须要知足下边两个条件。

f*v+L>=1    对于红点要高于分割线1个单位长度以上(为何要加1?其实只是为了让这个点和分割线之间是有间隙的,而不会紧挨着)

f*v+L<=-1    对于蓝点要低于分割线1个单位长度以上

如今,咱们再引入一个变量Y,该变量在V为正例即红色等于1 为反例时为-1.上文写的两个不等式,在不等式的两边都乘以Y则获得 Y(f*v+L)-1>=0(不等式一  两个不等式获得了统一,即全部的点都必须知足该不等式。

咱们来想象这样一个场景(以下图):咱们把分割线C分别向上和向下进行平移,当遇到数据点后就停下来。红蓝两类数据被一条马路分红了两组,而马路越宽说明两组数据被分的比较开,分类器的分类效果比较好。而那些正好在马路边上的点 就是 所谓的support vector(支持向量)只有这些点决定了马路的宽度,那些远离分割线(马路中间线)的点咱们实际上是不须要关心的。而马路的宽度咱们是能够求出来的,即 宽度 ,如今咱们的问题又转换为最大化W函数的问题上了,同时B A两个点还必须知足Y(f*v+L)-1=0(等式一), 这个来自于(不等式一)的约束,其中那些远离马路的天然是>0的点,而刚好在路边的点也就是support vector点是=0的而A B两点就是支持向量,因此将B和A带入(等式一)咱们能够获得(等式二)(当v=B时由于B为红色的正例样本此时Y=1)同理(等式三),因此。而求函数的最大值等价于求函数的最小值(不要忘记了在等式一的约束条件下),而处理在约束条件下求极值的一类问题就要用到 拉格朗日乘子 这个算法。

引入拉格朗日乘子后得(其中是指的全部的support vector,只有法向量f和分割线到原点的距离L两个是自变量其它的变量都是已知的值).

求w(f,L)这样一个2元函数,接下来来的作法就是求两个偏导数并令其为0求得驻点,该驻点即为极小值点。

你也许会问 驻点就是极值点 ?这不对吧。

答案是数据家会为咱们证实w(f,L)是一个凸优化函数即只会有一个全局最优解,不会陷入到局部最优解里。关于凸优化那又是一大块内容了这里不展开讲了。

PS:BP神经网络算法中采用的是梯度降低算法就很容易陷入到局部最优解的问题中,而SVM对这个问题是免疫,这是SVM的优势。

令2个偏导数=0求极值

 和 

OK两个方程 两个未知数,咱们能够求得 f  和 L 了,而后我就能够获得分割线的函数 C(v)=f*v+L ,

则对于未知的新数据点向量u,当 C(u)>0则u为正例红点,反之为蓝点

大功告成!!!最后咱们找到的这个 决策线C(针对2维空间)OR 决策面(针对3维+空间)在SVM中被称之为 超平面,超平面是咱们学习SVM过程当中遇到的第一个重要概念。

等等咱们的例子是否是太简单了点?现实中哪里会那么好恰好能够用一条线划分为2类,即线性可分。

以下图 如何用一条直线进行划分为2类?事实上你是作不到的。

上图是用“笛卡尔坐标空间”来表示的数据,若是咱们把图中的点转换为极坐标表示,那就变成线性可分了。

因此,不可分的问题,不少状况下是能够经过“转换问题空间”方式获得解决。上面的例子就是把X Y的坐标系 变成 极坐标系,换了一个“问题空间”来实现的。而在SVM中完成问题空间转换的函数被称做“核函数”,核函数在SVM中是另外一个很是重要的概念。

设有核函数F,咱们能够将“原问题空间V”中的每个向量点转换到一个“新的问题空间B”下的新值,F(V)=B ,而后咱们再在B空间里应用本文最先提到的“寻找超平面”的方法找到决策边界便可。而具体核函数是什么,前人们已经总结试验出了不少典型的函数(不须要你去寻找),通常的SVM工具包里也都包含了。

使用SVM的通常过程,也就是权衡各个核函数的过程,咱们会找到针对当前训练样本数据以及测试样本数据,在拟合能力和泛化能力方面表现最好的那一个核函数来使用。使用起来很简单,开箱即用,大致上也就是选取哪个核函数 这么一个参数须要你测试和调整。

相关文章
相关标签/搜索