1为什么需要支持向量机
上两周我们分别介绍了在分类问题中常用的朴素贝叶斯和逻辑回归算法。
然而在实际问题中的数据分布情况往往比较复杂,无法简单地用线性分类器将数据区分开来。
单纯考虑二维的情况,数据分布情况可能会像这样:
- 第一种为线性可分的分布,此时我们可以很容易画出一条直线将数据分为两类;
- 第二种为非线性可分的分布,此时我们很难通过一条直线将数据分开,但是仍有办法画出一个圆将数据圈为两类;
- 第三种为不可分的分布,这种情况下很难完全将两类数据分开。
一般的线性算法只能处理第一种线性可分的情况,面对第二及第三种情况则效果大打折扣。
而支持向量机则可以有效地对上述三种数据分布情况做出有效的分类,并且随着近年来数据处理效率的提高,支持向量机在业界的应用已经越来越广泛。
2支持向量机介绍
首先我们来介绍下什么是支持向量机。
支持向量机(Support Vector Machine,简称为SVM)是Cortes和Vapnik于1995年首先提出的使用最大分类间隙来设计决策最优分类超平面的算法。
它在解决小样本、非线性及高维模式识别中均表现出许多特有的优势,近年来其在机器学习领域受到了越来越广泛的重视,同时也使得其理论和应用在横向和纵向上都有了发展。
SVM目前的应用主要在模式识别领域中的文本识别、中文文本分类、人脸识别等,同时也在许多的工程技术和信息过滤等方面有着重要作用。
支持向量机的优点有:
+ 通过使用核函数,能够方便地处理高维数据
+ 决策函数由少量的支持向量决定,预测效率高效
支持向量机的缺点有:
+ 当特征维度远远大于样本量时,效果会比较差
+ 当样本量很大时,使用非线性核函数会导致计算效率低下
+ SVM无法直接输出概率化的取值
3支持向量机原理
接下来开始介绍支持向量机的分类原理。
首先从最容易的线性可分的数据分布入手。
如下图所示为两类线性可分的数据类别,我们可以很容易的画出多条直线(多维情况下即超平面)将两类样本点分开。
但是究竟哪一种分类方式是最优的呢?
SVM算法从两类样本数据点间的间隔入手,为我们找到了答案。
首先间隔定义为样本点到分类超平面(二维下即直线)的最小距离。
正类的样本点(xi,yi=1)到决策超平面的距离为:
(xi(xi,yi=1)xiyi1
负类的样本点(xi,yi=1)到决策超平面的距离为:
所以,任意样本点(xi,yi)到决策超平面的距离可以统一表示为:
SVM的学习目标就是要找到一个决策超平面,使得训练样本集到超平面的最小距离最大化,对上述问题,即是找到下图中的超平面(直线):
而这样一个直观的寻找过程可以用数学中的最优化模型来表示,其形式如下:
对上述问题做进一步简化,假设
即让最小函数间隔为1。当最小函数间隔为1时,其他样本点的函数间隔都应不小于1,此时引入了一个线性不等式约束条件
现在,我们的新最优化目标如下:
而上述最优化问题又等价于:
由此得到的最优化问题即为线性支持向量机的常见数学求解目标。
该问题为带有线性不等式约束的二次凸规划问题,可以通过调用已有的优化计算包,使用牛顿法、拟牛顿法等数值优化算法解决,其复杂度为
其中N为特征维度。为特征维度。 但是,最优化算法需要多次迭代调用优化计算包,会导致计算效率低,特别是当特征维度很大时。
目前,解决支持向量机的最优化问题一般会采用一种高效的算法–SMO算法。
SMO算法不是直接解决上述最优化问题,而是通过解决与其等价的对偶问题达到解决原问题的目的。
4对偶问题与SMO算法
考虑上节的原问题,使用拉格朗日法将其转换成无约束的最优化问题,拉格朗日函数L(w,b)可以写成:
现在,我们的问题为:
当满足Slater条件时,上述问题等价于:
首先,求解内部的最小化问题,将拉格朗日函数分别对w和b求偏导,并令偏导为零,有
将代入拉格朗日函数,则我们的最优化目标等价于
此时,我们的最优化问题等价于
上述问题即是原始问题等价的对偶问题,该问题也是一个二次凸规划问题。
与原问题不同的是,除了可以使用已有的优化包来求解外,研究者已经提出了一个更加高效的启发式算法:SMO算法。
SMO算法由微软研究院的John C. Platt在1998年提出,其基本思想是:如果所有变量的解都满足了最优化问题的KKT条件,那么这个最优化问题的解就得到了。
否则,选择两个变量,固定其它变量,针对这两个变量构造一个二次规划问题,该二次规划问题的解就更接近原始的二次规划问题的解。
具体地,SMO算法在初始化所有的变量
αi,i=1,2,…,Mαii12M之后,不断执行下述三个步骤,直到收敛:
1.根据一定的启发式策略,选取两个变量αi和αj
2. 将其他的变量当做常数,求解只有αi和αj两个变量的最优化问题
3.更新αi和αj,如果变量收敛,则停止;否则,重复步骤1。
一般而言,当数据量M不大时,SMO算法的计算效率高,应该选择对偶问题。
然而,当数据量很大时,对偶问题的复杂度依赖于MM,计算效率会下降。
此时,应该选择使用原问题来求解。
5处理非线性数据
支持向量机的独有特性还能使得其对于非线性的处理效果优于传统的线性分类器(如逻辑回归等)。
对于决策边界近似线性的数据,可以使用软间隔的方法,允许数据跨越决策面(允许误分类),但是对跨越决策面的数据加以惩罚。
对于复杂决策面的数据,则通过核函数的方法将低维数据映射到高维甚至无限维空间,从而能够处理低纬空间中线性不可分但在高维空间线性可分的数据。
软间隔SVM
首先是软间隔的方法。
软间隔方法的核心是我们不要求分类决策面完美地将数据分开,可以允许我们所找到的分类决策面犯一定程度的错误。
具体来说,软间隔方法对于每一个数据点,允许其以ξi跨越决策面,但是跨越决策面越多,则对其惩罚越大,通过这样的trade-off去寻找最优决策面。
此时,我们的最优化问题变为
同样地,使用拉格朗日乘子法来求解该问题,对应的拉格朗日函数为:
将上述结果代入拉格朗如函数,我们的原问题等价于下列对偶问题:
该问题同样可以使用SMO算法进行高效求解。
求得了α之后,可以通过wi=∑iαiyixi推导w。
跟简单的线性支持向量机不同的是,引入软间隔之后,支持向量点是满足条件0<αi<C或αi=C的数据点。
核函数方法
支持向量机模型的另一个特性是可以通过核方法来处理非线性可分的数据。
这也是将支持向量机的原问题转换成对偶问题所带来的一个优点。
核方法的基本原理是把原坐标系里线性不可分的数据使用核函数(Kernel Trick)投影到另一个空间,尽量使得数据在新的空间里线性可分。
核函数的英文叫Kernel Trick,非常形象地说明了其作用就像是“作弊”一样地去更高维的空间看低维空间数据,将其分开。
例如下图所示的两类样本数据点,如果仅从二维空间看过去,他们完全线性不可分,但通过合适的核函数Trick一下后,从更高维的三维空间看过去,就可以很容易得找到一个分类超平面将样本点分开。
因此特性,核函数的应用非常广泛, 一般来说它有以下特点或用途:
+ 核函数的引入避免了“维数灾难”,大大减小了计算量,可以有效处理高维输入。
+ 核函数的使用无需知道非线性变换函数的形式和参数。
+ 核函数的形式和参数的变化会隐式改变从输入空间到特征空间的映射,进而对特征空间的性质产生影响,最终改变各种核函数方法的性能。
+ 核函数方法可以和不同的算法相结合,形成多种不同的基于核函数技术的方法,且这两部分的设计可以单独进行,并可以为不同的应用选择不同的核函数和算法。
具体来说,要在支持向量机中使用核函数,只需要将对偶问题中目标函数中的内积项替换成相应核函数即可。 常用的核函数有多项式核函数、高斯核函数、Fisher核函数(也称为Sigmoid核函数)和拉普拉斯核函数等,其定义分别如下表所示:
那么,我们今天的数据嗨客机器学习系列科普就到此为止,下一期我们将介绍决策树。
本文由 普林科技(微信公众号:普林科技) 投稿 数据分析网 发表,并经数据分析网编辑。版权归作者所有,转载此文请与作者联系。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。