python svm算法_Python · SVM(四)· SMO 算法

本文详细介绍了SVM中的SMO算法,包括算法概述、KKT条件、参数选择策略以及如何解决带约束的二次规划问题。通过实例展示了SMO在训练过程中的效果,并解释了支持向量的概念。文章还探讨了如何将核方法应用于SMO算法中。
摘要由CSDN通过智能技术生成

(这里是本章会用到的 GitHub 地址)

(这篇东西我真是觉得又臭又长 ┑( ̄Д  ̄)┍)

SMO 算法概述

SMO 是由 Platt 在 1998 年提出的、针对软间隔最大化 SVM 对偶问题求解的一个算法,其基本思想很简单:在每一步优化中,挑选出诸多参数(

)中的两个参数(

)作为“真正的参数”,其余参数都视为常数,从而问题就变成了类似于二次方程求最大值的问题,从而我们就能求出解析解

具体而言,SMO 要解决的是如下对偶问题:

使得对

、都有

其大致求解步骤则可以概括如下:选出

中“最不好的”两个参数

只把

视为参数并把其余的

视为常数,于是最大化

就变成了以

为参数的二次规划问题,从而可以直接对其进行求解;但是,注意到

需满足

,所以求完解后需要检查是否满足约束;如不满足,则进行调整

KKT 条件

先来看如何选取参数。在 SMO 算法中,我们是依次选取参数的:选出违反 KKT 条件最严重的样本点、以其对应的参数作为第一个参数

第二个参数的选取有一种比较繁复且高效的方法,但对于一个朴素的实现而言、第二个参数即使随机选取也无不可

这里就有了一个叫 KKT 条件的东西,其详细的陈列会放在文末,这里就仅简要的说明一下。具体而言,对于已有的模型

来说,

及其对应样本

的 KKT 条件为:

注意我们之前提过样本到超平面的函数间隔为

,所以上述 KKT 条件可以直观地叙述为:样本离间隔超平面比较远

样本落在间隔超平面上

样本在间隔超平面以内

【注意:这里的间隔超平面即为满足方程

的平面;由于

可以取正负一两个值,所以间隔超平面会有两个——

。而分类超平面则是满足

的平面,需要将它和间隔超平面加以区分】

可以以一张图来直观理解这里提到的诸多概念:

(画得有点乱,见谅……)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值