当前位置: 直线机 >> 直线机优势 >> 零公式推导,一文搞懂什么是支持向量机S
支持向量机算法(SupportVectorMachine,SVM),是一种二分类模型。
对于二分类问题,如果我们从数据集是否线性可分角度来看的话(线性可分通俗理解就是画一条直线,可以直接将两种类型的数据分开),可以将数据分为三种类型,一类是线性可分的、一类是近似线性可分(有一些异常点导致无法线性可分)、一类是线性不可分。这三种场景对应的SVM的算法分别是硬间隔SVM、软间隔SVM和非线性SVM。支持向量机的数学原理及其推导过程相当复杂,想要讲清楚确实有点难度。但是本篇文章希望在并不深究其数学推导的情况下,把算法的基本原理和设计思想给大家讲清楚,帮助大家学会如何应用才是我的根本目的。01SVM初探在具体讲解算法前,我们先看一下小例子
桌面上有红色和蓝色两种球,如何用一条直线把两种颜色的球分开?
此时,我想你会说,这太简单了,随便一条直线就能将其分开。
但是,如果我把两种颜色的球混在一起呢?
此时,可能会稍微困难一点,你的方案可能是这样的。
但为了将两种颜色的球分开,直线不得不变成了一条不规则的曲线。实际上,如果在同一个平面上来看,红蓝两种颜色的球是很难分开的。
但是,有没有一种可能,比如突然猛拍一下桌子,然后红色和蓝色的球都腾空而起,但由于球的质量不同,在腾空的一刹那,恰好可以找到一个水平切面,能够把两种颜色的给分隔开。比如像这样:
此时,我们已经从二维的平面变换到了三维空间,原来的曲线也变成了一个平面。那么,这个能够在高维空间中,将数据有效分开的平面,我们称之为”超平面”。
其实,很多数据在低维空间上来看是不可分的,但是如果将其映射到高维空间,那么反而能够找到分隔数据的平面,支持向量机的求解过程,就是帮助我们找到那个能够将红蓝两种颜色的球分隔开的超平面的过程,而这个超平面就是我们所学习到的SVM分类器。
02SVM详解(1)硬间隔SVM
SVM算法的目标,是找到一个超平面分割不同类别的数据点,并且使得数据点与超平面的最小距离最大。这句话读起来很拗口,但是总结的很简洁。
首先,对于线性可分的数据集,我们能够找到很多条直线将数据划分开,但是到底哪条直线是最优的呢?
如下图,相信大家都能直观的判断出来,肯定绿色的线的分类效果更好,主要是因为相比于其他分类线而言,所有红色、蓝色的点到绿色线的垂直距离相加后是最大的。
也就是说决策边界具有更大的“间隔”(margin),通常也会具有更稳定的分类性能。
大间隔分类器对于未知样本的分类准确率具有更大的均值和更小的方差。这个便是最大间隔的概念。
SVM就是帮我们找到一个超平面,这个超平面能将不同的样本划分开,同时使得样本集中的点到这个分类超平面的最小距离(即分类间隔)最大化。
假如数据服从线性关系即是线性可分的,那么学习到的模型就是硬间隔支持向量机(SVM),此时的分类是完全准确的,不存在分类错误的情况。
(2)软间隔SVM
线性可分只是理想化的状态,现实中,我们的数据肯定没这么”干净”,噪点是在所难免的,此时我们需要使用软间隔SVM,在容许一定错误分类的情况下,最大限度的将数据分开,以达到我们的分类目的。
如下图所示,存在两个异常点,导致无法使用线性SVM直接分类。
为了解决这个问题,我们引入了一个叫”松弛变量”的概念,它的作用就是使得线性SVM在求解时具有一定的容错能力。
如果不引入松弛变量,SVM找到的分割线将如下图左侧所示。它位于红蓝两色的异常点之间。很显然这不是我们愿意看到的。通过引入松弛变量,该异常点被允许非常靠近分割线、甚至在分割线的另一侧。此时我们可以不受红色异常点影响(抛弃它),仍然找到一条相对最优的分割线。
(3)非线性SVM
另外,还存在一种情况,就是非线性支持向量机。
如果样本集本身就是非线性的数据,那么在此种情况下,不论多么高级的分类器(算法),只要它的映射函数是线性的,那同样解决不了这个问题。
此时,对于SVM算法,我们需要引入一个新的概念,即核函数。
核函数所起到的作用是将我们原始的样本从低维空间映射到一个更高维的空间中,使得样本在新的高维空间中变得线性可分,然后我们再利用SVM找到它的分类超平面,从而解决非线性数据分类的问题。
最简单的就是通过核函数做映射,将二维平面上的点,通过等价运算,投影到三维空间中,就好像我们开篇举的那个小例子一样。
如下图所示,经过核函数(kernel)转换后,二维不可分的点被映射到三维空间,此时数据变为可分。
由于现实世界中,大部分数据是非线性的。因此,非线性SVM有更加广阔的应用空间,而核函数便是非线性SVM的精髓所在。
常用的核函数有很多,比如线性核、多项式核、高斯核、sigmoid核、拉普拉斯核等,或者这些核函数的组合。
这些函数的区别在于数据的映射方式不同,通过这些核函数,我们就可以把样本空间投射到新的高维空间中。
03总结按照数据是否线性可分,SVM可以分为线性可分支持向量机和非线性支持向量机。
对于线性可分的,如果样本完全线性可分,那么我们通过硬间隔支持向量机就可以找到一个超平面,能够将数据完全准确的分类。
如果样本不完全线性可分(比如样本中存在噪声或异常点),那么我们通过软间隔支持向量机,可以找到一个相对可接受的分类平面,在允许一定的分类错误的情况下,获得较好的分类效果。
如果样本本身是一个非线性数据集,这时候就需要通过核函数进行转换,将原始数据映射到更高维的空间,使其在更高维空间变成线性可分,然后再去求解最优的超平面,从而实现分类的目的。
SVM在小数据集的分类问题上往往能够得到很好的效果!
看,说到做到,一个公式都没有吧,也不知道大家看明白没。。。
预览时标签不可点收录于合集#个上一篇下一篇