文章目录
SVM(Support Vector Machine, 支持向量机)是众多监督式学习方法中十分出色的一种,几乎所有的讲述经典机器学习方法的教材都会介绍。
SVM介绍
支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类(binary classification)的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。
SVM使用铰链损失函数(hinge loss)计算经验风险(empirical risk)并在求解系统中加入了正则化项以优化结构风险(structural risk),是一个具有稀疏性和稳健性的分类器。SVM可以通过核方法(kernel method)进行非线性分类,是常见的核学习(kernel learning)方法之一 。
SVM被提出于1964年,在二十世纪90年代后得到快速发展并衍生出一系列改进和扩展算法,在人像识别(face recognition)、文本分类(text categorization)等模式识别(pattern recognition)问题中有得到应用。
SVM理论
线性可分性(linear separability)
在分类问题中给定输入数据和学习目标: ,其中输入数据的每个样本都包含多个特征并由此构成特征空间(feature space): ,而学习目标为二元变量 表示负类(negative class)和正类(positive class)。
若输入数据所在的特征空间存在作为决策边界(decision boundary)的超平面将学习目标按正类和负类分开,并使任意样本的点到平面距离大于等于1 [2] :
则称该分类问题具有线性可分性,参数 分别为超平面的法向量和截距。
满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
所有在上间隔边界上方的样本属于正类,在下间隔边界下方的样本属于负类。两个间隔边界的距离 被定义为边距(margin),位于间隔边界上的正类和负类样本为支持向量(support vector)。
0-1损失函数和其代理损失,红实线为0-1损失,黑实线为铰链损失。
0-1损失函数和其代理损失,红实线为0-1损失,黑实线为铰链损失。 [2]
损失函数(loss function)
在一个分类问题不具有线性可分性时,使用超平面作为决策边界会带来分类损失,即部分支持向量不再位于间隔边界上,而是进入了间隔边界内部,或落入决策边界的错误一侧。损失函数可以对分类损失进行量化,其按数学意义可以得到的形式是0-1损失函数:
0-1损失函数不是连续函数,不利于优化问题的求解,因此通常的选择是构造代理损失(surrogate loss)。可用的选择包括铰链损失函数(hinge loss)、logistic损失函数(logistic loss)、和指数损失函数(exponential loss),其中SVM使用的是铰链损失函数 [2] :
对替代损失的相合性研究表明,当代理损失是连续凸函数,并在任意取值下是0-1损失函数的上界,则求解代理损失最小化所得结果也是0-1损失最小化的解 [2] [15] 。铰链损失函数满足上述条件。
经验风险(empirical risk)与结构风险(structural risk)
参见:统计学习理论
按统计学习理论,分类器在经过学习并应用于新数据时会产生风险,风险的类型可分为经验风险和结构风险 :
式中 表示分类器,经验风险由损失函数定义,描述了分类器所给出的分类结果的准确程度;结构风险由分类器参数矩阵的范数定义,描述了分类器自身的复杂程度以及稳定程度,复杂的分类器容易产生过拟合,因此是不稳定的。若一个分类器通过最小化经验风险和结构风险的线性组合以确定其模型参数:
则对该分类器的求解是一个正则化问题,常数 是正则化系数。当 时,该式被称为L2正则化或Tikhonov正则化(Tikhonov regularization) [16] 。SVM的结构风险按 表示,在线性可分问题下,硬边界SVM的经验风险可以归0,因此其是一个完全最小化结构风险的分类器;在线性不可分问题中,软边界SVM的经验风险不可归0,因此其是一个L2正则化分类器,最小化结构风险和经验风险的线性组合。
核方法
一些线性不可分的问题可能是非线性可分的,即特征空间存在超曲面(hypersurface)将正类和负类分开。使用非线性函数可以将非线性可分问题从原始的特征空间映射至更高维的希尔伯特空间(Hilbert space) ,从而转化为线性可分问题,此时作为决策边界的超平面表示如下 [2] [3] :
式中 为映射函数。由于映射函数具有复杂的形式,难以计算其内积,因此可使用核方法(kernel method),即定义映射函数的内积为核函数(kernel function): 以回避内积的显式计算 [2] [3] 。
Mercer定理(Mercer’s theorem)
核函数的选择需要一定条件,函数 是核函数的充要条件是,对输入空间的任意向量: ,其核矩阵(kernel matrix),即如下形式的格拉姆矩阵(Gram matrix):
是半正定矩阵。上述结论被称为Mercer定理 [3] [1] 。定理的证明从略,结论性地,作为充分条件:特征空间内两个函数的内积是一个二元函数,在其核矩阵为半正定矩阵时,该二元函数具有可再生性: ,因此其内积空间是一个赋范向量空间(normed vector space),可以完备化得到希尔伯特空间 ,即再生核希尔伯特空间(Reproducing Kernel Hilbert Space, RKHS)。作为必要条件,对核函数构造核矩阵后易知: [3] 。
常见的核函数
在构造核函数后,验证其对输入空间内的任意格拉姆矩阵为半正定矩阵是困难的,因此通常的选择是使用现成的核函数 [3] 。以下给出一些核函数的例子,其中未做说明的参数均是该核函数的超参数(hyper-parameter) [2] :
SVM中的常见核函数
当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。核函数的线性组合和笛卡尔积也是核函数,此外对特征空间内的函数 , 也是核函数。
核函数与松弛变量
当我们在SVM中处理线性不可分的数据时,核函数可以对数据进行映射,从而使得原问题在某种度量下具有更为可分的相似度,而通过引入松弛变量,我们可以放弃一些离群点的精确分类来使分类平面不受太大的影响。将这两种技术与SVM结合起来,正是SVM分类器简洁而强大的原因之一。
问题描述
1.一个使用高斯核
训练的SVM(Support Vector Machine)中,试证明若给定训练集中不存在两个点在同一位置,则存在一组参数{α1, … αm, b}以及参数γ使得该SVM的训练误差为0。
2.若我们使用问题1中得到的参数γ训练一个不加入松弛变量的SVM,是否能保证得到的SVM,仍有训练误差为0的结果,试说明你的观点。
3.若我们使用SMO(Sequential Minimal Optimization)算法来训练一个带有松弛变量的SVM,并且惩罚因子C为任意事先不知道的常数,我们是否仍能得到训练误差为0的结果,试说明你的观点。
先验知识:SVM训练过程、核函数、SMO算法
解答与分析
1.根据SVM的原理,我们可以将SVM的预测公式可写为下式:
其中{(x(1), y(1)), …, (x(m), y(m))}为训练样本,而{α1, …, αm, b}以及高斯核参数γ则为训练样本的参数,根据题意我们可以得到对于任意的i≠j 我们有‖x(i)﹣x(j)‖≥ε,我们可以直接对任意i,取αi=1,b=0,则有
将任意x(j)代入则有
注意到y(i)∈{1, ﹣1}
由题意知‖x(i)﹣x(j)‖≥ε,取γ=ε/㏒1/2m
故有
可知对于任意x(j),预测结果与样本的距离不超过1,则训练误差为0。
2.2.若我们使用问题1中得到的参数γ训练一个不加入松弛变量的SVM,是否能保证得到的SVM,仍有训练误差为0的结果,试说明你的观点。
我们能得到训练误差为0的分类器,我们仅需要证明解存在即可。考虑SVM推导中的限制y(i)(wTx(i)﹢b)≥1,与上一问相同,我们取b=0,那么则有y(i)·f(x(j))>0,由上问,我们有
所以一个可行解在将所有αi取到足够大时(这里改变αi的取值并不会影响上一问的结论),我们可得到y(i)(wTx(i)﹢b)≥1,则得到一个可行解,那么最优解的训练误差仍为0。
- 若我们使用SMO(Sequential Minimal Optimization)算法来训练一个带有松弛变量的SVM,并且惩罚因子C为任意事先不知道的常数,我们是否仍能得到训练误差为0的结果,试说明你的观点。
我们的分类器并不一定能得到0训练误差,因为我们的优化目标改变了,并不再是训练误差最小,考虑我们优化的结果实际上包含两项
可知当我们的参数C选取较小的值时,我们就可以得出后一正则项将占据优化的较大比重,那么一个带有训练误差,但是参数较小的点将成为更优的结果,例如当C取0时,w也可取0即可达到优化目标,但是显然这样我们的训练误差不一定能达到0。
SVM算法步骤
问题
在空间上线性可分的两类点,分别向SVM分类的超平面上做投影,这些点在超平面上的投影仍然是线性可分的吗?能否证明你的观点?
背景知识:数学基础,机器学习基础,SVM理论推导
解答与分析
对于任意线性可分的两类点,他们在SVM分类的超平面上的投影都是线性不可分的。
首先分析题意,线性可分的两类点,即指通过一个超平面可以将两类点完全分开,如左图所示,假设蓝色的超平面(对于二维空间来说,一维的线即为超平面)为SVM算法计算得出的分类平面,那么红绿两类的点就被它完全分开。我们的问题是将红绿两色的点,向蓝色平面上做如右图所示投影,可得在超平面上红绿两色的点,问题即为投影后的点仍然是线性可分的吗?
这个问题初看起来第一感觉是并不是线性可分的,反例也很好构造,设想只有两个点每个点各属于一类的情况,那么SVM的分类超平面就在两点连线的中垂线上,那么两点关于超平面的投影落在了平面上的同一点自然无法线性可分。实际上对于任意线性可分的两组点,它们在SVM分类的超平面上的投影都是线性不可分的,那么这个结论怎么证明呢?
我们在下面的叙述中以二维情况进行讨论,对于高维空间的推广也是成立的。先考虑SVM分类中只有支持向量的情况,使用反证法,假设存在一个SVM分类结果的超平面,所有支持向量在这个超平面上的投影依然线性可分。那么这个超平面的分类结果如下图所示,使用初等几何知识不难发现图中A,B两点连线的中垂线所组成的超平面蓝色虚线是相较于蓝色实线超平面更优的解,且两组点在新的超平面下线性不可分。而我们之前假设蓝色实线超平面为最有的解,由此推出矛盾。
但我们的证明目前还有不严谨之处,即我们假设了仅有支持向量的情况,会不会在超平面的变换过程支持向量发生了改变,原先的非支持向量和支持向量发生了转化呢?下面我们就来证明SVM的分类结果仅依赖于支持向量。考虑SVM推导中的KKT条件:
结合3和4两个条件不难发现gi()<0时,必有i=0,将这一结果与拉格朗日对偶优化问题的公式相比较:
可以看到,除支持向量外,其他非支持向量的系数均为0,所以SVM的分类结果与仅使用支持向量的分类结果一致,这也是SVM有极高的运行效率的关键之一。将这一结论代回我们的假设中,可知去掉非支持向量并不影响SVM的分类结果,故此证明成立。
实际上,该问题也可以通过凸优化理论中的超平面分离定理(Separating Hyperplane Theorem)更加轻巧地解决。该定理是在凸优化理论中极为重要,定理的定义是:对于不相交的两个凸集,存在一个超平面,将两个凸集分离,并且该超平面为两个凸集上最短距离两点连线的中垂线。
我们可以考虑线性可分的这两类点的凸包,不难发现,SVM所求得的超平面为两凸包上最短距离两点连线的中垂线,由超平面分离定理可得,其为定理中两类点的凸包的超平面。而两个凸包中距离最短的两点只有两种可能,为样本点或在两个样本点的连线上。分情况两边均为样本点,两边均在样本点的连线上,一边为样本点一边在样本点的连线上三种情况简单讨论即可发现,无论哪种情况两类点的投影均是线性不可分的。
对于面试者来说,能通过对SVM的推导给出前一种结论即可,如果熟悉凸优化理论,也可以根据后一种思路来作答。
其他扩展问题
对于一个使用高斯核训练的SVM中,若给定训练集中不存在两个点在同一位置,则存在一组参数以及参数gamma使得该SVM的训练误差为0.
训练误差为0的SVM分类器一定存在。
加入松弛变量的SVM(SMO算法)训练的线性分类器不一定能得到训练误差为0 的模型。因为我们的优化目标改变了,并不再是使训练误差最小。
其他参考
SVM的公式推导过程:
http://cs229.stanford.edu/notes/cs229-notes3.pdf
对偶问题与KKT条件:
http://stanford.edu/class/ee364a/lectures/duality.pdf
超平面分离定理:
http://www.princeton.edu/~amirali/Public/Teaching/ORF523/S16/ORF523_S16_Lec5_gh.pdf
来源:https://blog.csdn.net/xiao_lxl/article/details/97148251