支持向量机SVM(4)-序列最小最优化(sequential minimal optimization SMO)算法

SMO算法是由Platt于1998年提出的,用于高效求解支持向量机学习问题的二次规划对偶问题。算法通过选择违反KKT条件最严重的样本点作为变量,构建并解决一个包含两个变量的二次规划子问题,以逐步优化所有变量。SMO包括变量选择、两个变量的二次规划求解和阈值b的计算。在每次优化两个变量后,更新阈值b和差值Ei,直至满足停止条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SMO算法简介

序列最小最优化(sequential minimal optimization SMO)算法 ,由Platt于1998年提出,可以高效地实现支持向量机学习问题.
SMO算法要解如下凸二次规划的对偶问题
min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i ( 1 ) \min _{\alpha} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} K\left(x_{i}, x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} \quad(1) αmin21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi(1)  s.t.  ∑ i = 1 N α i y t = 0 ( 2 ) \text { s.t. } \quad \sum_{i=1}^{N} \alpha_{i} y_{t}=0 \quad(2)  s.t. i=1Nαiyt=0(2) 0 ⩽ α i ⩽ C , i = 1 , 2 , ⋯   , N ( 3 ) 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2, \cdots, N \quad(3) 0αiC,i=1,2,,N(3)在这个问题中,变量是拉格朗日乘子,一个变量 α i \alpha_i αi对应于一个样本点 ( x i , y i ) \left(x_{i}, y_{i}\right) (xi,yi);变量的总数等于训练样本容量。与之对应的最优解需满足KKT条件为:
α i = 0 ⇔ y i g ( x i ) ⩾ 1 ( 4 ) \alpha_{i}=0 \Leftrightarrow y_{i} g\left(x_{i}\right) \geqslant 1 \quad(4) αi=0yig(xi)1(4) 0 &lt; α i &lt; C ⇔ y i g ( x i ) = 1 ( 5 ) 0&lt;\alpha_{i}&lt;C \Leftrightarrow y_{i} g\left(x_{i}\right)=1 \quad(5) 0<αi<Cyig(xi)=1(5) α i = C ⇔ y i g ( x i ) ⩽ 1 ( 6 ) \alpha_{i}=C \Leftrightarrow y_{i} g\left(x_{i}\right) \leqslant 1 \quad(6) αi=Cyig(xi)1(6)其中, g ( x i ) = ∑ j = 1 N α j y j K ( x i , x j ) + b g\left(x_{i}\right)=\sum_{j=1}^{N} \alpha_{j} y_{j} K\left(x_{i}, x_{j}\right)+b g(xi)=j=1NαjyjK(xi,xj)+b

( 4 ) (4) (4)式表明,在两条间隔线外面的点,对应前面的系数 α i \alpha_i αi 0 0 0
( 5 ) (5) (5)式表明,在两条间隔线上的点,对应前面的系数 α i \alpha_i αi C C C
( 6 ) (6) (6)式表明,在两条间隔线里面的点,对应前面的系数 α i \alpha_i αi 0 0 0 C C C之间

以下几种情况出现将不会满足:
y i g ( x i ) ≤ 1 y_{i} g(x_{i}) \leq 1 yig(xi)1 α i &lt; C \alpha_i &lt;C αi<C,则表明是不满足的,而原本的 α i = C \alpha_i =C αi=C
y i g ( x i ) ≥ 1 y_{i} g(x_{i}) \geq 1 yig(xi)1 α i &gt; 0 \alpha_i &gt;0 αi>0,则表明是不满足的,而原本的 α i = 0 \alpha_i =0 αi=0
y i g ( x i ) = 1 y_{i} g(x_{i}) = 1 yig(xi)=1 α i = 0 \alpha_i =0 αi=0或者 α i = C \alpha_i =C αi=C,则表明是不满足的,而原本应该是 0 &lt; α i &lt; C 0&lt;\alpha_{i}&lt;C 0<αi<C

SMO算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,(因为KKT条件是该最优化问题的充分必要条件)那么这个最优化问题的解就得到了,否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数值变得更小。这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度,子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定,如此,SMO算法将原问题不断分解为子问题对子问题的求解进而达到求解原问题的目的.
注意,子问题的两个变量中只有一个是自由变量,假设 α 1 \alpha_1 α1 α 2 \alpha_2 α2为两个变量,固定 α 3 , α 4 , ⋯ &ThinSpace; , α N \alpha_{3}, \alpha_{4}, \cdots, \alpha_{N} α3,α4,,αN,那么由等式约束可知:
如果 α 2 \alpha_2 α2确定,那么 α 1 \alpha_1 α1也随之确定,所以子问题中同时更新两个变量。
假设变量个数为一个时,固定 α 3 , α 4 , ⋯ &ThinSpace; , α N \alpha_{3}, \alpha_{4}, \cdots, \alpha_{N} α3,α4,,αN,此时 α 1 \alpha_1 α1也已经固定, α 1 \alpha_1 α1不可作为自由变量。
假设变量个数为三个时,这样无法控制自由变量个数。因此只能取两个变量,其中之一为自由变量。SMO算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法.

两个变量二次规划的求解方法

假设选择的两个变量时 α 1 , α 2 \alpha_{1}, \alpha_{2} α1,α2,其他变量 α i ( i = 3 , 4 , . . . , N ) \alpha_i(i=3,4,...,N) αi(i=3,4,...,N)是固定的,于是SMO的最优化问题 ( 1 ) ∼ ( 3 ) (1)\sim(3) (1)(3)的子问题可以写成:
min ⁡ α 1 , α 2 &ThickSpace; W ( α 1 , α 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 ( 7 ) \min _{\alpha_{1}, \alpha_{2}} \; W\left(\alpha_{1}, \alpha_{2}\right)=\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}\\- \left(\alpha_{1}+\alpha_{2}\right)+y_{1} \alpha_{1} \sum_{i=3}^{N} y_{i} \alpha_{i} K_{i 1}+y_{2} \alpha_{2} \sum_{i=3}^{N} y_{i} \alpha_{i} K_{i 2} \quad(7) α1,α2minW(α1,α2)=21K11α12+21K22α22+y1y2K12α1α2(α1+α2)+y1α1i=3NyiαiKi1+y2α2i=3NyiαiKi2(7)  s.t.  α 1 y 1 + α 2 y 2 = − ∑ i = 3 N y i α i = ζ ( 8 ) \text { s.t. } \quad \alpha_{1} y_{1}+\alpha_{2} y_{2}=-\sum_{i=3}^{N} y_{i} \alpha_{i}=\zeta \quad(8)  s.t. α1y1+α2y2=i=3Nyiαi=ζ(8) 0 ⩽ α i ⩽ C , i = 1 , 2 ( 9 ) 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2\quad(9) 0αiC,i=1,2(9)
其中, K i j = K ( x i , x j ) , i , j = 1 , 2 , ⋯ &ThinSpace; , N , ζ K_{i j}=K\left(x_{i}, x_{j}\right), i, j=1,2, \cdots, N, \quad \zeta Kij=K(xi,xj),i,j=1,2,,N,ζ是常数,目标函数式中省略了不含 α 1 , α 2 \alpha_{1}, \alpha_{2} α1,α2的常数项.为了求解两个变量的二次规划问题 ( 7 ) ∼ ( 9 ) (7)\sim(9) (7)(9),首先分析约束条件,然后在此约束条件下求极小。
由于只有两个变量 α 1 , α 2 \alpha_{1}, \alpha_{2} α1,α2,约束可以用二维空间的图形表示:

图片名称

对于上图由条件 α 1 y 1 + α 2 y 2 = − ∑ i = 3 N y i α i = ζ \alpha_{1} y_{1}+\alpha_{2} y_{2}=-\sum_{i=3}^{N} y_{i} \alpha_{i}=\zeta α1y1+α2y2=i=3Nyiαi=ζ,当 y 1 ≠ y 2 y_{1} \neq y_{2} y1̸=y2,即 y 1 , y 2 y_1,y_2 y1,y2异号,有 α 1 − α 2 = ζ \alpha_1-\alpha_2=\zeta α1α2=ζ,即左图,当 y 1 = y 2 y_{1}=y_{2} y1=y2,即 α 1 + α 2 = ζ \alpha_{1}+\alpha_{2}=\zeta α1+α2=ζ得右图,不等式约束 0 ⩽ α i ⩽ C , i = 1 , 2 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2 0αiC,i=1,2,使得 ( α 1 , α 2 ) (\alpha_1,\alpha_2) (α1,α2)在盒子 [ 0 , C ] × [ 0 , C ] [0,C] \times[0,C] [0,C]×[0,C],等式约束 α 1 y 1 + α 2 y 2 = − ∑ i = 3 N y i α i = ζ \alpha_{1} y_{1}+\alpha_{2} y_{2}=-\sum_{i=3}^{N} y_{i} \alpha_{i}=\zeta α1y1+α2y2=i=3Nyiαi=ζ使 ( α 1 , α 2 ) (\alpha_1,\alpha_2) (α1,α2)在平行于盒子 [ 0 , C ] × [ 0 , C ] [0,C] \times[0,C] [0,C]×[0,C]的对角线的直线上,因此要求的是目标函数在一条平行于对角线的线段上的最优值,实质上是单变量的最优化问题,不妨考虑为变量的最优化问题

图片名称

假设问题 ( 7 ) ∼ ( 9 ) (7)\sim(9) (7)(9)的初始可行解为 α 1 o l d , α 2 o l d \alpha_1^{old},\alpha_2^{old} α1old,α2old,最优解为 α 1 n e w , α 2 n e w \alpha_1^{new},\alpha_2^{new} α1new,α2new,并且假设 α 2 \alpha_2 α2沿着约束方向未经剪辑时的最优解为 α 2 n e w , u n c \alpha_2^{new,unc} α2new,unc
由于 α 2 n e w \alpha_2^{new} α2new满足不等式约束 0 ⩽ α i ⩽ C , i = 1 , 2 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2 0αiC,i=1,2,所以最优解 α 2 n e w \alpha_2^{new} α2new的取值范围必须满足条件 L ⩽ α 2 n e w ⩽ H L \leqslant \alpha_{2}^{\mathrm{new}} \leqslant H Lα2newH其中, L L L H H H α 2 n e w \alpha_2^{new} α2new所在对角线段端点的界,如上图 y 1 , y 2 y_1,y_2 y1,y2异号时,
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 \left(0, \alpha_{2}^{{old}}-\alpha_{1}^{{old}}\right) \quad H=\min \left(C, C+\alpha_{2}^{{ old }}-\alpha_{1}^{{ old }}\right) L=max(0,α2oldα1old)H=min(C,C+α2oldα1old) 此处需要具体解释一下,结合上图
ζ &gt; 0 \zeta&gt;0 ζ>0时, α 1 − α 2 = ζ \alpha_1-\alpha_2=\zeta α1α2=ζ,处于对角线的下方, α 2 \alpha_2 α2下界为图中的 L 1 = 0 L1=0 L1=0,上界为图中的 H 1 = C + α 2 − α 1 H1=C+\alpha_2-\alpha_1 H1=C+α2α1
ζ &lt; 0 \zeta&lt;0 ζ<0时, α 1 − α 2 = ζ \alpha_1-\alpha_2=\zeta α1α2=ζ,处于对角线的下方, α 2 \alpha_2 α2下界为图中的 L 2 = − ζ L2=-\zeta L2=ζ,上界为图中的 H 2 = C H2=C H2=C

综合上述两种情况可得要满足 L ⩽ α 2 n e w ⩽ H L \leqslant \alpha_{2}^{{new}} \leqslant H Lα2newH须有 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 \left(0, \alpha_{2}^{{old}}-\alpha_{1}^{{old}}\right) \quad H=\min \left(C, C+\alpha_{2}^{{ old }}-\alpha_{1}^{{ old }}\right) L=max(0,α2oldα1old)H=min(C,C+α2oldα1old)同理如果 y 1 , y 2 y_1,y_2 y1,y2同号,则
L = max ⁡ ( 0 , α 2 o l d + α 1 o l d − C ) H = min ⁡ ( C , α 2 o l d + α 1 o l d ) L=\max \left(0, \alpha_{2}^{ { old }}+\alpha_{1}^{{ old }}-C\right) \quad H=\min \left(C, \alpha_{2}^{{old}}+\alpha_{1}^{{old}}\right) L=max(0,α2old+α1oldC)H=min(C,α2old+α1old)下面,首先沿着约束方向未经剪辑即考虑不等式约束时 0 ⩽ α i ⩽ C , i = 1 , 2 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2 0αiC,i=1,2的最优解为 α 2 n e w , u n c \alpha_2^{new,unc} α2new,unc,然后再求剪辑后 α 2 \alpha_2 α2的解 α 2 n e w \alpha_2^{new} α2new,为了简洁叙述下面定理我们首先记 g ( x ) = ∑ i = 1 N α i y i K ( x i , x ) + b ( 10 ) g(x)=\sum_{i=1}^{N} \alpha_{i} y_{i} K\left(x_{i}, x\right)+b \quad(10) g(x)=i=1NαiyiK(xi,x)+b(10) E i = g ( x i ) − y i = ( ∑ j = 1 N α j y j K ( x j , x i ) + b ) − y i , i = 1 , 2 ( 11 ) E_{i}=g\left(x_{i}\right)-y_{i}=\left(\sum_{j=1}^{N} \alpha_{j} y_{j} K\left(x_{j}, x_{i}\right)+b\right)-y_{i}, \quad i=1,2 \quad(11) Ei=g(xi)yi=(j=1NαjyjK(xj,xi)+b)yi,i=1,2(11)当时 i = 1 , 2 i=1,2 i=1,2 E i E_i Ei为函数 g ( x ) g(x) g(x)对输入 x i x_i xi的预测值与真实输出 y i y_i yi之差.
定理6 最优化问题 ( 7 ) ∼ ( 9 ) (7)\sim(9) (7)(9)沿着约束方向未经剪辑时的解是
α 2 n e w , u n c = α 2 o l d + y 2 ( E 1 − E 2 ) η ( 12 ) \alpha_{2}^{{new}, {unc}}=\alpha_{2}^{{old}}+\frac{y_{2}\left(E_{1}-E_{2}\right)}{\eta} \quad(12) α2new,unc=α2old+ηy2(E1E2)(12)其中, η = K 11 + K 22 − 2 K 12 = ∥ Φ ( x 1 ) − Φ ( x 2 ) ∥ 2 \eta=K_{11}+K_{22}-2 K_{12}=\left\|\Phi\left(x_{1}\right)-\Phi\left(x_{2}\right)\right\|^{2} η=K11+K222K12=Φ(x1)Φ(x2)2
ϕ ( x ) \phi(x) ϕ(x)是输入空间到特征空间的映射, E i , i = 1 , 2 E_i,i=1,2 Ei,i=1,2,由式 ( 11 ) (11) (11)给出
经剪辑后 α 2 \alpha_2 α2的解是
α 2 n e w = { H , α 2 n e w , u n c &gt; H α 2 n e w , u n c , L ⩽ α 2 n e w , u n c ⩽ H ( 13 ) L , α 2 n e w , u n c &lt; L \alpha_{2}^{ { new }}=\left\{\begin{array}{ll}{H,} &amp; {\alpha_{2}^{ { new, unc }}&gt;H} \\ {\alpha_{2}^{ { new, unc }},} &amp; {L \leqslant \alpha_{2}^{ { new, unc }} \leqslant H} \quad(13)\\ {L,} &amp; {\alpha_{2}^{{ new, unc }}&lt;L}\end{array}\right. α2new=H,α2new,unc,L,α2new,unc>HLα2new,uncH(13)α2new,unc<L α 2 n e w \alpha_{2}^{new} α2new求得 α 1 n e w \alpha_{1}^{new} α1new α 1 n e w = α 1 o l d + y 1 y 2 ( α 2 o l d − α 2 n e w ) ( 14 ) \alpha_{1}^{{new}}=\alpha_{1}^{{old}}+y_{1} y_{2}\left(\alpha_{2}^{{old}}-\alpha_{2}^{{new}}\right) \quad(14) α1new=α1old+y1y2(α2oldα2new)(14)
证明 引进记号
v i = ∑ j = 3 N α j y j K ( x i , x j ) = g ( x i ) − ∑ j = 1 2 α j y j K ( x i , x j ) − b , i = 1 , 2 v_{i}=\sum_{j=3}^{N} \alpha_{j} y_{j} K\left(x_{i}, x_{j}\right)=g\left(x_{i}\right)-\sum_{j=1}^{2} \alpha_{j} y_{j} K\left(x_{i}, x_{j}\right)-b, \quad i=1,2 vi=j=3NαjyjK(xi,xj)=g(xi)j=12αjyjK(xi,xj)b,i=1,2目标函数写成
W ( α 1 , α 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 v 1 α 1 + y 2 v 2 α 2 ( 15 ) W\left(\alpha_{1}, \alpha_{2}\right)=\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} -\left(\alpha_{1}+\alpha_{2}\right)+y_{1} v_{1} \alpha_{1}+y_{2} v_{2} \alpha_{2} \quad(15) W(α1,α2)=21K11α12+21K22α22+y1y2K12α1α2(α1+α2)+y1v1α1+y2v2α2(15) α 1 y 1 = ζ − α 2 y 2 \alpha_{1} y_{1}=\zeta-\alpha_{2} y_{2} α1y1=ζα2y2 y i 2 = 1 y_{i}^{2}=1 yi2=1,两边同时乘以 y 1 y_1 y1, 可将 α 1 \alpha_1 α1表示为 α 1 = ( ζ − y 2 α 2 ) y 1 \alpha_{1}=\left(\zeta-y_{2} \alpha_{2}\right) y_{1} α1=(ζy2α2)y1将其带入式 ( 15 ) (15) (15),得到的只是 α 2 \alpha_2 α2的函数的目标函数:
W ( α 2 ) = 1 2 K 11 ( ζ − α 2 y 2 ) 2 + 1 2 K 22 α 2 2 + y 2 K 12 ( ζ − α 2 y 2 ) α 2 − ( ζ − α 2 y 2 ) y 1 − α 2 + v 1 ( ζ − α 2 y 2 ) + y 2 v 2 α 2 W\left(\alpha_{2}\right)=\frac{1}{2} K_{11}\left(\zeta-\alpha_{2} y_{2}\right)^{2}+\frac{1}{2} K_{22} \alpha_{2}^{2}+y_{2} K_{12}\left(\zeta-\alpha_{2} y_{2}\right) \alpha_{2}\\-\left(\zeta-\alpha_{2} y_{2}\right) y_{1}-\alpha_{2}+v_{1}\left(\zeta-\alpha_{2} y_{2}\right)+y_{2} v_{2} \alpha_{2} W(α2)=21K11(ζα2y2)2+21K22α22+y2K12(ζα2y2)α2(ζα2y2)y1α2+v1(ζα2y2)+y2v2α2 α 2 \alpha_2 α2求导数
∂ W ∂ α 2 = K 11 α 2 + K 22 α 2 − 2 K 12 α 2 − K 11 ζ y 2 + K 12 ζ y 2 + y 1 y 2 − 1 − v 1 y 2 + y 2 v 2 \frac{\partial W}{\partial \alpha_{2}}=K_{11} \alpha_{2}+K_{22} \alpha_{2}-2 K_{12} \alpha_{2} -K_{11} \zeta y_{2}+K_{12} \zeta y_{2}+y_{1} y_{2}\\-1-v_{1} y_{2}+y_{2} v_{2} α2W=K11α2+K22α22K12α2K11ζy2+K12ζy2+y1y21v1y2+y2v2令其为 0 0 0,得到 ( K 11 + K 22 − 2 K 12 ) α 2 = y 2 ( y 2 − y 1 + ζ K 11 − ζ K 12 + v 1 − v 2 ) = y 2 [ y 2 − y 1 + ζ K 11 − ζ K 12 + ( g ( x 1 ) − ∑ j = 1 2 y j α j K 1 j − b ) − ( g ( x 2 ) − ∑ j = 1 2 y j α j K 2 j − b ) ] \left(K_{11}+K_{22}-2 K_{12}\right) \alpha_{2}=y_{2}\left(y_{2}-y_{1}+\zeta K_{11}-\zeta K_{12}+v_{1}-v_{2}\right) \\ =y_{2}\left[y_{2}-y_{1}+\zeta K_{11}-\zeta K_{12}+\left(g\left(x_{1}\right)-\sum_{j=1}^{2} y_{j} \alpha_{j} K_{1 j}-b\right)\right. \\-\left(g\left(x_{2}\right)-\sum_{j=1}^{2} y_{j} \alpha_{j} K_{2 j}-b\right) \Biggr ] (K11+K222K12)α2=y2(y2y1+ζK11ζK12+v1v2)=y2[y2y1+ζK11ζK12+(g(x1)j=12yjαjK1jb)(g(x2)j=12yjαjK2jb)] ζ = α 1 o l d y 1 + α 2 o l d y 2 \zeta=\alpha_{1}^{ { old }} y_{1}+\alpha_{2}^{ { old }} y_{2} ζ=α1oldy1+α2oldy2代入得到
( K 11 + K 22 − 2 K 12 ) α 2 n e w , u n c = y 2 ( ( K 11 + K 22 − 2 K 12 ) α 2 o l d y 2 + y 2 − y 1 + g ( x 1 ) − g ( x 2 ) ) = ( K 11 + K 22 − 2 K 12 ) α 2 o l d + y 2 ( E 1 − E 2 ) \left(K_{11}+K_{22}-2 K_{12}\right) \alpha_{2}^{{new}, {unc}}\\= y_{2}\left(\left(K_{11}+K_{22}-2 K_{12}\right) \alpha_{2}^{{old}} y_{2}+y_{2}-y_{1}+g\left(x_{1}\right)-g\left(x_{2}\right)\right)\\=\left(K_{11}+K_{22}-2 K_{12}\right) \alpha_{2}^{{ old }}+y_{2}\left(E_{1}-E_{2}\right) (K11+K222K12)α2new,unc=y2((K11+K222K12)α2oldy2+y2y1+g(x1)g(x2))=(K11+K222K12)α2old+y2(E1E2) η = K 11 + K 22 − 2 K 12 \eta=K_{11}+K_{22}-2 K_{12} η=K11+K222K12代入于是得到 α 2 n e w , u n c = α 2 o l d + y 2 ( E 1 − E 2 ) η \alpha_{2}^{{new}, {unc}}=\alpha_{2}^{{old}}+\frac{y_{2}\left(E_{1}-E_{2}\right)}{\eta} α2new,unc=α2old+ηy2(E1E2)要使其满足不等式约束必将其限制在区间 [ L , H ] [L,H] [L,H]内,从而得到 α 2 n e w \alpha_2 ^{new} α2new表达式 ( 13 ) (13) (13),由等式约束 ( 8 ) (8) (8)得到 α 1 n e w \alpha_1 ^{new} α1new的表达式 ( 14 ) α 1 n e w = α 1 o l d + y 1 y 2 ( α 2 o l d − α 2 n e w ) (14)\alpha_{1}^{{new}}=\alpha_{1}^{{old}}+y_{1} y_{2}\left(\alpha_{2}^{{old}}-\alpha_{2}^{{new}}\right) (14)α1new=α1old+y1y2(α2oldα2new),于是得到最优化问题 ( 7 ) ∼ ( 9 ) (7)\sim(9) (7)(9)的解 ( α 1 n e w , α 2 n e w ) (\alpha_{1}^{{new}},\alpha_{2}^{{new}}) (α1new,α2new)

变量的选择方法

SMO算法在每个子问题中选择两个变量优化,其中至少一个变量是违反KKT条件的
1.第1个变量的选择
SMO称选择第1个变量的过程为外层循环,外层循环在训练样本中选取违反KKT条件最严重的样本点,并将其对应的变量作为第1个变量,检验训练样本点 ( x i , y i ) \left(x_{i}, y_{i}\right) (xi,yi)是否满足KKT条件,即 α i = 0 ⇔ y i g ( x i ) ⩾ 1 ( 4 ) \alpha_{i}=0 \Leftrightarrow y_{i} g\left(x_{i}\right) \geqslant 1 \quad(4) αi=0yig(xi)1(4) 0 &lt; α i &lt; C ⇔ y i g ( x i ) = 1 ( 5 ) 0&lt;\alpha_{i}&lt;C \Leftrightarrow y_{i} g\left(x_{i}\right)=1 \quad(5) 0<αi<Cyig(xi)=1(5) α i = C ⇔ y i g ( x i ) ⩽ 1 ( 6 ) \alpha_{i}=C \Leftrightarrow y_{i} g\left(x_{i}\right) \leqslant 1 \quad(6) αi=Cyig(xi)1(6)其中, g ( x i ) = ∑ j = 1 N α j y j K ( x i , x j ) + b g\left(x_{i}\right)=\sum_{j=1}^{N} \alpha_{j} y_{j} K\left(x_{i}, x_{j}\right)+b g(xi)=j=1NαjyjK(xi,xj)+b
该检验是在 ε \varepsilon ε范围内进行的,在检验过程中,外层循环首先遍历所有满足条件 0 &lt; α i &lt; C 0&lt;\alpha_{i}&lt;C 0<αi<C的样本点,即在间隔边界上的支持向量点,检验它们是否满足KKT条件,如果这些样本点都满足KKT条件,那么遍历整个训练集,检验它们是否满足KKT条件.
2.第2个变量的选择
SMO称选择第2个变量的过程称为内层循环,假设在外层循环中已经找到第一个变量 α 1 \alpha_1 α1,现在要在内层循环中找第2个变量 α 2 \alpha_2 α2第2个变量选择的标准是希望能使 α 2 \alpha_2 α2有足够大的变化.
由式 ( 12 ) (12) (12) ( 14 ) (14) (14)可知, α 2 n e w \alpha_2 ^{new} α2new是依赖于 ∣ E 1 − E 2 ∣ |E_1-E_2| E1E2的,为了加快计算速度,一种简单的做法是选择 α 2 \alpha_2 α2,使其对应的
∣ E 1 − E 2 ∣ |E_1-E_2| E1E2最大,因 α 1 \alpha_1 α1已定, E 1 E_1 E1也确定了,如果 E 1 E_1 E1是正的,那么选择最小的 E i E_i Ei作为 E 2 E_2 E2,如果 E 1 E_1 E1是负的,那么选择最大的 E i E_i Ei作为 E 2 E_2 E2,为了节省计算时间,将所有 E i E_i Ei值保存在一个列表中.
在特殊情况下,如果内层循环通过以上方法选择的 α 2 \alpha_2 α2不能使目标函数有足够的下降,那么采用以下启发式规则继续选择 α 2 \alpha_2 α2,遍历在间隔边界上的支持向量点,依次将其对应的变量作为 α 2 \alpha_2 α2试用,直到目标函数有足够的下降,若找不到合适的 α 2 \alpha_2 α2,那么遍历训练数据集;若仍找不到合适的 α 2 \alpha_2 α2。则放弃第1个 α 1 \alpha_1 α1,再通过外层循环寻求另外的 α 1 \alpha_1 α1
3.计算阈值 b b b和差值 E i E_i Ei
在每次完成两个变量的优化后,都要重新计算阈值 b b b,当 0 &lt; α 1 n e w &lt; C 0&lt;\alpha_{1}^{{ new }}&lt;C 0<α1new<C时,由KKT条件知:
∑ i = 1 N α i y i K i 1 + b = y 1 \sum_{i=1}^{N} \alpha_{i} y_{i} K_{i 1}+b=y_{1} i=1NαiyiKi1+b=y1于是 b 1 n e w = y 1 − ∑ i = 3 N α i y i K i 1 − α 1 n a w y 1 K 11 − α 2 n a w y 2 K 21 ( 16 ) b_{1}^{{new}}=y_{1}-\sum_{i=3}^{N} \alpha_{i} y_{i} K_{i 1}-\alpha_{1}^{{naw}} y_{1} K_{11}-\alpha_{2}^{{naw}} y_{2} K_{21} \quad(16) b1new=y1i=3NαiyiKi1α1nawy1K11α2nawy2K21(16) E 1 E_1 E1的定义式有
E 1 = ∑ i = 3 N α i y i K i 1 + α 1 o l d y 1 K 11 + α 2 o l d y 2 K 21 + b o l d − y 1 E_{1}=\sum_{i=3}^{N} \alpha_{i} y_{i} K_{i 1}+\alpha_{1}^{{ old }} y_{1} K_{11}+\alpha_{2}^{ { old }} y_{2} K_{21}+b^{ { old }}-y_{1} E1=i=3NαiyiKi1+α1oldy1K11+α2oldy2K21+boldy1 ( 16 ) (16) (16)的前两项可写成: y 1 − ∑ i = 3 N α i y i K n = − E 1 + α 1 o l d y 1 K 11 + α 2 o l d y 2 K 21 + b o l d y_{1}-\sum_{i=3}^{N} \alpha_{i} y_{i} K_{n}=-E_{1}+\alpha_{1}^{ { old }} y_{1} K_{11}+\alpha_{2}^{{ old }} y_{2} K_{21}+b^{ { old }} y1i=3NαiyiKn=E1+α1oldy1K11+α2oldy2K21+bold带入式 ( 16 ) (16) (16)可得 b 1 n e w = − E 1 − y 1 K 11 ( α 1 n e w − α 1 o l d ) − y 2 K 21 ( α 2 n e w − α 2 o l d ) + b o l d b_{1}^{{new}}=-E_{1}-y_{1} K_{11}\left(\alpha_{1}^{{new}}-\alpha_{1}^{{old}}\right)-y_{2} K_{21}\left(\alpha_{2}^{{new}}-\alpha_{2}^{{old}}\right)+b^{{old}} b1new=E1y1K11(α1newα1old)y2K21(α2newα2old)+bold同样,如果 0 &lt; α 2 n e w &lt; C 0&lt;\alpha_{2}^{{ new }}&lt;C 0<α2new<C,那么 b 2 n e w = − E 2 − y 1 K 12 ( α 1 n e w − α 1 o l d ) − y 2 K 22 ( α 2 n e w − α 2 o l d ) + b o l d b_{2}^{{new}}=-E_{2}-y_{1} K_{12}\left(\alpha_{1}^{{new}}-\alpha_{1}^{{old}}\right)-y_{2} K_{22}\left(\alpha_{2}^{{new}}-\alpha_{2}^{{old}}\right)+b^{{old}} b2new=E2y1K12(α1newα1old)y2K22(α2newα2old)+bold如果 α 1 n e w , α 2 n e w \alpha_1 ^{new},\alpha_2 ^{new} α1new,α2new同时满足条件 0 &lt; α i n e w &lt; C , i = 1 , 2 0&lt;\alpha_{i}^{{new}}&lt;C, \quad i=1,2 0<αinew<C,i=1,2,那么 b 1 n e w = b 2 n e w b_{1}^{{new}}=b_{2}^{{new}} b1new=b2new,如果 α 1 n e w , α 2 n e w \alpha_1 ^{new},\alpha_2 ^{new} α1new,α2new,是 0 0 0 C C C,那么 b 1 n e w , b 2 n e w b_1 ^{new},b_2 ^{new} b1new,b2new,以及它们之间的数都是符合KKT条件的阈值,这时选择它们的中点作为 b 2 n e w b_2 ^{new} b2new.在每次完成两个变量的优化后,还必须更新对应的的 E i E_i Ei值,并将它们保存在列表中, E i E_i Ei值的更新要用到 b 2 n e w b_2 ^{new} b2new值,以及所有支持向量对应的 α j \alpha_j αj:
E i n e w = ∑ S y j α j K ( x i , x j ) + b n e w − y i E_{i}^{{new}}=\sum_{S} y_{j} \alpha_{j} K\left(x_{i}, x_{j}\right)+b^{{new}}-y_{i} Einew=SyjαjK(xi,xj)+bnewyi其中, S S S是所有支持向量 x j x_j xj的集合.

SMO算法流程

输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ &ThinSpace; , ( x N , y N ) } T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\} T={(x1,y1),(x2,y2),,(xN,yN)}
其中, x i ∈ X = R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , ⋯ &ThinSpace; , N x_{i} \in \mathcal{X}=\mathbf{R}^{n}, \quad y_{i} \in \mathcal{Y}=\{+1,-1\}, \quad i=1,2, \cdots, N xiX=Rn,yiY={+1,1},i=1,2,,N,精度 ε \varepsilon ε
输出:近似解 α ^ \hat{\alpha} α^
(1)取初值 α ( 0 ) = 0 \alpha^{(0)}=0 α(0)=0,令 k = 0 k=0 k=0;
(2)选取优化变量 α 1 ( k ) , α 2 ( k ) \alpha_{1}^{(k)}, \alpha_{2}^{(k)} α1(k),α2(k),解析求解两个变量的最优化问题 ( 7 ) ∼ ( 9 ) (7)\sim(9) (7)(9),求得最优解 α 1 ( k + 1 ) , α 2 ( k + 1 ) \alpha_{1}^{(k+1)}, \alpha_{2}^{(k+1)} α1(k+1),α2(k+1),更新 α \alpha α α k + 1 \alpha^{k+1} αk+1
(3)若在精度 ε \varepsilon ε范围内满足停机条件
∑ i = 1 N α i y i = 0 \sum_{i=1}^{N} \alpha_{i} y_{i}=0 i=1Nαiyi=0 0 ⩽ α i ⩽ C , i = 1 , 2 , ⋯ &ThinSpace; , N 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2, \cdots, N 0αiC,i=1,2,,N y i ⋅ g ( x i ) = { ⩾ 1 , { x i ∣ α i = 0 } = 1 , { x i ∣ 0 &lt; α i &lt; C } ⩽ 1 , { x i ∣ α i = C } y_{i} \cdot g\left(x_{i}\right)=\left\{\begin{array}{ll}{\geqslant 1,} &amp; {\left\{x_{i} | \alpha_{i}=0\right\}} \\ {=1,} &amp; {\left\{x_{i} | 0&lt;\alpha_{i}&lt;C\right\}} \\ {\leqslant 1,} &amp; {\left\{x_{i} | \alpha_{i}=C\right\}}\end{array}\right. yig(xi)=1,=1,1,{xiαi=0}{xi0<αi<C}{xiαi=C}其中, g ( x i ) = ∑ j = 1 N α j y j K ( x j , x i ) + b g\left(x_{i}\right)=\sum_{j=1}^{N} \alpha_{j} y_{j} K\left(x_{j}, x_{i}\right)+b g(xi)=j=1NαjyjK(xj,xi)+b则转(4);否则令 k = k + 1 k=k+1 k=k+1,转(2);
(4) 取 α ^ = α ( k + 1 ) \hat{\alpha}=\alpha^{(k+1)} α^=α(k+1)

注:第一轮迭代由于没有支持向量,不迭代 b b b E E E.
对于每次迭代选择 α i \alpha_i αi α j \alpha_j αj的启发式方法,其包括以下两个步骤:
(1)先扫描所有乘子,把第一个违反KKT条件的作为更新对象,令为 α j \alpha_j αj
(2)在所有不违反KKT条件的乘子中,选择使 ∣ E i − E j ∣ \left|E_{i}-E_{j}\right| EiEj最大的 α i \alpha_i αi

需要注意的是,每次更新完所选的 α i \alpha_i αi α j \alpha_j αj后,都需要重新计算 b , E i b,E_i b,Ei.

参考:
李航《统计学习方法》
http://www.cnblogs.com/pinard/p/6111471.html
https://blog.youkuaiyun.com/m0_37622530/article/details/80933353
支持向量机通俗导论(理解SVM的三层境界)
https://blog.youkuaiyun.com/v_july_v/article/details/7624837

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值