【机器学习】Support Vector Machine支持向量机算法

  • SVM简介
  • SVM原理
  • 函数间隔
  • 几何间隔
  • 间隔最大化
  • 求解过程
  • KKT条件

SVM简介

     支持向量机(Support Vector Machine,简称SVM)算法是一种分类算法,SVM算法的基本想法就是在特征空间中找到一个超平面将不同类别的样本分开,它的基本模型是指在特征空间中,使得不同类的样本的间隔最大的线性分类器。SVM算法是用来解决二分类问题的有监督学习算法,在引入了核方法后其也可以用来解决非线性问题。本文主要围绕线性可分支持向量机展开。 由于其在解决小样本、非线性及高维数据集中展现出许多特有的优势,因此其被广泛应用于各个领域。

SVM原理

支持向量机的评价指标 支持向量机的算法_支持向量机支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_02,其中支持向量机的评价指标 支持向量机的算法_ide_03表示样本特征,支持向量机的评价指标 支持向量机的算法_机器学习_04表示样本标签。学习的目的就是在特征空间中可以找到一个分离超平面,能将样本进行分类,分离超平面对应于方程则为支持向量机的评价指标 支持向量机的算法_支持向量机_05,它是由法向量支持向量机的评价指标 支持向量机的算法_算法_06和截距支持向量机的评价指标 支持向量机的算法_算法_07决定,可以表示为支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_08

支持向量机的评价指标 支持向量机的算法_算法_09


     此时,存在无数个超平面可以将样本分类。一个好的分离超平面应该是有较好的“冗余度”,如上图所示,对于黑色超平面,假如新的样本点比较靠近超平面,那么对其影响就会很大,而对红色超平面的影响就较小,因为红色超平面相对居中,即间隔较大。因此,我们利用最大化间隔来求得最优的分离超平面。接下来本文将对间隔进行介绍。

函数间隔

支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_10表示正类,支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_11表示负类,且训练集线性可分,中间的实线则表示使正负样本间隔正确划分且间隔最大的分离超平面。

支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_12


     假如需要预测支持向量机的评价指标 支持向量机的算法_机器学习_13支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_14支持向量机的评价指标 支持向量机的算法_算法_15三个点的类别,可以看到,点支持向量机的评价指标 支持向量机的算法_机器学习_13距离分离超平面比较远,如果预测点支持向量机的评价指标 支持向量机的算法_机器学习_13为负类样本,那么其预测准确度较高;点支持向量机的评价指标 支持向量机的算法_算法_15距离分离超平面比较近,如果预测点支持向量机的评价指标 支持向量机的算法_算法_15为负类样本,那么其预测准确度较低;点支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_14的预测精确度则处于支持向量机的评价指标 支持向量机的算法_机器学习_13支持向量机的评价指标 支持向量机的算法_算法_15之间。

     我们可以认为,一个点的分类预测的准确度与该点到分类超平面的距离大小是相关的。在分离超平面支持向量机的评价指标 支持向量机的算法_支持向量机_05确定的前提下,支持向量机的评价指标 支持向量机的算法_ide_24可以相对地表示该点到超平面的距离大小,然后支持向量机的评价指标 支持向量机的算法_ide_25的符号与标签支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_26的符号是否一致可以表示该点的分类是否正确,如果两者符号一致,则表明分类正确,反之即表明分类错误。将两者相结合,支持向量机的评价指标 支持向量机的算法_机器学习_27既可以表示分类的正确性还可以表示分类的准确度,这个就是函数间隔(functional margin)

     对于函数间隔,给定训练集支持向量机的评价指标 支持向量机的算法_支持向量机_28和超平面支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_08,样本点支持向量机的评价指标 支持向量机的算法_机器学习_30所对应的函数间隔为:

支持向量机的评价指标 支持向量机的算法_ide_31而对于训练集支持向量机的评价指标 支持向量机的算法_支持向量机_28的函数间隔,这里取训练集支持向量机的评价指标 支持向量机的算法_支持向量机_28中全部样本的函数间隔的最小值,即:

支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_34     然而在选择最优分离超平面时,仅靠函数间隔是不够的的,因为只要成比例的改变支持向量机的评价指标 支持向量机的算法_算法_06支持向量机的评价指标 支持向量机的算法_算法_07,例如将它们改为支持向量机的评价指标 支持向量机的算法_ide_37支持向量机的评价指标 支持向量机的算法_支持向量机_38,该超平面没有改变,但是函数间隔却变成了原来的3倍。这样子的话,就不能保证最优分离超平面的唯一性。为了解决该状况,我们对分离超平面的法向量支持向量机的评价指标 支持向量机的算法_算法_06加一定的约束限制,如规范化,令支持向量机的评价指标 支持向量机的算法_算法_40,使得间隔是确定的,此时函数间隔就变成了几何间隔(geometric margin)

几何间隔

支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_08以及其法向量支持向量机的评价指标 支持向量机的算法_算法_06,那么一个点到该超平面的距离为:
支持向量机的评价指标 支持向量机的算法_ide_43其中支持向量机的评价指标 支持向量机的算法_支持向量机_44表示支持向量机的评价指标 支持向量机的算法_算法_06支持向量机的评价指标 支持向量机的算法_算法_46范数,当然上式是在支持向量机的评价指标 支持向量机的算法_支持向量机_47时的距离。
     因此对于给定的样本集支持向量机的评价指标 支持向量机的算法_支持向量机_28和超平面支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_08,定义超平面支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_08关于样本点支持向量机的评价指标 支持向量机的算法_算法_51的几何间隔为:
支持向量机的评价指标 支持向量机的算法_ide_52而对于训练集支持向量机的评价指标 支持向量机的算法_支持向量机_28的几何间隔,这里取训练集支持向量机的评价指标 支持向量机的算法_支持向量机_28中全部样本的几何间隔的最小值,即:
支持向量机的评价指标 支持向量机的算法_机器学习_55     我们可以看到,函数间隔与几何间隔有以下的关系:
支持向量机的评价指标 支持向量机的算法_ide_56支持向量机的评价指标 支持向量机的算法_支持向量机_57从以上关系可以看到,如果支持向量机的评价指标 支持向量机的算法_算法_40,那么函数间隔与几何间隔相等。此时,如果支持向量机的评价指标 支持向量机的算法_算法_06支持向量机的评价指标 支持向量机的算法_算法_07成比例扩大缩小,函数间隔也成比例扩大缩小,但是几何间隔不变。

间隔最大化

     SVM的基本思路是找到可以正确划分训练集且几何间隔最大的分离超平面。间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的准确度对训练数据进行分类。通俗的讲,不仅将正负样本完成分类,而且对最难分类的样本(离超平面最近的点)也有足够大的准确度将它们分开。这样的超平面对未知的新样本也有很好的分类预测能力。

     为了去找到这一个几何间隔最大的分离超平面,这个问题可以表示为一个约束优化问题:

支持向量机的评价指标 支持向量机的算法_机器学习_61其中支持向量机的评价指标 支持向量机的算法_支持向量机_62。上式目标函数说明我们希望最大化超平面支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_08关于训练集的几何间隔,约束条件说明每个样本到超平面的几何间隔至少是支持向量机的评价指标 支持向量机的算法_算法_64

     考虑到几何间隔与函数间隔的关系,可以改写为:

支持向量机的评价指标 支持向量机的算法_算法_65     函数间隔支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_66的取值并不影响最优化问题的解,因为假设将支持向量机的评价指标 支持向量机的算法_算法_06支持向量机的评价指标 支持向量机的算法_算法_07成比例改变为支持向量机的评价指标 支持向量机的算法_ide_69支持向量机的评价指标 支持向量机的算法_机器学习_70,此时函数间隔变为支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_71。我们可以看到函数间隔的改变对我们的问题没有影响。因此,我们这里取支持向量机的评价指标 支持向量机的算法_支持向量机_72,并将支持向量机的评价指标 支持向量机的算法_支持向量机_72代入上式的最优化问题,同时,将最大化问题转化为最小化问题,可得到:

支持向量机的评价指标 支持向量机的算法_ide_74可以看到,这是一个凸二次规划问题。

     下图所示为简单的间隔示意图,加粗的样本为支持向量,支持向量是距离分离超平面最近的样本。

支持向量机的评价指标 支持向量机的算法_支持向量机_75


求解过程

支持向量机的评价指标 支持向量机的算法_支持向量机_76,即:
支持向量机的评价指标 支持向量机的算法_算法_77其中支持向量机的评价指标 支持向量机的算法_算法_78。令支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_79支持向量机的评价指标 支持向量机的算法_算法_80支持向量机的评价指标 支持向量机的算法_算法_07的偏导为零可得:
支持向量机的评价指标 支持向量机的算法_ide_82将上面两个式子代入到拉格朗日函数中,就可以将支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_79中的支持向量机的评价指标 支持向量机的算法_算法_84支持向量机的评价指标 支持向量机的算法_算法_07消去,就可以得到原问题的对偶问题:
支持向量机的评价指标 支持向量机的算法_机器学习_86即:
支持向量机的评价指标 支持向量机的算法_机器学习_87     将目标函数由求最大转换成求最小,即:
支持向量机的评价指标 支持向量机的算法_算法_88     根据上述对偶问题,假设通过SMO算法求解得到的支持向量机的评价指标 支持向量机的算法_ide_89的解是支持向量机的评价指标 支持向量机的算法_ide_90,那么就可以由支持向量机的评价指标 支持向量机的算法_机器学习_91求得原始问题的支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_92支持向量机的评价指标 支持向量机的算法_算法_07所对应的解。
支持向量机的评价指标 支持向量机的算法_支持向量机_94对于支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_95的求解,我们首先需要找出某个支持向量,即满足支持向量机的评价指标 支持向量机的算法_ide_96对应的样本支持向量机的评价指标 支持向量机的算法_机器学习_97,然后求得支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_95为:
支持向量机的评价指标 支持向量机的算法_机器学习_99     假设我们有支持向量机的评价指标 支持向量机的算法_ide_100个支持向量,则对应我们求出支持向量机的评价指标 支持向量机的算法_ide_100支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_95,理论上这些支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_95都可以作为最终的结果, 但是我们一般采用一种更健壮的办法,即求出所有支持向量所对应的支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_95,然后将其平均值作为最后的结果。
支持向量机的评价指标 支持向量机的算法_支持向量机的评价指标_105     这样最终的分离超平面为:
支持向量机的评价指标 支持向量机的算法_算法_106     最终的分类决策函数为:f(x)=sign(w∗⋅x+b∗)其中由于原始问题中含有不等式约束,因此上述的过程需要满足KKT条件。

KKT条件

     本文将简单介绍KKT条件,考虑标准约束优化问题:
支持向量机的评价指标 支持向量机的算法_算法_107定义上式的拉格朗日函数为:
支持向量机的评价指标 支持向量机的算法_算法_108其中支持向量机的评价指标 支持向量机的算法_算法_109是对应支持向量机的评价指标 支持向量机的算法_ide_110的Lagrange乘子,支持向量机的评价指标 支持向量机的算法_支持向量机_111是对应支持向量机的评价指标 支持向量机的算法_支持向量机_112的Lagrange乘子。KKT条件包括
支持向量机的评价指标 支持向量机的算法_算法_113具体KKT条件的原理和细节这里就不再赘述。