机器学习算法 --- SVM (Support Vector Machine)

1、SVM的简介

  SVM(Support Vector Machine,中文名:支持向量机),是一种很是经常使用的机器学习分类算法,也是在传统机器学习(在以神经网络为主的深度学习出现之前)中一种很是牛X的分类算法。关于它的发展历史,直接引用Wikipedia中的,毕竟本文主要介绍它的推导过程,而不是历史发展。算法

  The original SVM algorithm was invented by Vladimir N. Vapnik and Alexey Ya. Chervonenkis in 1963. In 1992, Bernhard E. Boser, Isabelle M. Guyon and Vladimir N. Vapnik suggested a way to create nonlinear classifiers by applying the kernel trick to maximum-margin hyperplanes. The current standard[according to whom?] incarnation (soft margin) was proposed by Corinna Cortes and Vapnik in 1993 and published in 1995.api

  接下来,就让咱们回到过去,扮演它的发明者。(不要想太多,这个很是简单,只需基础的线性代数基础)网络

2、一个最简单的分类问题

  有以下几条直线,哪条是黑白两种点的最佳分割线?app

  若是你看到了上面的那张图,你确定会坚决果断的说是H3,由于H1明显没有知足要求,H2虽然分开了,可是给人的感受没有那么好!若是如今在图中给你一个未知颜色的点,让你判断它是黑仍是白,该如何判断?若是是我,我就会说若是这个未知点在H3左边的它就是黑色,若是他在H3的右边,他就是白色。机器学习

  若是到这儿你都彻底理解,那么距离明白SVM就已经很是接近了。使用计算机程序寻找H3的过程,咱们管它叫作训练;使用H3对未知点进行分类的过程,咱们管它叫作预测。svg

  接下来,咱们就须要知道计算机是如何找到H3这条线,和如何使用H3作出决策?(计算机不是人类,因此它不能靠感受,而要编写计算机程序,则必须有一个严谨的算法过程。)函数

3、SVM推导

  首先,咱们将上面寻找H3的问题转换一下,学习

  如上图,找到最佳的分割线,也就是让两条虚线之间的距离最大。this

  首先咱们假设这条分割线的法向量为,咱们知道在直角坐标系中,任意一点均可以表示为一贯量w · u则表示该向量在上投影的长度,对于任意一个正样本(设黑为+,白为-) 有w · u ≥ C,设b = C,则将其整理一下便可写为w · u - b ≥ 0, 若是已知w和b,使用此公式,咱们即可对未知点进行预测(或者叫分类)。spa

  由上述,咱们知道了决策过程,接下来,咱们须要推导出训练过程,即怎样获得w和b?

  首先对于训练集,在训练集中对于任意一点xi 咱们知道它的标签yi(若是为正例yi = 1,若是为负例yi = -1),而后对于正负例咱们假设(假设当点恰好在边缘时等号成立), 不等式两边同乘以yi就能够获得

  两条虚线之间的宽度求法以下:

  即咱们要作工做的是:

    

  即咱们须要在的约束下(只需关注边界上的点),求。(这个问题,相信对于学过大学高等数学的人来讲是很是简单的)

    使用拉格朗日乘数能够很容易的进行求解,

    设则:

    ,        

    将w回带到L中,

    

    化简得,

    

    注意上式的末尾,要使L取极值(画出决策边界),结果只与训练集中已知点向量的点积有关,与其它量无关。

    若是再将 带入到决策函数中,则

    if   

      result = +

    else

      result = -

  综上所述,能够发现,要求得最大间隔与对一个未知点的分类预测只与已知虚线点的点积有关。

  

4、核函数

   在上述中,最后的决策函数为,但这个决策函数对线性不可分的数据便无能为力了,好比:

  上图,不能简单的使用一条直线将其分开,可是,若是咱们换个角度,

  对其多加一个维度Z,很容易即可将其用一条直线将其分开,若是咱们再回到最开始的维度下,则其以下图所示,

  这也就告诉咱们,在咱们当前维度下线性不可分的数据,若是换个角度,则其就会线性可分。

  又因为决策函数为, 向量在二维z坐标系中,(这里的指的是向量在第一和第二维度上的值),假设在某个维度的点积,则其决策函数就可写为

,而.    (称K为核函数)

  经过上述两式就可画出最佳分割超平面,和对未知数据作出决策。

  常见的核函数有(摘自Wikipedia):

  注:大部分的机器学习任务使用这些核函数均可以获得解决。

相关文章
相关标签/搜索