一文详解SVM的Soft-Margin机制

简介: 一文详解SVM的Soft-Margin机制

Hard-Margin SVM,必须将所有的样本都分类正确才行。这往往需要更多更复杂的特征转换,甚至造成过拟合。本文将介绍一种Soft-Margin SVM,目的是让分类错误的点越少越好,而不是必须将所有点分类正确,也就是允许有noise存在。这种做法很大程度上不会使模型过于复杂,不会造成过拟合,而且分类效果是令人满意的。


1   Motivation and Primal Problem


SVM同样可能会造成overfit。原因有两个,一个是由于我们的SVM模型(即kernel)过于复杂,转换的维度太多,过于powerful了;另外一个是由于我们坚持要将所有的样本都分类正确,即不允许错误存在,造成模型过于复杂。如下图所示,左边的图Φ1是线性的,虽然有几个点分类错误,但是大部分都能完全分开。右边的图Φ4是四次多项式,所有点都分类正确了,但是模型比较复杂,可能造成过拟合。直观上来说,左边的图是更合理的模型。

image.png

如何避免过拟合?方法是允许有分类错误的点,即把某些点当作是noise,放弃这些noise点,但是尽量让这些noise个数越少越好。回顾一下我们在机器学习基石笔记中介绍的pocket算法,pocket的思想不是将所有点完全分开,而是找到一条分类线能让分类错误的点最少。而Hard-Margin SVM的目标是将所有点都完全分开,不允许有错误点存在。为了防止过拟合,我们可以借鉴pocket的思想,即允许有犯错误的点,目标是让这些点越少越好。

image.png

为了引入允许犯错误的点,我们将Hard-Margin SVM的目标和条件做一些结合和修正,转换为如下形式:

image.png

image.png

这个式子存在两个不足的地方。首先,最小化目标中第二项是非线性的,不满足QP的条件,所以无法使用dual或者kernel SVM来计算。然后,对于犯错误的点,有的离边界很近,即error小,而有的离边界很远,error很大,上式的条件和目标没有区分small error和large error。这种分类效果是不完美的。

image.png

为了改正这些不足,我们继续做如下修正:

image.png

修正后的表达式中,我们引入了新的参数ξn来表示每个点犯错误的程度值,ξn≥0。通过使用error值的大小代替是否有error,让问题变得易于求解,满足QP形式要求。这种方法类似于我们在机器学习基石笔记中介绍的0/1 error和squared error。这种soft-margin SVM引入新的参数ξ。


至此,最终的Soft-Margin SVM的目标为:

image.png

其中,ξn表示每个点犯错误的程度,ξn=0,表示没有错误,ξn越大,表示错误越大,即点距离边界(负的)越大。参数C表示尽可能选择宽边界和尽可能不要犯错两者之间的权衡,因为边界宽了,往往犯错误的点会增加。large C表示希望得到更少的分类错误,即不惜选择窄边界也要尽可能把更多点正确分类;small C表示希望得到更宽的边界,即不惜增加错误点个数也要选择更宽的分类边界。


与之对应的QP问题中,由于新的参数ξn的引入,总共参数个数为d^+1+N,限制条件添加了ξn≥0,则总条件个数为2N。

image.png


2  Dual Problem


接下来,我们将推导Soft-Margin SVM的对偶dual形式,从而让QP计算更加简单,并便于引入kernel算法。首先,我们把Soft-Margin SVM的原始形式写出来:

image.png

然后,跟我们在第二节课中介绍的Hard-Margin SVM做法一样,构造一个拉格朗日函数。因为引入了ξn,原始问题有两类条件,所以包含了两个拉格朗日因子αn和βn。拉格朗日函数可表示为如下形式:

image.png

根据之前介绍的KKT条件,我们对上式进行简化。上式括号里面的是对拉格朗日函数L(b,w,ξ,α,β)计算最小值。那么根据梯度下降算法思想:最小值位置满足梯度为零。


我们先对ξn做偏微分:

image.png

image.png

oft-Margin SVM Dual与Hard-Margin SVM Dual基本一致,只有一些条件不同。Hard-Margin SVM Dual中αn≥0,而Soft-Margin SVM Dual中0≤αn≤C,且新的拉格朗日因子βn=C−αn。在QP问题中,Soft-Margin SVM Dual的参数αn同样是N个,但是,条件由Hard-Margin SVM Dual中的N+1个变成2N+1个,这是因为多了N个αn的上界条件。


3  Messages behind Soft-Margin SVM


推导完Soft-Margin SVM Dual的简化形式后,就可以利用QP,找到Q,p,A,c对应的值,用软件工具包得到αnαn的值。或者利用核函数的方式,同样可以简化计算,优化分类效果。Soft-Margin SVM Dual计算αn的方法过程与Hard-Margin SVM Dual的过程是相同的。

image.png

image.png

上面求解b提到的一个假设是αs<C,这个假设是否一定满足呢?如果没有free SV,所有αs大于零的点都满足αs=C怎么办?一般情况下,至少存在一组SV使αs<C的概率是很大的。如果出现没有free SV的情况,那么b通常会由许多不等式条件限制取值范围,值是不确定的,只要能找到其中满足KKT条件的任意一个b值就可以了。这部分细节比较复杂,不再赘述。

image.png

接下来,我们看看C取不同的值对margin的影响。例如,对于Soft-Margin Gaussian SVM,C分别取1,10,100时,相应的margin如下图所示:

image.png

从上图可以看出,C=1时,margin比较粗,但是分类错误的点也比较多,当C越来越大的时候,margin越来越细,分类错误的点也在减少。正如前面介绍的,C值反映了margin和分类正确的一个权衡。C越小,越倾向于得到粗的margin,宁可增加分类错误的点;C越大,越倾向于得到高的分类正确率,宁可margin很细。我们发现,当C值很大的时候,虽然分类正确率提高,但很可能把noise也进行了处理,从而可能造成过拟合。也就是说Soft-Margin Gaussian SVM同样可能会出现过拟合现象,所以参数(γ,C)的选择非常重要。


我们再来看看αnαn取不同值是对应的物理意义。已知0≤αn≤C满足两个complementary slackness条件:

image.png

image.png


4   Model Selection


在Soft-Margin SVM Dual中,kernel的选择、C等参数的选择都非常重要,直接影响分类效果。例如,对于Gaussian SVM,不同的参数(C,γ),会得到不同的margin,如下图所示。

image.png

其中横坐标是C逐渐增大的情况,纵坐标是γ逐渐增大的情况。不同的(C,γ)组合,margin的差别很大。那么如何选择最好的(C,γ)等参数呢?最简单最好用的工具就是validation。


validation我们在机器学习基石课程中已经介绍过,只需要将由不同(C,γ)等参数得到的模型在验证集上进行cross validation,选取Ecv最小的对应的模型就可以了。例如上图中各种(C,γ)组合得到的Ecv如下图所示:

image.png

因为左下角的Ecv(C,γ)最小,所以就选择该(C,γ)对应的模型。通常来说,Ecv(C,γ)并不是(C,γ)的连续函数,很难使用最优化选择(例如梯度下降)。一般做法是选取不同的离散的(C,γ)值进行组合,得到最小的Ecv(C,γ),其对应的模型即为最佳模型。这种算法就是我们之前在机器学习基石中介绍过的V-Fold cross validation,在SVM中使用非常广泛。


V-Fold cross validation的一种极限就是Leave-One-Out CV,也就是验证集只有一个样本。对于SVM问题,它的验证集Error满足:

image.png

也就是说留一法验证集Error大小不超过支持向量SV占所有样本的比例。下面做简单的证明。令样本总数为N,对这N个点进行SVM分类后得到margin,假设第N个点的αN=0,不是SV,即远离margin(正距离)。这时候,如果我们只使用剩下的N-1个点来进行SVM分类,那么第N个点必然是分类正确的点,所得的SVM margin跟使用N个点的到的是完全一致的。这是因为我们假设第N个点是non-SV,对SV没有贡献,不影响margin的位置和形状。所以前N-1个点和N个点得到的margin是一样的。


那么,对于non-SV的点,它的g−=g,即对第N个点,它的Error必然为零:

image.png

另一方面,假设第N个点αN≠0,即对于SV的点,它的Error可能是0,也可能是1,必然有:

image.png

SV的数量在SVM模型选择中也是很重要的。一般来说,SV越多,表示模型可能越复杂,越有可能会造成过拟合。所以,通常选择SV数量较少的模型,然后在剩下的模型中使用cross-validation,比较选择最佳模型。


相关文章
|
4月前
|
存储 人工智能 数据中心
138_绿色计算:碳排放优化 - 估算部署的碳足迹与LLM环境友好型部署最佳实践
随着大语言模型(LLM)在各个行业的广泛应用,其计算需求和环境影响正日益受到关注。根据最新研究,训练一个大型LLM模型可能产生数百吨二氧化碳当量的排放,这相当于普通家庭几十年的碳足迹。在全球气候变化和可持续发展的背景下,如何优化LLM部署的碳足迹,实现环境友好型AI应用,已成为行业面临的重要挑战。
|
3月前
|
机器学习/深度学习 人工智能 算法
乘AIGC浪潮:把握万亿级机遇
AIGC正加速从技术走向产业落地,万亿市场规模催生全链条人才需求。北京、上海政策加码,算力基建完善,2025-2027年成关键窗口期。七大核心岗位——AIGC工程师、大模型训练师、AI工程师等全面爆发,覆盖技术到应用各层级,高薪抢人成常态。工信部认证加持,职业前景广阔,人人皆可入局,抢占AI时代新风口。
374 1
|
9月前
|
机器学习/深度学习 算法 Python
MATLAB 实现轴承转轴信号仿真
轴承转轴信号仿真是一种重要的研究手段,用于分析轴承的健康状态、检测故障以及开发故障诊断算法。通过构建仿真信息并添加故障信号,可以生成用于轴承信号分析的测试数据。
|
SQL 存储 NoSQL
SQL、NoSQL还是NewSQL
【7月更文挑战第5天】SQL、NoSQL还是NewSQL
469 1
|
9月前
|
人工智能 安全 IDE
揭秘 CodeBuddy:全方位测评后,我愿称它为开发者 “梦中情辅”
CodeBuddy 无疑是一款极具潜力的编程辅助工具,它的出现为开发者带来了全新的开发体验,大幅提升了开发效率和代码质量。虽然存在一些小瑕疵,但随着技术的不断迭代,相信它会不断完善。无论是新手开发者还是经验丰富的编程老手,都值得一试 CodeBuddy,感受它在编程过程中带来的便利与惊喜。我先替兄弟们种草了
836 1
|
NoSQL 算法 JavaScript
一种优雅的方式整合限流、幂等、防盗刷
在工作中,接口防盗刷至关重要,尤其对于短信发送等高风险接口。本文以发送短信接口为例,探讨了仅校验手机号的局限性,并提出基于Ticket机制的解决方案。客户端需先申请Ticket,服务端通过UserAgent、IP等判断请求合法性,生成加密的Ticket。客户端携带Ticket调用接口,并可能需通过图形验证码验证。此方案实现限流、幂等性和防盗刷,适用于多种接口,提升安全性。同时,建议减少明显错误提示,增加破解难度。
529 5
一种优雅的方式整合限流、幂等、防盗刷
|
UED
鸿蒙next版开发:相机开发-适配不同折叠状态的摄像头变更(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了强大的相机开发能力,特别是针对折叠屏设备的摄像头适配。本文详细介绍了如何在ArkTS中检测和适配不同折叠状态下的摄像头变更,确保相机应用在不同设备状态下的稳定性和用户体验。通过代码示例展示了具体的实现步骤。
453 8
|
SQL Ubuntu Linux
安装和使用皮卡丘练习靶场
安装和使用皮卡丘练习靶场
ly~
|
存储 监控 小程序
除了 Web 开发,PHP 还可以应用于哪些领域?
PHP 在 Web 开发之外还有多个应用场景:1)命令行脚本,如批量处理文件、数据库管理及系统监控;2)利用 PHP-GTK 等工具开发桌面应用,满足特定业务需求;3)结合微信云开发功能支持微信小程序后端,处理数据存储与用户认证;4)为小型游戏或特定类型游戏开发游戏服务器逻辑;5)在物联网领域作为后端语言处理设备数据交互与分析。
ly~
586 4
|
应用服务中间件 nginx
解密Nginx的高性能魔法:事件驱动与异步非阻塞模型
总之,Nginx的高性能魔法基于事件驱动和异步非阻塞模型,使其能够处理大量并发连接,同时保持低系统资源消耗。这是Nginx在处理Web请求时出色性能的关键因素。
431 1