svm 高斯核为什么惩罚项越大_一文搞懂支持向量机(SVM)算法

本文深入探讨了支持向量机(SVM)中的核心概念——支持向量,以及如何通过优化目标函数和拉格朗日乘子法找到最大间隔超平面。支持向量是指决定分类边界的位置的样本点,而SVM的目标是找到能够最大化这些点到超平面间隔的分类器。在解决线性可分问题时,引入了软间隔和松弛因子C,允许一定程度的误分类,增强了模型的鲁棒性。此外,核函数在处理非线性问题时起着关键作用,通过映射将数据转换到更高维度实现线性可分。
摘要由CSDN通过智能技术生成

b2d0954a3376cb33fc6db2990d078ff3.png

SVM中的支持向量是指什么

429fa0011cdc1c45d6a1fad0d1b2cb8e.png

在开始推导之前我们先了解一下支持向量机中的支持向量是指什么。

观察上面一张图,哪些点对于分割线起了决定性作用?

在特别远的区域,不管有多少样本点,对于分割线的位置,也是没有作用的,分割线是图中三个正好落在margin边界上的点决定的。这几个关键点支撑起了一个分割超平面,他们就是SVM中的支持向量。

下面我们开始一步步推导SVM。

SVM的优化目标

现在我们开始讲解SVM算法的优化目标

假设有一堆样本点

,在SVM中,二分类问题我们不再用0和1来表示,而是用+1 和 -1 来区分类别(这样会更严格),假设超平面
可以将训练样本正确分类,即对于任意样本,如果
, 则称
为正例;如果
,则称
为负例。 学习的目标是在特征空间中找到一个分离超平面,能够将样本点分到不同的空间。

所以SVM模型的目标函数,就是这样一个超平面,他的公式可以表达为:

这里的

是核函数,相当于对x进行了一个维度变换。在这里我们先不去细究这一块,先把
直接看作是
本身。

如果能够正确分类所有样本点的超平面存在,我们可以去预测样本点的,而对应的决策函数,也就是用于预测的函数。就是

sign函数是符号函数,它的形式是:

这里提到的SVM目标函数和决策函数,组合起来就是我们说的SVM算法啦。

根据svm的设定,当样本点分类正确的时候,有:

根据上面两个公式可以推出:

在超平面确认存在的情况下,一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度。

能够相对地表示点x距离超平面的远近,而
的符号与类标记y的符号是否一致代表着分类是否正确(即上面推出来的结论,分类正确时,
)。所以可以使用
来表示分类的正确以及确信度(即样本离分类超平面的距离)。因为这个距离的存在,我们有了函数间隔(margin)的概念。现在我们严肃地把这个定义(其实是李航老师写出来的)写出来,
对于给定的数据集和超平面(用w,b表示),定义超平面(w,b)到样本点
的函数间隔(margin)为:

再次重申下这里的

是对x做的变换,这里先把它当做x本身就好。

函数间隔可以表示分类预测的正确性和确信度,但是在选择超平面的时候,如果我只是将

变为2
,其实超平面本身没有改变,而margin却变成了原来的两倍,为了防止这种情况,我们需要对
做一个归一化处理,margin相应变为:

现在,考虑一个分类问题,像下图中,有很多条直线可以将数据分割开,那么用哪一条呢?

e440a5a655edb493de70573b03d3833c.png

线性可分离的超平面有无穷多个,但是margin最大的超平面是唯一的。为此我们提出支持向量机的一个核心思想:我们要找到超平面(w和b),使得离该超平面最近的样本点能够最远。也就是,我们要找到能够将两类数据正确划分且间隔最大的超平面。这样的超平面,不仅仅可以将正负样本点分开,而且对于最难分的样本点(也就是离超平面最近的点),也能够有足够大的确信度将它们开。我们定义,超平面

关于数据集的间隔,为超平面
关于数据集中所有样本点
的最小值,即:

而我们的求解目标,是求得一个最大间隔分离超平面。那么我们的优化问题,即是:

也就是,我们要使得离超平面最近的点到超平面的距离越远越好

SVM损失函数求解

继上文,我们将目标函数(即优化目标)的公式写出来,如下式:

这个损失函数即是我们在上文中提到的,先求离超平面最近的样本点,再求使得该样本点离超平面的距离最远的参数w和b。

前面我们提到了在分类正确的情况下,

(因为
),既然存在
,那么通过缩放的方式,必然可以使得
, 我们直接设定
, 李航老师的《统计机器学习》中有提到,这个
具体取什么值,并不影响最优化问题的解。那么我们实际要优化的目标其实是

在最优化问题中,求解最大值是比较困难的,将其转化为求最小值的问题更好。

现在的目标函数是

我们可以将其转换为求最小值,即:

注意,

这个条件是不可以省略的。支持向量机的原则是,首先要把不同类别的样本点分开,然后再去优化它们间的距离。而
这个条件代表的就是把样本分开的能力。

好了,怎么求解这个带约束条件的目标函数呢?这里需要用到拉格朗日乘子法了:

拉格朗日乘子法

拉格朗日乘子法的具体原理这里不做推导了,它是用来求解带约束条件的极值的一种方法。现在只说一下它的形式,一般情况下,对带不等式的最优化问题求解如下式:

这个g(x)就是约束条件。那么我们现在把我们的目标函数改写为符合拉格朗日乘子法的样式:

那么转换为拉格朗日乘子法后,求解公式变为:

多了一个

的常数,
是拉格朗日乘子法自带的一个约束条件。然后求解
,但是这个不太好求,特别是极大值。通常拉格朗日乘子法可以通过求解对偶问题得到原始问题的最优解,而对偶问题往往更容易求解。我们可以转化为
,这个对偶问题的解是包含在原始问题的解的里面的。

求解目标函数

通过拉格朗日算子的转化,我们现在可以开始了求

。那么第一步:我们要求,什么样的
可以使得
最小呢?这个听起来很简单,我们求偏导
就好了。这里求导的过程不具体写了,求出来的结果是:

我们将偏导后求得的

和代入我们的目标函数

得到:

现在我们完成了第一步求解

。可以发现现在这个式子已经没有了
这两项。现在,回到我们的求解目标
我们已经求出来了,现在我们要求什么样的
可以使得
最大呢?那么现在的求解目标变为:

跟前面一样,对于凸函数来说,求最大值是比较困难的,我们取相反数它转化成求最小值:

那么怎么求解呢?这里我们引用李航老师《统计学习方法》P103中的例7.1来说明:

已知一个如图所示的训练数据集,其正例点是

,负例点是
,试求最大间隔分离超平面

4b5213037c0f3cfb1f7dc8df3491caa8.png

在这道题中, 我们将上面的公式(3)及其约束条件代入,会得到:

根据上式可得

,我们把它代入,得到

对于上面这个式子,我们要求的是一个最小值。分别对

进行偏导,可以得到

但这个求解是不满足拉格朗日乘子法的约束条件

的。所以这个点是不可取的。这也是我们前面反复提到的,要首先能够把不同的样本点分开,其次再考虑间隔的问题,所以先决条件是必须要满足的。那么最终的解应该是边界上的点。我们分别令
为0,得出对应的
,最终我们得到的解是:

现在我们已经得到了所以

的值,那么我们可以求解
了。之前我们得到了:

这些都已经知道了,我们可以把
求出来:

那么最大分隔超平面的公式就可以写出来了:

我们先再再回过来看这张图,我们前面得到

在图中我们可以发现,

是0, 可以发现
在整个推导过程中其实是没有用的。所以其实我们常说的支持向量,就是说要找到哪些向量是来支持超平面的。那么这些向量正是那些正好在margin的边界上(本例中就是指
)的这些点。超平面就是由
算出来的。到这里,又回到了本文一开始说的支持向量的定义。

5533f2137667f3630f4b33fc0546bcb3.png

SVM算法的正式定义

经过前面巨长无比的推导,我们现在完完整整地把SVM算法列出来,供参考(引用李航老师《统计机器学习》p100)。

输入:数据集

,

输出:最大间隔分离超平面和分类决策函数

(1)构造并求解待有约束条件的优化问题:

求得最优解

(2) 计算

选择

的一个正分量
,计算:

(2)由此得到分离超平面

以及分类决策函数

其中

为x的核函数,相当于对x做了一个纬度变换。

的值只依赖于训练数据中对应
的样本点,其他的点对
没有影响,我们将训练数据中对应于
的点成为支持向量。

支持向量

考虑原始优化问题

我们将位于边界上的点称为支持向量,即满足以下条件的点:

也就是:

软间隔支持向量机

c2e10600811bd15b5f5777e910eb8a4c.png

支持向量机的基本概念我们说完了,现在SVM中的容错问题。看上图,一个离群点会导致分隔线大大偏离我们肯定不希望这样的情况发生,为此,有了软间隔支持向量机,引入了松弛因子。

在前文中,我们定义了SVM中的

,现在,为了将其构造为一个软间隔支持向量机,我们来引入一个松弛因子
,于是支持向量机的公式变为:

这样我们的要求降低了,不需要margin都大于等于1,我们可以大于等于

这样一个值。相应的目标函数也由
变为
。那么这个系数C也是一个超参数,我们称之为惩罚参数。当C调大的时候,对误分类的惩罚会增加,
会变小,意味着分类更加严格,当C调小的时候,对误分类的惩罚减小,意味着有更大

容错性。此时可以发现, SVM的损失函数其实就是L2正则化与Hinge loss的和。由于松弛因子的加入,优化目标改变了,它带有训练误差,但是鲁棒性变好了。最终的优化目标包含了两层含义,使

尽量小,即间隔尽量大,同时使得误分类点的个数尽量小,C是调和两者的系数。

那么得到了新的目标函数后,化解依然是依照拉格朗日乘子法来推导,这里不再详述。现实中训练数据集往往hi线性不可分的,软间隔支持向量机会有更广的适应性。

核函数的理解

最后来说一下核函数,也就是前面一直没管的

, 这个
,就是支持向量机中的一个重要概念--核函数,具体来说,就是当样本点在低维空间线性不可分的时候,将低纬度的样本点映射到高维空间,这个映射可以把低维空间中线性不可分的样本点变为线性可分。比如下图中,在低维空间上不好分的样本点,通过高斯核函数变换后映射到超平面上,就比较好分了。

2acfe5d8853ec7fccbd0a97c7cb99509.png


实际操作中核函数也是一个超参数,需要根据具体问题去调节。用的比较多的是高斯核函数:

参考文献

支持向量机(SVM)里的支持向量是什么意思-SofaSofa

专家坐堂:机器学习中对核函数的理解

李航《统计学习方法》

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值