支持向量机SVM-----机器学习

支持向量机

在神经网络还没有这样深得人心的时候,支持向量机在如何高效的处理大规模数据一直是研究重点,很多研究人员发表的论文都提出了多多少少的改进版本,其中核函数的各种变化也是一个突破点。支持向量机中涉及到的统计理论相对之前提到的模型更为复杂,公式更多,其中众多的公式推导晦涩难懂,所以可能很多人看着西瓜书也是啃不动。虽然我们自己在做项目的时候直接调用sklearn中的函数,但是对原理进行理解也方便我们训练模型提高性能。

前提:支持向量机是针对二分类任务设计的,所以我们以下的内容均是以二分类任务为例子。给定训练样本集支持向量机SVM-----机器学习支持向量机SVM-----机器学习,这里一定记住只有两类:-1和+1,并非0/1类。分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开。假设在一维平面中,也就说如果当前的样本集中只有一个属性:

支持向量机SVM-----机器学习

如上图,这是在一维平面中的情况,蓝色的样本为-1类,绿的样本为+1类,我们想将这两类分开,就是找一条线隔开,上图中有三条线,那我们选择哪一条线是最合适的呢?又如在二维平面中, 假设样本中只有两个属性的情况下:

支持向量机SVM-----机器学习

 如上图所示,我们可以看到同样我们有多个划分可以将两类数据分开,那么我们选择哪一种线或者平面划分呢??? 这就是支持向量机的关键所在。

接下来我们再看一种情况:

支持向量机SVM-----机器学习

 很明显在+1类别中混进了一个-1类别,这个时候上面三个竖线均没有分离开,这就是异常点存在的时候,那么支持向量机中有一个容错的机制,也就是说我们不管这种异常点,分错了就分错了,支持向量机以大局为重。

“核函数”是支持向量机非常重要的存在,那么“核函数”的作用到底是什么??? 我们看个例子:

支持向量机SVM-----机器学习

如上图所示,用二维平面的例子进行举例,其中绿色代表+1类,蓝色代表-1类,很明显,两类的数据中间并没有分开,而是混在一起,那么我们如何使用支持向量机在当前的二维平面找出一个平面来分类这两个类别,很明显,在当前的平面我们做不到。这个时候“核函数”就出来了。当前是以二维平面为例,样本中只有两个属性,并且无法找到一个超平面,那么如果我们将样本中的属性进行组合,作为样本的新的属性,这个时候是不是就相当于多了维度,将当前的情况映射到高维空间中,说不定我的+1/-1类的样本就不会像在二维平面中这么混在一起,我们就可以找出一个超平面将其分离。这就是"核函数"做的事情,那么为什么会有不同的"核函数",无非就是属性中有不同的组合,加减乘除、分数、平方等等。所以这其实就是"核函数"在做的事情。

那么这里我们还没有看到任何的公式,我们先感性的认识一下支持向量机到底在做什么。至于“核函数”,在具体做项目的时候,我么可以自己选择使用哪一种核函数,并且选择其中的参数,sklearn库中都集成好了方法。接下来我们就一起看看公式推导。