SVM中的支持向量是指什么
在开始推导之前我们先了解一下支持向量机中的支持向量是指什么。
观察上面一张图,哪些点对于分割线起了决定性作用?
在特别远的区域,不管有多少样本点,对于分割线的位置,也是没有作用的,分割线是图中三个正好落在margin边界上的点决定的。这几个关键点支撑起了一个分割超平面,他们就是SVM中的支持向量。
下面我们开始一步步推导SVM。
SVM的优化目标
现在我们开始讲解SVM算法的优化目标
假设有一堆样本点
所以SVM模型的目标函数,就是这样一个超平面,他的公式可以表达为:
这里的
如果能够正确分类所有样本点的超平面存在,我们可以去预测样本点的,而对应的决策函数,也就是用于预测的函数。就是
sign函数是符号函数,它的形式是:
这里提到的SVM目标函数和决策函数,组合起来就是我们说的SVM算法啦。
根据svm的设定,当样本点分类正确的时候,有:
根据上面两个公式可以推出:
在超平面确认存在的情况下,一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度。
再次重申下这里的
函数间隔可以表示分类预测的正确性和确信度,但是在选择超平面的时候,如果我只是将
现在,考虑一个分类问题,像下图中,有很多条直线可以将数据分割开,那么用哪一条呢?
线性可分离的超平面有无穷多个,但是margin最大的超平面是唯一的。为此我们提出支持向量机的一个核心思想:我们要找到超平面(w和b),使得离该超平面最近的样本点能够最远。也就是,我们要找到能够将两类数据正确划分且间隔最大的超平面。这样的超平面,不仅仅可以将正负样本点分开,而且对于最难分的样本点(也就是离超平面最近的点),也能够有足够大的确信度将它们开。我们定义,超平面
而我们的求解目标,是求得一个最大间隔分离超平面。那么我们的优化问题,即是:
也就是,我们要使得离超平面最近的点到超平面的距离越远越好
SVM损失函数求解
继上文,我们将目标函数(即优化目标)的公式写出来,如下式:
这个损失函数即是我们在上文中提到的,先求离超平面最近的样本点,再求使得该样本点离超平面的距离最远的参数w和b。
前面我们提到了在分类正确的情况下,
在最优化问题中,求解最大值是比较困难的,将其转化为求最小值的问题更好。
现在的目标函数是
我们可以将其转换为求最小值,即:
注意,
好了,怎么求解这个带约束条件的目标函数呢?这里需要用到拉格朗日乘子法了:
拉格朗日乘子法
拉格朗日乘子法的具体原理这里不做推导了,它是用来求解带约束条件的极值的一种方法。现在只说一下它的形式,一般情况下,对带不等式的最优化问题求解如下式:
这个g(x)就是约束条件。那么我们现在把我们的目标函数改写为符合拉格朗日乘子法的样式:
那么转换为拉格朗日乘子法后,求解公式变为:
多了一个
求解目标函数
通过拉格朗日算子的转化,我们现在可以开始了求
我们将偏导后求得的
得到:
现在我们完成了第一步求解
跟前面一样,对于凸函数来说,求最大值是比较困难的,我们取相反数它转化成求最小值:
那么怎么求解呢?这里我们引用李航老师《统计学习方法》P103中的例7.1来说明:
已知一个如图所示的训练数据集,其正例点是
在这道题中, 我们将上面的公式(3)及其约束条件代入,会得到:
根据上式可得
对于上面这个式子,我们要求的是一个最小值。分别对
但这个求解是不满足拉格朗日乘子法的约束条件
现在我们已经得到了所以
而
那么最大分隔超平面的公式就可以写出来了:
我们先再再回过来看这张图,我们前面得到
在图中我们可以发现,
SVM算法的正式定义
经过前面巨长无比的推导,我们现在完完整整地把SVM算法列出来,供参考(引用李航老师《统计机器学习》p100)。
输入:数据集
输出:最大间隔分离超平面和分类决策函数
(1)构造并求解待有约束条件的优化问题:
求得最优解
(2) 计算
选择
(2)由此得到分离超平面
以及分类决策函数
其中
支持向量
考虑原始优化问题
我们将位于边界上的点称为支持向量,即满足以下条件的点:
也就是:
软间隔支持向量机
支持向量机的基本概念我们说完了,现在SVM中的容错问题。看上图,一个离群点会导致分隔线大大偏离我们肯定不希望这样的情况发生,为此,有了软间隔支持向量机,引入了松弛因子。
在前文中,我们定义了SVM中的
这样我们的要求降低了,不需要margin都大于等于1,我们可以大于等于
容错性。此时可以发现, SVM的损失函数其实就是L2正则化与Hinge loss的和。由于松弛因子的加入,优化目标改变了,它带有训练误差,但是鲁棒性变好了。最终的优化目标包含了两层含义,使
那么得到了新的目标函数后,化解依然是依照拉格朗日乘子法来推导,这里不再详述。现实中训练数据集往往hi线性不可分的,软间隔支持向量机会有更广的适应性。
核函数的理解
最后来说一下核函数,也就是前面一直没管的
实际操作中核函数也是一个超参数,需要根据具体问题去调节。用的比较多的是高斯核函数:
参考文献
支持向量机(SVM)里的支持向量是什么意思-SofaSofa
专家坐堂:机器学习中对核函数的理解
李航《统计学习方法》