SMO算法流程

Posted Kalzn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SMO算法流程相关的知识,希望对你有一定的参考价值。

SMO 算法流程

python代码见github

问题简介

SMO(Sequential Minimal Optimization)用于解决支持向量机中的对偶问题的最优化求解过程,该问题为:
m a x α ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N y i y j α i α j K i j max_\\boldsymbol\\alpha\\sum_i=1^N\\alpha_i-\\frac12\\sum_i=1^N\\sum_j=1^Ny_iy_j\\alpha_i\\alpha_jK_ij maxαi=1Nαi21i=1Nj=1NyiyjαiαjKij
s . t .     0 ≤ α i ≤ C , ∑ i = 1 N α i y i = 0 s.t.\\ \\ \\ 0 \\le \\alpha_i \\le C, \\sum_i=1^N\\alpha_iy_i=0 s.t.   0αiC,i=1Nαiyi=0

而此问题也满足KKT条件要求
α i ≥ 0 , μ i ≥ 0 y i f ( x i ) − 1 + ξ i ≤ 0 α i ( y i f ( x i ) − 1 + ξ i ) = 0 ξ i ≥ 0 , μ i ξ i = 0 \\left\\ \\beginaligned \\alpha_i \\ge 0, \\mu_i \\ge 0\\\\ y_if(\\boldsymbolx_i)-1+\\xi_i \\le 0\\\\ \\alpha_i(y_if(\\boldsymbolx_i)-1+\\xi_i) = 0 \\\\ \\xi_i \\ge 0, \\mu_i\\xi_i=0 \\endaligned \\right . αi0,μi0yif(xi)1+ξi0αi(yif(xi)1+ξi)=0ξi0,μiξi=0

流程

该问题是一种凸二次规划问题,但是如果当作一般情况处理,计算过于繁琐。好在我们可以利用该问题特殊情况,得以特殊处理以简化流程。

SMO算法的核心思想是利用 ∑ i = 1 N α i y i = 0 \\sum_i=1^N\\alpha_iy_i=0 i=1Nαiyi=0这一条件,进行特殊处理。由于一次性确定所有 α \\alpha α的最优化取值是十分困难,所谓我们不妨每次只考虑变更两个变量 α i , α j \\alpha_i,\\alpha_j αi,αj,然后唯一确定剩下的变量为 ∑ k = 1 , k ≠ i , k ≠ j N α k y k = − ( α i y i + α j y j ) \\sum_k=1,k \\ne i, k\\ne j^N\\alpha_ky_k= - (\\alpha_iy_i+\\alpha_jy_j) k=1,k=i,k=jNαkyk=(αiyi+αjyj)。这里为什么选择两个变量,每次只选择一个不应该更容易吗?这里我们要注意,我们是通过迭代的方式每次选取一组 α \\alpha α的值进行更改。鉴于条件 ∑ i = 1 N α i y i = 0 \\sum_i=1^N\\alpha_iy_i=0 i=1Nαiyi=0,我们是无法对单一 α \\alpha α进行修改的,换句话说,如果我们更改了一个变量 α i \\alpha_i αi,则必须有另一个变量 α j \\alpha_j αj跟随发生改变以满足 ∑ i = 1 N α i y i = 0 \\sum_i=1^N\\alpha_iy_i=0 i=1Nαiyi=0

以下,为了表述方便,我们每次选择的变量定为 α 1 , α 2 \\alpha_1,\\alpha_2 α1,α2,此时目标函数可以写成:
W ( α 1 , α 2 ) = α 1 + α 2 − 1 2 K 11 y 1 2 α 1 2 − 1 2 K 22 y 2 2 α 2 2 − K 12 y 1 y 2 α 1 α 2 − y 1 α 1 ∑ i = 3 N α i y i K i 1 − y 2 α 2 ∑ i = 3 N α i y i K i 2 + C W(\\alpha_1,\\alpha_2)=\\alpha_1+\\alpha_2-\\frac12K_11y_1^2\\alpha_1^2-\\frac12K_22y_2^2\\alpha_2^2 - K_12y_1y_2\\alpha_1\\alpha_2-y_1\\alpha_1\\sum_i=3^N\\alpha_iy_iK_i1-y_2\\alpha_2\\sum_i=3^N\\alpha_iy_iK_i2+C W(α1,α2)=SMO算法流程

ML-9-3支持向量机--SMO算法原理

SVM之SMO算法(转)

基于Python的模拟退火算法SA 以函数极值+TSP问题为例(gif动态展示)

机器学习详解SMO算法剖析(转载)

理解支持向量机SMO算法