SMO算法原理

SMO算法原理

在前面的算法推导过程中,都遇到了以下的优化问题:
min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j κ ( x i , x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C , i = 1 , 2 , ⋯   , N \begin{aligned} \min_{\boldsymbol{\alpha}} \frac{1}{2} &\sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j \kappa(\mathbf{x}_i,\mathbf{x}_j) - \sum_{i=1}^N \alpha_i \\ s.t. \quad &\sum_{i=1}^N \alpha_i y_i = 0 \\ &0 \le \alpha_i \le C, \quad i=1, 2,\cdots,N \\ \end{aligned} αmin21s.t.i=1Nj=1Nαiαjyiyjκ(xi,xj)i=1Nαii=1Nαiyi=00αiC,i=1,2,,N
我们需要求出目标函数极小化对应的参数 N N N维向量 α ∗ \boldsymbol{\alpha}^* α。但这个优化式比较复杂,很难直接优化,一般采用启发式方法——SMO算法求解。

SMO算法基本思想

SMO每次只优化两个变量,而将其他变量视为常数。

例如,认为 α 1 \alpha_1 α1 α 2 \alpha_2 α2是变量, α 3 , α 4 , ⋯   , α N \alpha_3,\alpha_4,\cdots,\alpha_N α3,α4,,αN都是常量,那么常量都可以从目标函数中去除,优化问题变成
min ⁡ α i , α 2 1 2 K 11 α 1 2 + 1 2 K 22 α 2 2 + y 1 y 2 K 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 α 1 ∑ i = 3 N y i α i K i 1 + y 2 α 2 ∑ i = 3 N y i α i K i 2 s . t . α 1 y 1 + α 2 y 2 = − ∑ i = 3 N α i y i = ς 0 ≤ α i ≤ C , i = 1 , 2 , ⋯   , N \begin{aligned} \min_{\alpha_i,\alpha_2} \quad \frac{1}{2} K_{11} \alpha_1^2 + \frac{1}{2} K_{22} \alpha_2^2 +& y_1 y_2 K_{12} \alpha_1 \alpha_2 - (\alpha_1 + \alpha_2) + y_1 \alpha_1 \sum_{i=3}^N y_i \alpha_i K_{i1} + y_2 \alpha_2 \sum_{i=3}^N y_i \alpha_i K_{i2} \\ s.t. \quad &\alpha_1 y_1 + \alpha_2 y_2 = -\sum_{i=3}^N \alpha_i y_i = \varsigma \\ &0 \le \alpha_i \le C, \quad i=1, 2,\cdots,N \\ \end{aligned} αi,α2min21K11α12+21K22α22+s.t.y1y2K12α1α2(α1+α2)+y1α1i=3NyiαiKi1+y2α2i=3NyiαiKi2α1y1+α2y2=i=3Nαiyi=ς0αiC,i=1,2,,N
其中 K i j = κ ( x i , x j ) K_{ij}=\kappa(\mathbf{x}_i,\mathbf{x}_j) Kij=κ(xi,xj)。由于 y 1 2 = 1 , y 2 2 = 1 y_1^2 = 1,y_2^2 = 1 y12=1,y22=1,所以目标函数里没有写上。

SMO算法目标函数的优化

首先分析约束条件
α 1 y 1 + α 2 y 2 = ς 0 ≤ α i ≤ C , i = 1 , 2 \alpha_1 y_1 + \alpha_2 y_2 = \varsigma \\ 0 \le \alpha_i \le C, \quad i=1, 2 α1y1+α2y2=ς0αiC,i=1,2
由于 y 1 , y 2 y_1,y_2 y1,y2的取值只可能为1或-1,那么 α 1 y 1 + α 2 y 2 = ς \alpha_1 y_1 + \alpha_2 y_2 = \varsigma α1y1+α2y2=ς的形式有4种:
α 1 + α 2 = ς α 1 + α 2 = − ς α 1 − α 2 = ς α 1 − α 2 = − ς \begin{aligned} &\alpha_1 + \alpha_2 = \varsigma \\ &\alpha_1 + \alpha_2 = -\varsigma \\ &\alpha_1 - \alpha_2 = \varsigma \\ &\alpha_1 - \alpha_2 = -\varsigma \end{aligned} α1+α2=ςα1+α2=ςα1α2=ςα1α2=ς
加上 0 ≤ α 1 ≤ C , 0 ≤ α 2 ≤ C 0 \le \alpha_1 \le C, 0 \le \alpha_2 \le C 0α1C,0α2C的限制,使得 α 1 , α 2 \alpha_1, \alpha_2 α1,α2取值只能在 [ 0 , C ] × [ 0 , C ] [0,C] \times [0,C] [0,C]×[0,C]的盒子内。

在这里插入图片描述
如上图所示, α 1 , α 2 \alpha_1, \alpha_2 α1,α2被限制在盒子里的一条线段上,其中一个变量可以被另一个变量表示,所以两个变量的优化问题变成了一个变量的优化问题,不妨考虑为变量 α 2 \alpha_2 α2的最优化问题。

我们采用的是启发式迭代法,假设上一轮迭代的解是 α 1 o l d , α 2 o l d \alpha_1^{old}, \alpha_2^{old} α1old,α2old,不受盒子约束得到的解是 α 2 n e w , u n c \alpha_2^{new,unc} α2new,unc,经过盒子约束裁剪后得到的本轮迭代解是 α 1 n e w , α 2 n e w \alpha_1^{new}, \alpha_2^{new} α1new,α2new

α 2 n e w \alpha_2^{new} α2new必须满足上图盒子内的线段约束,假设 L L L H H H分别是上图中 α 2 n e w \alpha_2^{new} α2new的下边界和上边界,有
L ≤ α 2 n e w ≤ H L \le \alpha_2^{new} \le H Lα2newH

  • 对于 y 1 ≠ y 2 y_1 \ne y_2 y1=y2,若 ς > 0 \varsigma \gt 0 ς>0 0 ≤ α 2 n e w ≤ C − ς 0 \le \alpha_2^{new} \le C - \varsigma 0α2newCς;若 ς < 0 \varsigma \lt 0 ς<0 − ς ≤ α 2 n e w ≤ C -\varsigma \le \alpha_2^{new} \le C ςα2newC。那么
    L = max ⁡ ( 0 , − ς ) , H = min ⁡ ( C , C − ς ) L = \max(0, -\varsigma), \quad H = \min(C, C - \varsigma) L=max(0,ς),H=min(C,Cς)
    代入 ς = α 1 o l d − α 2 o l d \varsigma = \alpha_1^{old} - \alpha_2^{old} ς=α1oldα2old
    L = max ⁡ ( 0 , α 2 o l d − α 1 o l d ) , H = min ⁡ ( C , C + α 2 o l d − α 1 o l d ) L = \max(0, \alpha_2^{old} - \alpha_1^{old}), \quad H = \min(C, C + \alpha_2^{old} - \alpha_1^{old}) L=max(0,α2oldα1old),H=min(C,C+α

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值