为什么要学习 SVM
今天深度学习算法大大提高准确度,固然深度学习能够交给我们一张满意答卷。由于深度学习通过大量仿生神经元的设计来完成暴力方式进行学习,所以我们无法向客户解释机器是如何通过学习来解决回归和分类的问题。特别在医疗领域上,我们需要向客户解释机器是如何根据患者的报告来对患者病情进行诊断。因为深度神经
大多情况下对于开发者是黑盒,我们无法了解机器是如何一步一步根据。这样有关人命关天的大事,客户是无法接受机器做出诊断。
那么什么是 SVM 呢? SVM 是 Support Vector Machine 英文缩写,直接翻译过来就是支持向量机。SVM 是一种机器学习算法,用于处理二分类和多分类问题。SVM 是监督学习的一种。
SVM 、决策树和深度学习,是当下机器学习世界里 3 个比较重要的算法。早在深度学习都目前为止认为比较重要机器学习算法分别是,在深度学习出现之前,SVM 和决策树占据了机器学习。那时候是 SVM 的时代 SVM 占据了机器学习算法优势地位整整 15 年。
我们在开始学习SVM 之前需要对一些 SVM 算法用到数学知识进行简单回顾一下。
介绍分割边界(超平面)
这回在坐标系(特征空间)中绘制一条直线,该直线在 x 轴和 y 轴上的截距分别是 -2 和 1。我们根据这些已知条件,利用初中的数学就可以很轻松写出这条直线所对应的方程。
对等式进行简单的化简就可以得到
我们知道将函数等于 0 这个函数就变为一个方程,也可以使用向量的方式表示这个方程
系数 w 就是方程的法向方向,可以表示为
w 右上角的 T 表示对向量的转置也就是行列对调,这个之前我们已经遇到过,所以上面方程就可以写成下面的式子。
不少书籍上就直接写成
位于该直线法向方向的所有点的集合,带入到 wx + b 就满足下面不等式,我们通常把这些点叫正例样本
位于法线反方向上的点满足下面不等式,这些点就是负例样本。
表示点位于该直线上,点满足下面等式
现在对直线进行扩展,直线上有两个特征 表示一条直线,而如果有三个特征 表示空间中一个平面,如果是 N 维的话就无法通过图像来表示,那么这就是我们所说在 N维空间上超平面。其实直线和平面也是超平面。这些应该不难理解。
好了我们知道如何通过一个超平面把数据样本点分类正例样本和负例样本两类。现在我们来思考一个问题就是如何判断集合点存在一个边界线。如何判断数据集是线性可?如果存在一个超平面,所有特征点在这个超平面法线方向上的投影是可分的,那么这个数据集就是线性可分的。
在左图中我们看到在两类样本点存在无穷多个分割平面(边界平面)可以把两类样本点分离开。现在问题是我们如何选择一个最佳分割平面呢?图中有些一些线我们根据经验一看就会发现。
L2 分割平面比较贴近红色方块的点,而 L2 更贴近蓝色圆圈点。这两边界都是有缺点,显然这些分割线没有良好泛化能力,我们凭借经验会发现好的分割平面应该是在中间地带,离两边样本点都尽量大。
其实根据我们经验我们是大概知道什么样分割平面是最好,那么我们需要严谨地用数学语言进行描述一下什么我们想要决策平面。
这个两面需要离两个数据集合点距离最大,并且分割平面到离他最近点的距离最大。在机器学习中很多问题都是最大最小的问题。这里离分割平面最近点叫作为支持向量点,他们是机器学习关键点
点到直线距离
那么我们现在将问题扩展到 n 维特征空间, 这里 W 和 X 是 n 维,