【机器学习】Support Vector Machine支持向量机算法
- SVM简介
- SVM原理
- 函数间隔
- 几何间隔
- 间隔最大化
- 求解过程
- KKT条件
SVM简介
支持向量机(Support Vector Machine,简称SVM)算法是一种分类算法,SVM算法的基本想法就是在特征空间中找到一个超平面将不同类别的样本分开,它的基本模型是指在特征空间中,使得不同类的样本的间隔最大的线性分类器。SVM算法是用来解决二分类问题的有监督学习算法,在引入了核方法后其也可以用来解决非线性问题。本文主要围绕线性可分支持向量机展开。 由于其在解决小样本、非线性及高维数据集中展现出许多特有的优势,因此其被广泛应用于各个领域。
SVM原理
,
,其中
表示样本特征,
表示样本标签。学习的目的就是在特征空间中可以找到一个分离超平面,能将样本进行分类,分离超平面对应于方程则为
,它是由法向量
和截距
决定,可以表示为
。
此时,存在无数个超平面可以将样本分类。一个好的分离超平面应该是有较好的“冗余度”,如上图所示,对于黑色超平面,假如新的样本点比较靠近超平面,那么对其影响就会很大,而对红色超平面的影响就较小,因为红色超平面相对居中,即间隔较大。因此,我们利用最大化间隔来求得最优的分离超平面。接下来本文将对间隔进行介绍。
函数间隔
表示正类,
表示负类,且训练集线性可分,中间的实线则表示使正负样本间隔正确划分且间隔最大的分离超平面。
假如需要预测,
,
三个点的类别,可以看到,点
距离分离超平面比较远,如果预测点
为负类样本,那么其预测准确度较高;点
距离分离超平面比较近,如果预测点
为负类样本,那么其预测准确度较低;点
的预测精确度则处于
与
之间。
我们可以认为,一个点的分类预测的准确度与该点到分类超平面的距离大小是相关的。在分离超平面确定的前提下,
可以相对地表示该点到超平面的距离大小,然后
的符号与标签
的符号是否一致可以表示该点的分类是否正确,如果两者符号一致,则表明分类正确,反之即表明分类错误。将两者相结合,
既可以表示分类的正确性还可以表示分类的准确度,这个就是函数间隔(functional margin)。
对于函数间隔,给定训练集和超平面
,样本点
所对应的函数间隔为:
而对于训练集
的函数间隔,这里取训练集
中全部样本的函数间隔的最小值,即:
然而在选择最优分离超平面时,仅靠函数间隔是不够的的,因为只要成比例的改变
和
,例如将它们改为
和
,该超平面没有改变,但是函数间隔却变成了原来的3倍。这样子的话,就不能保证最优分离超平面的唯一性。为了解决该状况,我们对分离超平面的法向量
加一定的约束限制,如规范化,令
,使得间隔是确定的,此时函数间隔就变成了几何间隔(geometric margin)。
几何间隔
以及其法向量
,那么一个点到该超平面的距离为:
其中
表示
的
范数,当然上式是在
时的距离。
因此对于给定的样本集和超平面
,定义超平面
关于样本点
的几何间隔为:
而对于训练集
的几何间隔,这里取训练集
中全部样本的几何间隔的最小值,即:
我们可以看到,函数间隔与几何间隔有以下的关系:
从以上关系可以看到,如果
,那么函数间隔与几何间隔相等。此时,如果
和
成比例扩大缩小,函数间隔也成比例扩大缩小,但是几何间隔不变。
间隔最大化
SVM的基本思路是找到可以正确划分训练集且几何间隔最大的分离超平面。间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的准确度对训练数据进行分类。通俗的讲,不仅将正负样本完成分类,而且对最难分类的样本(离超平面最近的点)也有足够大的准确度将它们分开。这样的超平面对未知的新样本也有很好的分类预测能力。
为了去找到这一个几何间隔最大的分离超平面,这个问题可以表示为一个约束优化问题:
其中
。上式目标函数说明我们希望最大化超平面
关于训练集的几何间隔,约束条件说明每个样本到超平面的几何间隔至少是
。
考虑到几何间隔与函数间隔的关系,可以改写为:
函数间隔
的取值并不影响最优化问题的解,因为假设将
和
成比例改变为
和
,此时函数间隔变为
。我们可以看到函数间隔的改变对我们的问题没有影响。因此,我们这里取
,并将
代入上式的最优化问题,同时,将最大化问题转化为最小化问题,可得到:
可以看到,这是一个凸二次规划问题。
下图所示为简单的间隔示意图,加粗的样本为支持向量,支持向量是距离分离超平面最近的样本。
求解过程
,即:
其中
。令
对
和
的偏导为零可得:
将上面两个式子代入到拉格朗日函数中,就可以将
中的
和
消去,就可以得到原问题的对偶问题:
即:
将目标函数由求最大转换成求最小,即:
根据上述对偶问题,假设通过SMO算法求解得到的
的解是
,那么就可以由
求得原始问题的
和
所对应的解。
对于
的求解,我们首先需要找出某个支持向量,即满足
对应的样本
,然后求得
为:
假设我们有
个支持向量,则对应我们求出
个
,理论上这些
都可以作为最终的结果, 但是我们一般采用一种更健壮的办法,即求出所有支持向量所对应的
,然后将其平均值作为最后的结果。
这样最终的分离超平面为:
最终的分类决策函数为:f(x)=sign(w∗⋅x+b∗)其中由于原始问题中含有不等式约束,因此上述的过程需要满足KKT条件。
KKT条件
本文将简单介绍KKT条件,考虑标准约束优化问题:定义上式的拉格朗日函数为:
其中
是对应
的Lagrange乘子,
是对应
的Lagrange乘子。KKT条件包括
具体KKT条件的原理和细节这里就不再赘述。