机器学习 - 支持向量机 SVM Support Vector Machine(学习笔记)

SVM分类器的中心思想:

1.是一条直线(线性函数)

2.能将空间分成2个部分(具有分类功能,是一种二值分类)

3.位于正中间,不偏向任何一方(注重公平原则,才能保证双方利益最大化)

SVM本质模型是特征空间中最大化间隔的线性分类器,是一种二分类模型。

当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。

所以这个算法的核心目标是:找到一条决策边界,使它越胖越好,即使得离该线最近的点能够越远,容错能力更强,泛化能力更强。

概念:

支持向量(support vector):离分类超平面最近的样本点。作为支持向量的样本点非常重要,以至于其他的样本点可以视而不见。 

分类超平面(hyper plane):是SVM的分类器,通过这个分类超平面实现对样本数据一分为二。

机器学习 - 支持向量机 SVM Support Vector Machine(学习笔记)_第1张图片

线性可分与线性不可分:

假如有一堆苹果和一堆荔枝,通过一条直线就能把苹果和荔枝这两种类别的水果分开了(如左下图),这种情况就是线性可分的。但是如果苹果和荔枝的放置位置是苹果包围荔枝的局面(如右下图),就无法通过一条直线将它们分开(即这样的直线是不存在的),这种情况则是线性不可分的情形。

机器学习 - 支持向量机 SVM Support Vector Machine(学习笔记)_第2张图片

在二维空间,一条直线就足以一分为二。三维空间中,则需要一个平面(比如一面墙、一扇屏风等)才能将立体空间区域一分为二。而对于高维空间(我们无法用图画出),能将其一分为二的则称为超平面。 

核函数(Kernel Function):核函数是计算两个向量在隐式映射后空间中的内积的函数。核函数通过先对特征向量做内积,然后用函数 K 进行变换,这有利于避开直接在高维空间中计算,大大简化问题求解。并且这等价于先对向量做核映射然后再做内积。 

在实际应用中,通常会根据问题和数据的不同,选择不同的核函数。例如,常用的有以下几种:

机器学习 - 支持向量机 SVM Support Vector Machine(学习笔记)_第3张图片

线性核函数,就是简单原始空间中的内积。

多项式核函数,可根据R和d的取值不同,而有不同的计算式。

高斯核函数,可根据实际需要灵活选取参数σ,甚至还可以将原始维度空间映射到无穷维度空间。不过,如果σ取值很大,会导致高次特征上的权重衰减快;如果σ取值很小,其好处是可以将任意的数据映射成为线性可分,但容易造成过拟合现象。

高斯核函数是非常经典,也是使用最广泛的核函数之一。下图是把低维线性不可分的数据通过高斯核函数映射到了高维空间的示例图:

机器学习 - 支持向量机 SVM Support Vector Machine(学习笔记)_第4张图片

所以如果样本数据是非线性的情况,SVM 通过选择一个核函数 K ,就可以将低维非线性数据映射到高维空间中。原始空间中的非线性数据经过核函数映射转换后,在高维空间中变成线性可分的数据,从而可以构造出最优分类超平面。

机器学习 - 支持向量机 SVM Support Vector Machine(学习笔记)_第5张图片

SVM求解算法:

对于给定的训练样本,首先要找到距离分类超平面最近的点(支持向量),再通过最大化这些点之间的间隔来求解。

如左下图所示,直观来看,最优分类超平面是间隔最大化的红线,但机器训练过程中最开始得到的可能是蓝线L2这个分类超平面,经过n次的训练迭代,使蓝线不断靠近红线,最终获得最优的分类超平面(红线L1)。

如右下图看出两条虚线之间的间隔距离为r。依据公平原则,支持向量到分类超平面的距离则为r/2,这个值即为分类间隔间隔最大化,就是最大化这个值(r/2)。

机器学习 - 支持向量机 SVM Support Vector Machine(学习笔记)_第6张图片

假设最合适的分类超平面已找到,分类超平面的方程即为: 

也就是说超平面上的点都符合该方程式。为便于计算,位于分类超平面两侧的数据计算的数值分别取1或-1,以将数据分两类,这两类数据通常也称为正、负样本数据(如下图所示)。

机器学习 - 支持向量机 SVM Support Vector Machine(学习笔记)_第7张图片

两类数据的函数方程式即为:

也就是说任何属于正样本类的数据(x)带入方程式得到的结果(y)计算取值都为1,即y=1;任何属于负样本类的数据(x)带入方程式得到的结果(y)计算取值都为-1,即y=-1。

推导可知,间隔最大化,就是最大化:

这个值,取最大值的表达式即为:

机器学习 - 支持向量机 SVM Support Vector Machine(学习笔记)_第8张图片

 因此可知:

 则:

那么使蓝线不断逼近红线的过程是如何实现的呢?这就离不开各类算法了。如前所述,求出W、b,就得到了超平面的函数方程式。而实际上分类超平面是有很多的,也就是可以求出很多组W、b,机器学习训练过程最终要求出最合适的W、b,亦即找到了最合适的分类超平面。

值得注意的是,最开始的一组W、b,是需要我们人为去给定的,也就是预先给定一个分类超平面去试错,看这样的超平面得出的分类结果与实际结果的差值有多少,然后再根据这个差值调整W、b,然后再试、再调整,最终才能得到最优的W、b。训练试错和调整的过程就是通过各类算法来实现的。

常用的算法如下:

机器学习 - 支持向量机 SVM Support Vector Machine(学习笔记)_第9张图片

通过给定一组带标签的训练样本,经过算法运算后,将会输出一个最优超平面,利用这个最优超平面就可以对新的样本进行分类。

什么是软硬间隔?

SVM的目标,即硬间隔:一是使间隔最大化,二是使样本正确分类。不管直接在原特征空间,还是在映射的高维空间,我们都假设样本是线性可分的。虽然理论上我们总能找到一个高维映射使数据线性可分,但在实际任务中,寻找一个合适的核函数核很困难。此外,由于数据通常有噪声存在,一味追求数据线性可分可能会使模型陷入过拟合,因此,我们放宽对样本的要求,允许少量样本分类错误。这样的想法就意味着对目标函数的改变,之前推导的目标函数里不允许任何错误,并且让间隔最大,现在给之前的目标函数加上一个误差,就相当于允许原先的目标出错,引入松弛变量。这就是软间隔

如何解决多分类问题?

例如,总共有4类水果(苹果、香梨、西瓜、哈密瓜),进行分类。

1对1方案:

假设样本类别有m个,则总共需要设计m(m-1)/2个SVM分类器。

机器学习 - 支持向量机 SVM Support Vector Machine(学习笔记)_第10张图片

可以看出,通过设计6个 SVM分类器最终将4种水果区分出来。但如果样本类别较多时,需要设计的SVM分类器会非常多。例如当水果类别达1000种时,则总共需要设计1000×(1000-1)/2=499500个SVM分类器,算法计算复杂度相当高。 

1对多方案:

该方法的思想是:选定其中一种类别样本单独作为一个类别,除该类别外的其余类别样本则归为另一个类别,这样就达到了SVM二分类的要求。因此,有多少种类别的样本,就需构造多少个SVM分类器。

机器学习 - 支持向量机 SVM Support Vector Machine(学习笔记)_第11张图片

以上总共有4种类别的水果,分别构造了4个SVM分类器,就把苹果、香梨、西瓜、哈密瓜这四种水果类别区分出来了。因此,采用一对多方案,需要构造的SVM分类器数量与样本类别数量相同。相比于一对一的方案,一对多方案需要构造的SVM分类器数量会少很多,但是,如果训练样本数目大,训练难度也加大。 

应用二叉树方案:

二叉树,就是从一个根支上长出两个树杈节点,在树杈节点上又进一步长出两个次级树杈节点,以此原理不断往下长出新的树杈节点,直到问题解决。

机器学习 - 支持向量机 SVM Support Vector Machine(学习笔记)_第12张图片

当二叉树树枝节点都只包含一个单独的类别时,分类即完成,该最终节点也就是二叉树树种的叶子。在上述4种水果类别中,总共需要构造3个SVM分类器来完成分类。因此,应用二叉树方案,总共需要构造m-1个SVM分类器(m为样本类别数量)。该方案有一个较大的缺点,那就是,如果某个节点出现分类错误,会发生错误连锁反应,其后续节点上的分类都将继承该错误直到末端叶子。 

由以上几种方案可知,SVM解决多分类问题时,需要将原有的分类问题分解成一系列的二分类问题以达到多分类的目的。在应用中,随着样本类别的增多,训练的难度和复杂度也随之增加。如何减轻计算量和降低计算难度,是SVM在多分类应用中需要着重考虑的难点之一。

总结

优点:

  • 由于SVM是一个凸优化问题,所以求得的解一定是全局最优而不是局部最优。

  • 不仅适用于线性线性问题还适用于非线性问题(用核技巧)。

  • 拥有高维样本空间的数据也能用SVM,这是因为数据集的复杂度只取决于支持向量而不是数据集的维度,这在某种意义上避免了“维数灾难”。

  • 理论基础比较完善(例如神经网络就更像一个黑盒子)。

缺点:

  • 二次规划问题求解将涉及m阶矩阵的计算(m为样本的个数), 因此SVM不适用于超大数据集。(SMO算法[序列最小优化]可以缓解这个问题)

  • 只适用于二分类问题。(SVM的推广SVR也适用于回归问题;可以通过多个SVM的组合来解决多分类问题)

  • 对缺失值敏感。这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM 没有处理缺失值的策略。而 SVM 希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。

目前,SVM 在文本分类、人脸识别、手写字符识别、生物信息学等领域已应用非常成功,或许SVM还可以成功应用的领域远远超出我们的想象。

你可能感兴趣的:(机器学习,学习笔记,支持向量机,机器学习)