大家好,我是带我去滑雪!
本期将讨论支持向量机的实现问题,我们知道支持向量机的学习问题可以化为求解凸二次规划问题。这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以用于这一问题的求解。但是当训练样本容量很大时,这些算法往往变得非常低效,以致无法使用。所以,如何高效地实现支持向量机学习就成为一个重要的问题。目前人们已提出许多快速实现算法。本期讲述其中的序列最小最优化(sequential minimal optimization, SMO)算法。
目录
(2)使用非线性数据(曲线),采用SMO算法求解支持向量机分类
(3)使用非线性数据(交叉),采用SMO算法求解支持向量机分类
1、SMO理论推导
SMO算法要求解如下凸二次规划对偶问题:
选择两个变量、
,其他变量固定,于是SMO算法的最优化子问题就变成如下:
下面,首先求沿着约束方向未经剪辑即未考虑不等式约束时的最优解
;然后再求剪辑后的解
。我们用定理来叙述这个结果,为了叙述简单,引入记号记作:
那么目标函数可写成如下形式:
对求导可得:
令其为0,得到:
因此,最终的解就是:
2、python代码与实例
(1)使用线性可分样本,采用SMO算法求解支持向量机分类
(2)使用非线性数据(曲线),采用SMO算法求解支持向量机分类
(3)使用非线性数据(交叉),采用SMO算法求解支持向量机分类
4、参考文献
[1]J. Platt, “Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines,” Technical Report MSR-TR-98-14, Microsoft Research, 1998.
需要J. Platt 论文的家人们可以去百度网盘(永久有效)获取:
链接:https://pan.baidu.com/s/1qAu4ueR_ucJO_WbOKAYg2w?pwd=7woc
提取码:7woc
--来自百度网盘超级会员V5的分享
更多优质内容持续发布中,请移步主页查看。
点赞+关注,下次不迷路!