SVM详解

SVM是一种优化的线性分类器,通过最大化类别间的间隔来提高泛化性能。它引入核函数解决非线性可分问题,允许少量误分类的松弛变量策略,确保模型鲁棒性。SMO算法常用于求解SVM中的α值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线性分类器

对于如下图所示的分类问题,我们可以采用一条简单的直线去分开两个类别


对于不能用直线去区分的模式,经过变换,广义上还是线性可分的,如:


对于分类面


我们可以定义广义特征向量


和广义权向量


我们就可以用广义线性分类函数去区分两类


SVM原理

SVM其实就是一个线性分类器,只不过它对线性分类器进行优化,使得它的泛化性能达到最优。

如上图,有两类样本,中间的直线就是分类面。它可以将两类完全分开。现设红点为A类,黑点为B类。假设分类面的法向量方向向上,则A类离分类面的距离为正,记标签y=+1,B类离分类面的距离为负,记标签y=-1。我们固定化几何间隔,使支持向量(图中实心点)到分类面的距离为1.SVM是使两类之间间隔最大,即两条灰线之间的距离最大。即:

综上所述,我们要优化的目标为:

构建拉格朗日函数:

求偏导:

代入方程:

满足KKT条件,可以转化为对偶问题,消去w,b:



可以看出只有支持向量的α值可以不为0,也就是我们只需保留支持向量即可。

根据上述推导,我们得到的SVM只适用于线性分类,我们知道在高维空间更加容易线性可分。但如果我们使用更高维数的特征向量,我们所需要的样本也指数增长,会产生维数灾难。核函数可以解决此类问题。

核函数

核函数的基本作用就是接受两个低维空间里的向量,能够计算出经过某个变换后在高维空间里的向量内积值。

这太妙了,不但可以将特征向量映射到高维空间,而且还能得到内积值,注意到上面推导的公式,出现了大量的内积形式。核函数不但解决了维数灾难,还降低了高维空间内积计算的复杂性。

那么核函数为什么能将向量映射到高维空间甚至是无穷维空间呢?

我们以高斯核为例

考虑到:

如果将每一项看作一维,高斯核则将原特征映射到无穷维空间。

高维空间只是更加容易线性可分,如果映射到高维之后,问题依然是线性不可分呢?

松弛变量



以我们正常的经验而言,如果大量的点都符合规律,而某一点不符合,我们并不会认为规律出错了,而是会认为这个点可能有问题。如上图所示,我们会认为标记出来的蓝点可能有问题,它往红点偏了。在SVM思想中,我们允许少量的点不满足条件。


重新得到优化目标:

按照之前的思路,最终得到的对偶问题如下:

这就是SVM的基本思路与证明了,对于α值的求取,一般采用SMO算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值