支持向量机详解

Posted 俊红的数据分析之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支持向量机详解相关的知识,希望对你有一定的参考价值。

总第81篇



支持向量机详解

(本文框架)


01|概念及原理:


支持向量机是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。


说的通俗一点就是就是在特征空间里面用某条线或某块面将训练数据集分成两类,而依据的原则就是间隔最大化,这里的间隔最大化是指特征空间里面距离分离线或面最近的点到这条线或面的间隔(距离)最大。


看下面的图来感受一下,SVM的目的就是要找打能把红色点和蓝色点准确分开的线或面。


支持向量机详解支持向量机详解支持向量机详解


上图来源于链接:https://www.zhihu.com/question/21094489,里面还有不错的动态展示视频,可点击了解。


间隔最大化的直观解释:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且对最难分的实例点(即离平面最近的点)也有足够大的确信度将他们分开。这样的超平面对未知的新实例有很好的分类预测能力。


02|几个基本概念:


1、线性/非线性

线性是指量与量之间按比例,成直线关系,在数学上可理解为一阶导数为常数的函数;而非线性是指不按比例,不成直线关系,一阶导数不为常数的函数。


2、线性可分/不可分

对于二分类问题,有那么一条直线可以把正负实例点完全分开,这些数据就是线性可分的;而线性不可分就是找不到一条直线可以把正负实例点完全分开。


3、超平面

其实就是实例点从二维空间转移到三维甚至多维空间中,这个时候不能再用直线划分,而需要用平面去划分数据集,这个平面就称为超平面。


4、支持向量

在线性可分的情况下,训练数据集的样本点与分离超平面距离最近的样本点称为支持向量,而支持向量机的目的就是求取距离这个点(下图中带有v字母的点,与其他实例点无关)最远的分离超平面,这个点在确定分离超平面时起着决定性作用,所以把这种分类模型称为支持向量机。


支持向量机详解


5、间隔问题


  • 函数间隔

一般地,一点距离分离超平面远近程度可以反映分类预测的准确程度,在超平面wx+b=0确定的情况下,|wx+b|能够相对地表示点x距离超平面的远近。而wx+b的符号与类标记y的符号是否一致能够表示分类是否正确,所以可以用量y(wx+b)来表示分类正确性及确信度,这就是函数间隔。


支持向量机详解


通过上图能看出|wx+b|与点到超平面的实际距离之间的区别,所以前面说到是用|wx+b|来相对地表示点x到超平面的远近。


  • 几何间隔

上面的函数间隔,只要成比例的改变w和b的值,超平面不会改变,但是函数间隔却会改变。比如把w和b均扩大一倍,则超平面依然是wx+b=0,而函数间隔则变成了2|wx+b|,(2wx+2b=w'x+b'=-2)。但是我们学习的目的是在保持在间隔不变的情况下通过求取间隔最大化对应的超平面来达到学习的目的,所以我们要保证w保持不变。这里对w做一些约束,如规范化,使得间隔是确定的,这时函数间隔就成了几何间隔。 

支持向量机详解


支持向量机详解


  • 函数间隔与几何间隔的关系


支持向量机详解


03|线性可分支持向量机:


线性可分支持向量机是有一条直线(平面)可以将训练数据集完全分离开来,而线性可分支持向量机的学习目的就是找到那一条直线。


1、算法步骤


  1. 假设现在存在这么一个超平面wx+b=0可以完全把训练数据集分开。

  2. 思考这个超平面需要满足什么样的条件时才能够将数据完全分开。

  3. 如果距离超平面最近的点都能够被正确分类,那么其他距离较远的点肯定都能够被正确分类。

  4. 所以我们现在需要做的是找到距离超平面最近的样本点(前面几何间隔与函数间隔区别中有说)。

  5. 找到最小值以后还不够,因为我们前面提到过,样本点到超平面的距离越大,分类的准确性越高,所以我们要尽可能的让步骤4求取的极小值尽可能的大。依据这个条件取求取满足调价的最佳分割超平面。 


支持向量机详解


2、求解约束问题以及算法步骤


支持向量机详解

支持向量机详解

支持向量机详解


04|线性支持向量机:


1、基本概念


支持向量机详解


2、求解约束问题以及算法步骤


支持向量机详解

支持向量机详解


05|非线性支持向量机:


非线性支持向量机是针对非线性分类问题的一种学习方法。非线性分类问题是指无法用直线(线性模型)将正负实例正确分开,但可以用一条曲线将他们分开。


对解线性分类问题,线性分类支持向量机是一种非常有效的方法。但是有时候分类问题是非线性的,非线性分类问题是指利用非线性模型才能很好地进行分类。(前面我们已经说过线性与非线性的概念)


非线性问题一般不好求解,所以我们一般求解非线性分类问题时,将非线性问题通过非线性变换变换成线性问题。


1、非线性分类问题求解步骤


  1. 首先使用一个变换将原空间(非线性分类对应的空间)的数据映射到新空间(线性分类对应的空间),这里用到的方法就是核技巧(核函数)。

  2. 然后在新空间里面利用线性分类的方法对问题进行求解。


2、核函数定义


支持向量机详解


3、核技巧在支持向量机中的应用:


支持向量机详解


4、非线性支持向量机的算法步骤:


支持向量机详解


PS时刻:

那些数学公式输入实在是太麻烦了,所以就用手写了,但是很无奈字&像素渣渣,所以各位多担待,有看不清看不懂的地方可以私聊。


以上是关于支持向量机详解的主要内容,如果未能解决你的问题,请参考以下文章

干货 | 详解支持向量机(附学习资源)

图解机器学习 | 支持向量机模型详解

SVM-支持向量机原理详解与实践之一

详解支持向量机

SVM -支持向量机原理详解与实践之二

支持向量机详解