序列最小最优算法(SMO算法)
2019-03-10 本文已影响0人
shenghaishxt
本文来自我的个人博客 https://www.zhangshenghai.com/posts/3981/
序列最小最优化算法(sequential minimal optimization, SMO)算法:1998年由Platt提出。支持向量机的学习问题可以形式化为求解凸二次规划问题,这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以用于这一问题的求解。但是当训练样本容量很大时,这些算法往往变得非常低效,以致无法使用。所以,如何高效地实现支持向量机学习就成为一个重要的问题。
SMO算法是一种启发式算法,基本思路如下:
- 如果所有变量的解都满足此最优化问题的KKT条件,那么得到解。
- 否则,选择两个变量,固定其它变量,针对这两个变量构建一个二次规划问题,称为子问题,可通过解析方法求解,提高了计算速度。
- 子问题的两个变量:一个是违反KKT条件最严重的那个,另一个由约束条件自动确定。
SMO算法包括两个部分:
- 求解两个变量二次规划的解析方法
- 选择变量的启发式方法
序列最小最优化(sequential minimal optimization,SMO)算法要解如下凸二次规划的对偶问题:
子问题有两个变量,一个是违反KKT条件最严重的那个,另一个由约束条件自动确定。子问题的两个变量只有一个是自由变量,如果确定,那么也随之确定,所以子问题中同时更新两个变量。
SMO算法
输入:训练数据集,其中,精度;
输出:近似解
-
取初始值,令;
-
选取优化变量,求解
-
求得最优解,更新为;
-
若在精度范围内满足停机条件
其中,
则转(4);否则令,转(2);
4.取。