全称:序列最小最优化算法(sequential minimal optimization)
推导
已知 SVM 的目标函数为:
m i n α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C , i = 1 , 2 , . . . , N min_{\alpha} \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^N\alpha_i \\ s.t. \sum_{i=1}^N\alpha_iy_i=0 \\ 0 \leq \alpha_i \leq C, i=1,2,...,N minα21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤C,i=1,2,...,N
由约束条件可知,对两个变量 α 1 , α 2 \alpha1, \alpha2 α1,α2,有:
α 1 y 1 + α 2 y 2 = − ∑ i = 3 N α n y n \alpha_1y_1 + \alpha_2y_2 = -\sum_{i=3}^N\alpha_ny_n α1y1+α2y2=−i=3∑Nαnyn
令等式右边为一个常数 k(自己设),再将 α 2 \alpha_2 α2 用 α 1 \alpha_1 α1 表示,则原始问题变成单变量二次规划问题的解。
将原始问题表示成由 α 1 , α 2 \alpha_1, \alpha_2 α1,α2 表示的表示式,如下所示:
原 式 = 1 2 α 1 2 K 11 + 1 2 α 2 2 K 22 + 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 + 1 2 ∑ i = 3 N ∑ j = 3 N α i α j y i y j K i j − ∑ i = 3 N α i 原式 = \frac{1}{2} \alpha_1^2K_{11} +\frac{1}{2}\alpha_2^2K_{22} + y_1y_2K_{12}\alpha_1\alpha_2 -(\alpha_1 + \alpha_2) + y_1\alpha_1\sum_{i=3}^Ny_i\alpha_iK_{i1} + y_2\alpha_2\sum_{i=3}^Ny_i\alpha_iK_{i2} + \frac{1}{2}\sum_{i=3}^N\sum_{j=3}^{N}\alpha_i\alpha_jy_iy_jK_{ij} - \sum_{i=3}^N\alpha_i 原式=21α12K11+21α22K22+y1y2K12α1α2−(α1+α2)+y1α1i=3∑NyiαiKi1+y2α2i=3∑NyiαiKi2+21i=3∑Nj=3∑NαiαjyiyjKij−i=3∑Nαi
其中令最后两项 1 2 ∑ i = 3 N ∑ j = 3 N α i α j y i y j K i j − ∑ i = 3 N α i = c o n s t a n t \frac{1}{2}\sum_{i=3}^N\sum_{j=3}^{N}\alpha_i\alpha_jy_iy_jK_{ij} - \sum_{i=3}^N\alpha_i = constant 21∑i=3N∑j=3NαiαjyiyjKij−∑i=3Nαi=constant,令 v i = ∑ j = 3 N y j α j K i j v_i = \sum_{j=3}^N y_j\alpha_j K_{ij} vi=∑j=3NyjαjKij,
那么
原 式 = 1 2 α 1 2 K 11 + 1 2 α 2 2 K 22 + y 1 y 2 K 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 α 1 v 1 + y 2 α 2 v 2 + c o n s t a n t 原式= \frac{1}{2} \alpha_1^2K_{11} +\frac{1}{2}\alpha_2^2K_{22} + y_1y_2K_{12}\alpha_1\alpha_2 -(\alpha_1 + \alpha_2) + y_1\alpha_1v_1 + y_2\alpha_2v_2 + constant 原式=21α12K11+21α22K22+y1y2K12α1α2−(α1+α2)+y1α1v1+y2α2v2+constant
将 α 1 \alpha_1 α1 用 α 2 \alpha_2 α2 表示,再带入原式:
m i n Φ ( α 2 ) = 1 2 ( k − y 2 α 2 ) 2 K 11 + 1 2 α 2 2 K 22 + y 2 K 12 ( k − y 2 α 2 ) α 2 − ( k − y 2 α 2 ) y 1 − α 2 + ( k − y 2 α 2 ) v 1 + y 2 α 2 v 2 min\Phi(\alpha_2) = \frac{1}{2}(k-y_2\alpha_2)^2K_{11}+\frac{1}{2}\alpha_2^2K_{22}+y_2K_{12}(k-y_2\alpha_2)\alpha_2-(k-y_2\alpha_2)y_1-\alpha_2+(k-y_2\alpha_2)v_1 + y_2\alpha_2v_2 minΦ(α2)=21(k−y2α2)2K11+21α22K22+y2K12(k−y2α2)α2−(k−y2α2)y1−α2+(k−y2α2)v1+y2α2v2
求偏导:
∂ Φ ( α 2 ) ∂ α 2 = ( K 11 + K 22 − 2 K 12 ) α 2 − K 11 k y 2 + K 12 k y 2 + y 1 y 2 − 1 − v 1 y 2 + v 2 y 2 = 0 \frac{\partial \Phi(\alpha_2)}{\partial \alpha_2} = (K_{11}+K_{22}-2K_{12})\alpha_2-K_{11}ky_2+K_{12}ky_2+y_1y_2-1-v_1y_2+v_2y_2=0 ∂α2∂Φ(α2)=(K11+K22−2K12)α2−K11ky2+K12ky2+y1y2−1−v1y2+v2y2=0
令
f ( x ) = ∑ i = 1 N α i y i K ( x i , x ) + b f(x) = \sum_{i=1}^N\alpha_iy_iK(x_i,x) + b f(x)=i=1∑NαiyiK(xi,x)+b
那么:
v 1 = f ( x 1 ) − ∑ j = 1 2 y j α j K 1 j − b v 2 = f ( x 2 ) − ∑ j = 1 2 y j α j K 2 j − b v_1=f(x_1) - \sum_{j=1}^2y_j\alpha_jK_{1j} - b \\ v_2=f(x_2) - \sum_{j=1}^2y_j\alpha_jK_{2j} - b v1=f(x1)−j=1∑2yjαjK1j−bv2=f(x2)−j=1∑2yjαjK2j−b
将 k = α 1 y 1 + α 2 y 2 k = \alpha_1y_1 + \alpha_2y_2 k=α1y1+α2y2带入上述偏导式:
( 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 + f ( x 1 ) − f ( x 2 ) ) (K_{11}+K_{22}-2K_{12})\alpha_2^{new,unc} = y_2((K_{11}+K_{22}-2K_{12})\alpha_2^{old}y_2+y_2-y_1+f(x_1)-f(x_2)) (K11+K22−2K12)α2new,unc=y2((K11+K22−2K12)α2oldy2+y2−y1+f(x1)−f(x2))
其中 a l p h a 2 n e w , u n c alpha_2^{new,unc} alpha2new,unc 代表优化后的未裁剪的 α 2 \alpha_2 α2,对应优化前的 α 2 o l d \alpha_2^{old} α2old。
令:
误 差 E i = f ( x i ) − y i , η = K 11 + K 22 − 2 K 12 误差 \ \ E_i=f(x_i)- y_i, \\ \eta=K_{11}+K_{22}-2K_{12} 误差 Ei=f(xi)−yi,η=K11+K22−2K12
那么:
α 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(E_1-E_2)}{\eta} α2new,unc=α2old+ηy2(E1−E2)
因为 α i ≤ C \alpha_i \leq C αi≤C, 所以 α 1 , α 2 \alpha_1, \alpha_2 α1,α2 的约束可以表示成如下两个图形:
原本的约束为: 0 ≤ α i ≤ C 0 \leq \alpha_i \leq C 0≤αi≤C, 现在变为 L ≤ α i ≤ H L \leq \alpha_i \leq H L≤αi≤H.
L, H分别为上图中 α 2 \alpha_2 α2 的两个边界点。
若 y 1 ≠ y 2 y_1 \neq y_2 y1̸=y2,则:
L = m a x ( 0 , α 2 o l d − α 1 o l d ) , H = m i n ( C , C + α 2 o l d − α 1 o l d ) L = max(0, \alpha_2^{old}-\alpha_1^{old}), H = min(C, C+\alpha_2^{old}-\alpha_1^{old}) L=max(0,α2old−α1old),H=min(C,C+α2old−α1old)
若 y 1 = y 2 y_1 = y_2 y1=y2, 则:
L = m a x ( 0 , a 2 o l d + α 1 o l d − C ) , H = m i n ( C , α 2 o l d + α 1 o l d ) L = max(0, a_2^{old} + \alpha_1^{old} - C), H = min(C, \alpha_2^{old} + \alpha_1^{old}) L=max(0,a2old+α1old−C),H=min(C,α2old+α1old)
那么经剪辑后:
α 2 = { H , α 2 n e w , u n c > H a l p h a 2 n e w , u n c , L ≤ α 2 n e w , u n c ≤ H L , α 2 n e w , u n c < H \alpha_2=\begin{cases} H, \ \ \alpha_2^{new, unc} >H \\ alpha_2^{new, unc}, \ \ L \leq \alpha_2^{new,unc}\leq H \\ L, \ \ \alpha_2^{new,unc}<H \end{cases} α2=⎩⎪⎨⎪⎧H, α2new,unc>Halpha2new,unc, L≤α2new,unc≤HL, α2new,unc<H
由 α 1 o l d y 1 + α 2 o l d = α 1 n e w y 1 + α 2 n e w \alpha_1^{old}y_1+\alpha_2^{old} = \alpha_1^{new}y_1+\alpha_2^{new} α1oldy1+α2old=α1newy1+α2new ,得:
α 1 n e w = α 1 o l d + y 1 y 2 α 2 n e w \alpha_1^{new} = \alpha_1^{old} + y_1y_2\alpha_2^{new} α1new=α1old+y1y2α2new
有了变量的求解公式之后,就是如何选择变量了。
首先要理解 smo 算法的思路:如果所有变量都满足 KKT 条件,那么最优化问题的解就得到了。(关于 kkt 条件,可以看这篇文章:http://jacoxu.com/最优化理论与kkt条件/)
那么在我们选择的两个变量中,至少有一个是违反 kkt 条件的。对另一个变量,我们希望它是目标函数值减小得最快,但这样比较复杂,第二个变量的选择标准是能够有足够大的变化。
因为 α 2 \alpha_2 α2 依赖于 ∣ E 1 − E 2 ∣ |E_1-E_2| ∣E1−E2∣,所以选择使 ∣ E 1 − E 2 ∣ |E_1 - E_2| ∣E1−E2∣ 变化最大的 α 2 \alpha_2 α2。
计算 b 值
每次完成优化后,都要重新计算 b。
当 0 < α 1 n e w < C 0 < \alpha_1^{new} < C 0<α1new<C 时,满足 y i f ( x i ) = 1 y_if(x_i) = 1 yif(xi)=1(此时所有满足条件的点为支持向量),即:
∑ i = 1 N α i y i K i 1 + b = y 1 \sum_{i=1}^N\alpha_iy_iK_{i1} + b = y_1 i=1∑NαiyiKi1+b=y1
b 1 n e w = y 1 − ∑ i = 3 N α i y i K i 1 − α 1 n e w y 1 K 11 − α 2 n e w y 2 K 21 b_1^{new} = y_1 - \sum_{i=3}^N\alpha_i y_i K_{i1} - \alpha_1^{new}y_1K_{11} - \alpha_2^{new}y_2K_{21} b1new=y1−i=3∑NαiyiKi1−α1newy1K11−α2newy2K21
又:
E 1 = f ( x 1 ) − y 1 = ∑ i = 3 N α i y i K i 1 + α 1 n e w y 1 K 11 + α 2 n e w y 2 K 21 + b o l d − y 1 E_1 = f(x_1)-y_1 =\sum_{i=3}^N\alpha_i y_i K_{i1} + \alpha_1^{new}y_1K_{11} +\alpha_2^{new}y_2K_{21}+b^{old} - y_1 E1=f(x1)−y1=i=3∑NαiyiKi1+α1newy1K11+α2newy2K21+bold−y1
所以:
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_1K_{11}(\alpha_1^{new}-\alpha_1^{old} - y_2K_{21}(\alpha_2^{new}-\alpha_2^{old}) + b^{old}) b1new=−E1−y1K11(α1new−α1old−y2K21(α2new−α2old)+bold)
同理可得 b 2 n e w b_2^{new} b2new。
对求得的所有 b i b_i bi求平均值。
先写到这里,并不完善,待更新。。。
参考:
周志华 《机器学习》
李航 《统计学习方法》
https://blog.csdn.net/luoshixian099/article/details/51227754