全称:序列最小最优化算法(sequential minimal optimization)


推导
已知 SVM 的目标函数为:
minα12i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαis.t.i=1Nαiyi=00αiC,i=1,2,...,Nmin_{\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
由约束条件可知,对两个变量 α1,α2\alpha1, \alpha2,有:
α1y1+α2y2=i=3Nαnyn\alpha_1y_1 + \alpha_2y_2 = -\sum_{i=3}^N\alpha_ny_n
令等式右边为一个常数 k(自己设),再将 α2\alpha_2α1\alpha_1 表示,则原始问题变成单变量二次规划问题的解。
将原始问题表示成由 α1,α2\alpha_1, \alpha_2 表示的表示式,如下所示:
=12α12K11+12α22K22+y1y2K12α1α2(α1+α2)+y1α1i=3NyiαiKi1+y2α2i=3NyiαiKi2+12i=3Nj=3NαiαjyiyjKiji=3Nα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
其中令最后两项 12i=3Nj=3NαiαjyiyjKiji=3Nαi=constant\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,令 vi=j=3NyjαjKijv_i = \sum_{j=3}^N y_j\alpha_j K_{ij},
那么
=12α12K11+12α22K22+y1y2K12α1α2(α1+α2)+y1α1v1+y2α2v2+constant原式= \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
α1\alpha_1α2\alpha_2 表示,再带入原式:
minΦ(α2)=12(ky2α2)2K11+12α22K22+y2K12(ky2α2)α2(ky2α2)y1α2+(ky2α2)v1+y2α2v2min\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
求偏导:
Φ(α2)α2=(K11+K222K12)α2K11ky2+K12ky2+y1y21v1y2+v2y2=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

f(x)=i=1NαiyiK(xi,x)+bf(x) = \sum_{i=1}^N\alpha_iy_iK(x_i,x) + b
那么:
v1=f(x1)j=12yjαjK1jbv2=f(x2)j=12yjαjK2jbv_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
k=α1y1+α2y2k = \alpha_1y_1 + \alpha_2y_2带入上述偏导式:
(K11+K222K12)α2new,unc=y2((K11+K222K12)α2oldy2+y2y1+f(x1)f(x2))(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))
其中alpha2new,uncalpha_2^{new,unc} 代表优化后的未裁剪的α2\alpha_2,对应优化前的 α2old\alpha_2^{old}
令:
  Ei=f(xi)yi,η=K11+K222K12误差 \ \ E_i=f(x_i)- y_i, \\ \eta=K_{11}+K_{22}-2K_{12}
那么:
α2new,unc=α2old+y2(E1E2)η\alpha_2^{new,unc} = \alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}
因为 αiC\alpha_i \leq C, 所以 α1,α2\alpha_1, \alpha_2 的约束可以表示成如下两个图形:
smo 算法
原本的约束为:0αiC0 \leq \alpha_i \leq C, 现在变为 LαiHL \leq \alpha_i \leq H.
L, H分别为上图中 α2\alpha_2 的两个边界点。
y1y2y_1 \neq y_2,则:
L=max(0,α2oldα1old),H=min(C,C+α2oldα1old)L = max(0, \alpha_2^{old}-\alpha_1^{old}), H = min(C, C+\alpha_2^{old}-\alpha_1^{old})
y1=y2y_1 = y_2, 则:
L=max(0,a2old+α1oldC),H=min(C,α2old+α1old)L = max(0, a_2^{old} + \alpha_1^{old} - C), H = min(C, \alpha_2^{old} + \alpha_1^{old})

那么经剪辑后:
α2={H,  α2new,unc>Halpha2new,unc,  Lα2new,uncHL,  α2new,unc<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}
α1oldy1+α2old=α1newy1+α2new\alpha_1^{old}y_1+\alpha_2^{old} = \alpha_1^{new}y_1+\alpha_2^{new} ,得:
α1new=α1old+y1y2α2new\alpha_1^{new} = \alpha_1^{old} + y_1y_2\alpha_2^{new}


有了变量的求解公式之后,就是如何选择变量了。

首先要理解 smo 算法的思路:如果所有变量都满足 KKT 条件,那么最优化问题的解就得到了。(关于 kkt 条件,可以看这篇文章:http://jacoxu.com/最优化理论与kkt条件/)
那么在我们选择的两个变量中,至少有一个是违反 kkt 条件的。对另一个变量,我们希望它是目标函数值减小得最快,但这样比较复杂,第二个变量的选择标准是能够有足够大的变化
因为 α2\alpha_2 依赖于 E1E2|E_1-E_2|,所以选择使 E1E2|E_1 - E_2| 变化最大的 α2\alpha_2

计算 b 值
每次完成优化后,都要重新计算 b。
0<α1new<C0 < \alpha_1^{new} < C 时,满足 yif(xi)=1y_if(x_i) = 1(此时所有满足条件的点为支持向量),即:
i=1NαiyiKi1+b=y1\sum_{i=1}^N\alpha_iy_iK_{i1} + b = y_1
b1new=y1i=3NαiyiKi1α1newy1K11α2newy2K21b_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}
又:
E1=f(x1)y1=i=3NαiyiKi1+α1newy1K11+α2newy2K21+boldy1E_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
所以:
b1new=E1y1K11(α1newα1oldy2K21(α2newα2old)+bold)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})
同理可得 b2newb_2^{new}
对求得的所有 bib_i求平均值。

先写到这里,并不完善,待更新。。。


参考:
周志华 《机器学习》
李航 《统计学习方法》
https://blog.csdn.net/luoshixian099/article/details/51227754

相关文章: