个人学习笔记(九)非线性支持向量机与SMO算法

       前面两篇文章讨论的都是线性分类问题,但有时分类问题是非线性的,这时可以使用非线性支持向量机。

1、核技巧

       核技巧应用到支持向量机,其基本想法就是通过一个非线性变换将输入空间(欧式空间 R n R^n Rn或离散集合)对应于一个特征空间(希尔伯特空间 H H H),然后在特征空间里用线性分类学习方法学习分类模型。
       接着介绍核函数的概念。设 X X X是输入空间, H H H是特征空间,如果存在一个从 X X X H H H的映射
ϕ ( x ) : X → H \phi(x):X\to H ϕ(x):XH       使得对所有的 x , z ∈ X x,z\in X x,zX,函数 K ( x , z ) K(x,z) K(x,z)满足条件
K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x,z)=\phi(x)\cdot\phi(z) K(x,z)=ϕ(x)ϕ(z)       则称 K ( x , z ) K(x,z) K(x,z)为核函数,式中 ϕ ( x ) ⋅ ϕ ( z ) \phi(x)\cdot\phi(z) ϕ(x)ϕ(z) ϕ ( x ) \phi(x) ϕ(x) ϕ ( z ) \phi(z) ϕ(z)的内积。
       通常直接定义并计算 K ( x , z ) K(x,z) K(x,z)比较容易,而通过 ϕ ( x ) \phi(x) ϕ(x) ϕ ( z ) \phi(z) ϕ(z)计算 K ( x , z ) K(x,z) K(x,z)比较复杂,因此核技巧的想法是,只定义核函数 K ( x , z ) K(x,z) K(x,z)而不显式地定义映射函数 ϕ \phi ϕ
       注意到在线性支持向量机的对偶问题中,无论是目标函数还是分离超平面的 w , b w,b w,b都只涉及输入实例与实例之间的内积,因此将内积 x i ⋅ x j x_i\cdot x_j xixj K ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j ) K(x_i,x_j)=\phi(x_i)\cdot\phi(x_j) K(xi,xj)=ϕ(xi)ϕ(xj)来代替。当映射函数 ϕ \phi ϕ是非线性函数时,学习到的支持向量机是非线性分类模型。

2、正定核

       核技巧通过直接定义核函数 K ( x , z ) K(x,z) K(x,z)的表达式,避免了计算 ϕ ( x ) \phi(x) ϕ(x) ϕ ( z ) \phi(z) ϕ(z)再求取它们内积的过程,那么我们如何得知定义的这个 K ( x , z ) K(x,z) K(x,z)是否是核函数呢?或者说,函数 K ( x , z ) K(x,z) K(x,z)满足什么条件才能成为核函数?
       假设 K ( x , z ) K(x,z) K(x,z)是定义在 X × X X\times X X×X上的对称函数,且对任意的 x 1 , x 2 , ⋯   , x m ∈ X x_1,x_2,\cdots,x_m\in X x1,x2,,xmX K ( x , z ) K(x,z) K(x,z)关于 x 1 , x 2 , ⋯   , x m x_1,x_2,\cdots,x_m x1,x2,,xm G r a m Gram Gram矩阵是半正定的。可以依据函数 K ( x , z ) K(x,z) K(x,z)构成一个希尔伯特空间(Hilbert space),具体步骤就不细说了,大致是:首先定义映射 ϕ \phi ϕ并构成向量空间 S S S,然后再 S S S上定义内积构成内积空间,最后再将 S S S完备化构成希尔伯特空间。
       下面阐述 K ( x , z ) K(x,z) K(x,z)是正定核的充要条件。设 K : X × X → R K:X\times X\to R K:X×XR是对称函数,则 K ( x , z ) K(x,z) K(x,z)是正定核的充要条件是对任意 x i ∈ X x_i\in X xiX K ( x , z ) K(x,z) K(x,z)对应的 G r a m Gram Gram矩阵 K = [ K ( x i , x j ) ] m × m K=[K(x_i,x_j)]_{m\times m} K=[K(xi,xj)]m×m是半正定矩阵。
       首先证明定理的必要性。由于 K ( x , z ) K(x,z) K(x,z) X × X X\times X X×X上的正定核,存在从 X X X到希尔伯特空间 H H H的映射 ϕ \phi ϕ,使得
K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x,z)=\phi(x)\cdot\phi(z) K(x,z)=ϕ(x)ϕ(z)       对任意 x 1 , x 2 , ⋯   , x m x_1,x_2,\cdots,x_m x1,x2,,xm,构造 K ( x , z ) K(x,z) K(x,z) G r a m Gram Gram矩阵
[ K i j ] m × m = [ K ( x i , x j ) ] m × m [K_{ij}]_{m\times m}=[K(x_i,x_j)]_{m\times m} [Kij]m×m=[K(xi,xj)]m×m       对任意 c 1 , c 2 , ⋯   , c m ∈ R c_1,c_2,\cdots,c_m\in R c1,c2,,cmR,有
∑ i , j = 1 m c i c j K i j = ∑ i , j = 1 m c i c j [ ϕ ( x i ) ⋅ ϕ ( x j ) ] = ∑ i = 1 m c i ϕ ( x i ) ⋅ ∑ j = 1 m c j ϕ ( x j ) \sum_{i,j=1}^mc_ic_jK_{ij}=\sum_{i,j=1}^mc_ic_j[\phi(x_i)\cdot\phi(x_j)]=\sum_{i=1}^mc_i\phi(x_i)\cdot\sum_{j=1}^mc_j\phi(x_j) i,j=1mcicjKij=i,j=1mcicj[ϕ(xi)ϕ(xj)]=i=1mciϕ(xi)j=1mcjϕ(xj)       由于内积的左右两项相等,可得
∑ i , j = 1 m c i c j K i j ≥ 0 \sum_{i,j=1}^mc_ic_jK_{ij}\ge0 i,j=1mcicjKij0       即 K ( x , z ) K(x,z) K(x,z)关于 x 1 , x 2 , ⋯   , x m x_1,x_2,\cdots,x_m x1,x2,,xm G r a m Gram Gram矩阵是半正定的。
       接着证明定理的充分性。已知对称函数 K ( x , z ) K(x,z) K(x,z)对任意 x 1 , x 2 , ⋯   , x m x_1,x_2,\cdots,x_m x1,x2,,xm G r a m Gram Gram矩阵是半正定的,根据本节开头的定理,可以构造从 X X X到某个希尔伯特空间 H H H的映射
ϕ : x → K ( ⋅ , x ) \phi:x\to K(\cdot,x) ϕ:xK(,x)       由于核 K K K具有再生性,即
K ( ⋅ , x ) ⋅ K ( ⋅ , z ) = K ( x , z ) K(\cdot,x)\cdot K(\cdot,z)=K(x,z) K(,x)K(,z)=K(x,z)       因此
K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x,z)=\phi(x)\cdot\phi(z) K(x,z)=ϕ(x)ϕ(z)       这表明 K ( x , z ) K(x,z) K(x,z) X × X X\times X X×X上的核函数。
       因此在构造核函数时,可以通过判断 K ( x , z ) K(x,z) K(x,z)对任意 x i ∈ X x_i\in X xiX G r a m Gram Gram矩阵是否是半正定矩阵,来判断 K ( x , z ) K(x,z) K(x,z)是否是核函数。但验证 G r a m Gram Gram矩阵是否为半正定并不容易,因此在实际问题中往往应用已有的核函数。

3、常用核函数

       常用的核函数有多项式核函数(polynomial kernel function)
K ( x , z ) = ( x ⋅ z + 1 ) p K(x,z)=(x\cdot z+1)^p K(x,z)=(xz+1)p
       高斯核函数(Gaussian kernel function)
K ( x , z ) = e − ∣ ∣ x − z ∣ ∣ 2 2 σ 2 K(x,z)=e^{-\frac{||x-z||^2}{2\sigma^2}} K(x,z)=e2σ2xz2
       字符串核函数(string kernel function)

4、序列最小最优化算法

       支持向量机的学习可形式化为求解凸二次规划问题,虽然凸二次规划问题具有全局最优解且许多最优化算法均可求解,但当训练样本容量很大时,这些算法往往变得非常低效,这便引出了序列最小最优化(sequential minimal optimization, SMO)算法。
       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 \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 αmin 21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi s . t .   ∑ i = 1 N α i y i = 0 s.t. \sum_{i=1}^N\alpha_iy_i=0 s.t. i=1Nαiyi=0 0 ≤ α i ≤ C ,   i = 1 , 2 , ⋯   , N 0\le\alpha_i\le C, i=1,2,\cdots,N 0αiC, i=1,2,,N       SMO算法的基本思路是:由于KKT条件是该最优化问题的充要条件,如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。这时子问题可以通过解析方法求解,速度大大加快。子问题的两个变量,一个是违反KKT条件最严重的一个,另一由约束条件自动确定。
       由于 ∑ 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,其他变量 α i ( i = 3 , 4 , ⋯   , N ) \alpha_i(i=3,4,\cdots,N) αi(i=3,4,,N)是固定的,将最优化问题的目标函数与约束条件仅取与 α 1 , α 2 \alpha_1,\alpha_2 α1,α2有关的部分,可变为
min ⁡ α 1 , α 2   1 2 α 1 2 K 11 + 1 2 α 2 2 K 22 + α 1 α 2 y 1 y 2 K 12 − ( α 1 + α 2 ) + α 1 y 1 ∑ i = 3 N α i y i K 1 i + α 2 y 2 ∑ i = 3 N α i y i K 2 i \min_{\alpha_1,\alpha_2} \frac{1}{2}\alpha_1^2K_{11}+\frac{1}{2}\alpha_2^2K_{22}+\alpha_1\alpha_2y_1y_2K_{12}-(\alpha_1+\alpha_2)+\alpha_1y_1\sum_{i=3}^N\alpha_iy_iK_{1i}+\alpha_2y_2\sum_{i=3}^N\alpha_iy_iK_{2i} α1,α2min 21α12K11+21α22K22+α1α2y1y2K12(α1+α2)+α1y1i=3NαiyiK1i+α2y2i=3NαiyiK2i s . t .   α 1 y 1 + α 2 y 2 = − ∑ i = 3 N α i y i = ς s.t. \alpha_1y_1+\alpha_2y_2=-\sum_{i=3}^N\alpha_iy_i=\varsigma s.t. α1y1+α2y2=i=3Nαiyi=ς 0 ≤ α i ≤ C ,   i = 1 , 2 0\le\alpha_i\le C, i=1,2 0αiC, i=1,2       先观察两个约束条件,由于只有两个变量 α 1 , α 2 \alpha_1,\alpha_2 α1,α2,约束可以用二维空间表示。不等式约束使 ( α 1 , α 2 ) (\alpha_1,\alpha_2) (α1,α2)在方形 [ 0 , C ] × [ 0 , C ] [0,C]\times [0,C] [0,C]×[0,C]内;由于 y 1 , y 2 = ± 1 y_1,y_2=\pm 1 y1,y2=±1,等式约束使 ( α 1 , α 2 ) (\alpha_1,\alpha_2) (α1,α2)在平行于方形对角线的直线上,可能是斜向上的,也可能是斜向下的。
       根据约束条件的特点,可以先沿着等式约束的直线求 α 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
       为表述方便,引进记号
v i = ∑ j = 3 N α j y j K ( x i , x j ) ,   i = 1 , 2 v_i=\sum_{j=3}^N\alpha_jy_jK(x_i,x_j), i=1,2 vi=j=3NαjyjK(xi,xj), i=1,2       目标函数可以写成
W ( α 1 , α 2 ) = 1 2 α 1 2 K 11 + 1 2 α 2 2 K 22 + α 1 α 2 y 1 y 2 K 12 − ( α 1 + α 2 ) + α 1 y 1 v 1 + α 2 y 2 v 2 W(\alpha_1,\alpha_2)=\frac{1}{2}\alpha_1^2K_{11}+\frac{1}{2}\alpha_2^2K_{22}+\alpha_1\alpha_2y_1y_2K_{12}-(\alpha_1+\alpha_2)+\alpha_1y_1v_1+\alpha_2y_2v_2 W(α1,α2)=21α12K11+21α22K22+α1α2y1y2K12(α1+α2)+α1y1v1+α2y2v2       由于 α 1 y 1 = ς − α 2 y 2 \alpha_1y_1=\varsigma-\alpha_2y_2 α1y1=ςα2y2,即 α 1 = y 1 ( ς − α 2 y 2 ) \alpha_1=y_1(\varsigma-\alpha_2y_2) α1=y1(ςα2y2),代入上式得
W ( α 2 ) = 1 2 ( ς − α 2 y 2 ) 2 K 11 + 1 2 α 2 2 K 22 + ( ς − α 2 y 2 ) α 2 y 2 K 12 − y 1 ( ς − α 2 y 2 ) − α 2 + ( ς − α 2 y 2 ) v 1 + α 2 y 2 v 2 W(\alpha_2)=\frac{1}{2}(\varsigma-\alpha_2y_2)^2K_{11}+\frac{1}{2}\alpha_2^2K_{22}+(\varsigma-\alpha_2y_2)\alpha_2y_2K_{12}-y1(\varsigma-\alpha_2y_2)-\alpha_2+(\varsigma-\alpha_2y_2)v_1+\alpha_2y_2v_2 W(α2)=21(ςα2y2)2K11+21α22K22+(ςα2y2)α2y2K12y1(ςα2y2)α2+(ςα2y2)v1+α2y2v2       删去与 α 2 \alpha_2 α2无关的项
W ( α 2 ) = − ς α 2 y 2 K 11 + 1 2 α 2 2 K 11 + 1 2 α 2 2 K 22 + ς α 2 y 2 K 12 − α 2 2 K 12 + y 1 α 2 y 2 − α 2 − α 2 y 2 v 1 + α 2 y 2 v 2 W(\alpha_2)=-\varsigma\alpha_2y_2K_{11}+\frac{1}{2}\alpha_2^2K_{11}+\frac{1}{2}\alpha_2^2K_{22}+\varsigma\alpha_2y_2K_{12}-\alpha_2^2K_{12}+y_1\alpha_2y_2-\alpha_2-\alpha_2y_2v_1+\alpha_2y_2v_2 W(α2)=ςα2y2K11+21α22K11+21α22K22+ςα2y2K12α22K12+y1α2y2α2α2y2v1+α2y2v2       合并各项可得
W ( α 2 ) = 1 2 α 2 2 ( K 11 + K 22 − 2 K 12 ) + α 2 ( − ς y 2 K 11 + ς y 2 K 12 + y 1 y 2 − 1 − y 2 v 1 + y 2 v 2 ) W(\alpha_2)=\frac{1}{2}\alpha_2^2(K_{11}+K_{22}-2K_{12})+\alpha_2(-\varsigma y_2K_{11}+\varsigma y_2K_{12}+y_1y_2-1-y_2v_1+y_2v_2) W(α2)=21α22(K11+K222K12)+α2(ςy2K11+ςy2K12+y1y21y2v1+y2v2)       接着对 α 2 \alpha_2 α2求导,令其为0
∂ W ∂ α 2 = α 2 ( K 11 + K 22 − 2 K 12 ) − ς y 2 K 11 + ς y 2 K 12 + y 1 y 2 − 1 − y 2 v 1 + y 2 v 2 = 0 \frac{\partial W}{\partial\alpha_2}=\alpha_2(K_{11}+K_{22}-2K_{12})-\varsigma y_2K_{11}+\varsigma y_2K_{12}+y_1y_2-1-y_2v_1+y_2v_2=0 α2W=α2(K11+K222K12)ςy2K11+ςy2K12+y1y21y2v1+y2v2=0       由于1可以写作 y 2 2 y_2^2 y22,上式可变为
α 2 ( K 11 + K 22 − 2 K 12 ) = y 2 ( y 2 − y 1 + ς K 11 − ς K 12 + v 1 − v 2 ) \alpha_2(K_{11}+K_{22}-2K_{12})=y_2(y_2-y_1+\varsigma K_{11}-\varsigma K_{12}+v_1-v_2) α2(K11+K222K12)=y2(y2y1+ςK11ςK12+v1v2)       由于
v 1 = ∑ j = 3 N α j y j K 1 j = ∑ j = 1 N α j y j K 1 j − ∑ j = 1 2 α j y j K 1 j v_1=\sum_{j=3}^N\alpha_jy_jK_{1j}=\sum_{j=1}^{N}\alpha_jy_jK_{1j}-\sum_{j=1}^2\alpha_jy_jK_{1j} v1=j=3NαjyjK1j=j=1NαjyjK1jj=12αjyjK1j v 2 = ∑ j = 3 N α j y j K 2 j = ∑ j = 1 N α j y j K 2 j − ∑ j = 1 2 α j y j K 2 j v_2=\sum_{j=3}^N\alpha_jy_jK_{2j}=\sum_{j=1}^N\alpha_jy_jK_{2j}-\sum_{j=1}^2\alpha_jy_jK_{2j} v2=j=3NαjyjK2j=j=1NαjyjK2jj=12αjyjK2j       再引进一个记号
E i = ∑ j = 1 N α j y j K i j + b − y i ,   i = 1 , 2 E_i=\sum_{j=1}^N\alpha_jy_jK_{ij}+b-y_i, i=1,2 Ei=j=1NαjyjKij+byi, i=1,2       则 v 1 , v 2 v_1,v_2 v1,v2可表示为
v 1 = E 1 − b + y 1 − ∑ j = 1 2 α j y j K 1 j v_1=E_1-b+y_1-\sum_{j=1}^2\alpha_jy_jK_{1j} v1=E1b+y1j=12αjyjK1j v 2 = E 2 − b + y 2 − ∑ j = 1 2 α j y j K 2 j v_2=E_2-b+y_2-\sum_{j=1}^2\alpha_jy_jK_{2j} v2=E2b+y2j=12αjyjK2j       代入求导所得等式中
α 2 ( K 11 + K 22 − 2 K 12 ) = y 2 ( ς K 11 − ς K 12 + E 1 − E 2 − ∑ j = 1 2 α j y j K 1 j + ∑ j = 1 2 α j y j K 2 j ) \alpha_2(K_{11}+K_{22}-2K_{12})=y_2(\varsigma K_{11}-\varsigma K_{12}+E_1-E_2-\sum_{j=1}^2\alpha_jy_jK_{1j}+\sum_{j=1}^2\alpha_jy_jK_{2j}) α2(K11+K222K12)=y2(ςK11ςK12+E1E2j=12αjyjK1j+j=12αjyjK2j)       将 ς = α 1 o l d y 1 + α 2 o l d y 2 \varsigma=\alpha_1^{old}y_1+\alpha_2^{old}y_2 ς=α1oldy1+α2oldy2代入式中,得
α 2 n e w , u n c ( K 11 + K 22 − 2 K 12 ) = ( K 11 + K 22 − 2 K 12 ) α 2 o l d + y 2 ( E 1 − E 2 ) \alpha_2^{new,unc}(K_{11}+K_{22}-2K_{12})=(K_{11}+K_{22}-2K_{12})\alpha_2^{old}+y_2(E_1-E_2) α2new,unc(K11+K222K12)=(K11+K222K12)α2old+y2(E1E2)       即
α 2 n e w , u n c = α 2 o l d + y 2 ( E 1 − E 2 ) K 11 + K 22 − 2 K 12 \alpha_2^{new,unc}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{K_{11}+K_{22}-2K_{12}} α2new,unc=α2old+K11+K222K12y2(E1E2)       这便是未经剪辑的解,经剪辑后 α 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 L , α 2 n e w , u n c &lt; L \alpha_2^{new}=\left\{\begin{array}{rcl}H,&amp;\alpha_2^{new,unc}&gt;H\\\alpha_2^{new,unc},&amp;L\le\alpha_2^{new,unc}\le H\\L,&amp;\alpha_2^{new,unc}&lt;L\end{array}\right. α2new=H,α2new,unc,L,α2new,unc>HLα2new,uncHα2new,unc<L       式中, 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       由于 ( α 1 , α 2 ) (\alpha_1,\alpha_2) (α1,α2)在一条平行于方块对角线的直线上,所以这里 α 2 \alpha_2 α2不是简单的满足 0 ≤ α 2 ≤ C 0\le\alpha_2\le C 0α2C就可以了。如果 y 1 ̸ = y 2 y_1\not=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(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 = max ⁡ ( 0 , α 2 o l d + α 1 o l d − C ) ,   H = min ⁡ ( C , α 2 o l d + α 1 o l d ) L=\max(0,\alpha_2^{old}+\alpha_1^{old}-C), H=\min(C,\alpha_2^{old}+\alpha_1^{old}) L=max(0,α2old+α1oldC), H=min(C,α2old+α1old)       最后由 α 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 ) \alpha_1^{new}=\alpha_1^{old}+y_1y_2(\alpha_2^{old}-\alpha_2^{new}) α1new=α1old+y1y2(α2oldα2new)       接下来讨论SMO算法的两个变量具体怎么选择。
       首先是第一个变量的选择。在上一篇文章里讲述了线性支持向量机的KKT条件,例如其中的KKT对偶互补条件
α i ∗ [ y i ( w ∗ ⋅ x i + b ∗ ) − 1 + ξ i ∗ ] = 0 \alpha_i^*[y_i(w^*\cdot x_i+b^*)-1+\xi_i^*]=0 αi[yi(wxi+b)1+ξi]=0       其中
w ∗ = ∑ i = 1 N α i ∗ y i x i w^*=\sum_{i=1}^N\alpha_i^*y_ix_i w=i=1Nαiyixi       将上面的KKT对偶互补条件改造成核函数形式
α i ∗ [ y i ( ∑ j = 1 N α j ∗ y j K ( x j , x i ) + b ∗ ) − 1 + ξ i ∗ ] = 0 \alpha_i^*[y_i(\sum_{j=1}^N\alpha_j^*y_jK(x_j,x_i)+b^*)-1+\xi_i^*]=0 αi[yi(j=1NαjyjK(xj,xi)+b)1+ξi]=0       令 g ( x i ) = ∑ j = 1 N α j y j K ( x i , x j ) + b g(x_i)=\sum_{j=1}^N\alpha_jy_jK(x_i,x_j)+b g(xi)=j=1NαjyjK(xi,xj)+b       则KKT对偶互补条件为
α i [ y i g ( x i ) − 1 + ξ i ] = 0 \alpha_i[y_ig(x_i)-1+\xi_i]=0 αi[yig(xi)1+ξi]=0       若 α 1 = 0 \alpha_1=0 α1=0,考虑到下面的另外两个KKT条件
y i g ( x i ) − 1 + ξ i ≥ 0 y_ig(x_i)-1+\xi_i\ge0 yig(xi)1+ξi0 ξ i ≥ 0 \xi_i\ge0 ξi0       可以得到
y i g ( x i ) ≥ 1 − ξ i ≥ 1 y_ig(x_i)\ge1-\xi_i\ge1 yig(xi)1ξi1       若 0 &lt; α 1 &lt; C 0&lt;\alpha_1&lt;C 0<α1<C,根据KKT的对偶互补条件有
y i g ( x i ) − 1 + ξ i = 0 y_ig(x_i)-1+\xi_i=0 yig(xi)1+ξi=0       而结合下面这个KKT条件
▽ ξ i L ( w , b , ξ i , α i , μ i ) = C − α i − μ i = 0 \bigtriangledown_{\xi_i}L(w,b,\xi_i,\alpha_i,\mu_i)=C-\alpha_i-\mu_i=0 ξiL(w,b,ξi,αi,μi)=Cαiμi=0       又有
μ i = C − α i &gt; 0 \mu_i=C-\alpha_i&gt;0 μi=Cαi>0       于是,根据另一个KKT条件
μ i ξ i = 0 \mu_i\xi_i=0 μiξi=0       可以推出
ξ i = 0 \xi_i=0 ξi=0       这样,就得到了
y i g ( x i ) = 1 − ξ i = 1 y_ig(x_i)=1-\xi_i=1 yig(xi)=1ξi=1       若 α i = C \alpha_i=C αi=C,同样根据KKT的对偶互补条件有 y i g ( x i ) − 1 + ξ i = 0 y_ig(x_i)-1+\xi_i=0 yig(xi)1+ξi=0       根据上面提到的另一个KKT条件,有
μ i = C − α i = 0 \mu_i=C-\alpha_i=0 μi=Cαi=0       这样, ξ i \xi_i ξi不一定要为0了,其约束为
ξ i ≥ 0 \xi_i\ge0 ξi0       因此可以得到
y i g ( x i ) = 1 − ξ i ≤ 1 y_ig(x_i)=1-\xi_i\le1 yig(xi)=1ξi1       总结一下,便是选第一个变量的时候,要考察各样本点是否满足如下KKT条件,找出违反KKT条件最严重的样本点 α i = 0 ⇔ y i g ( x i ) ≥ 1 \alpha_i=0\Leftrightarrow y_ig(x_i)\ge1 αi=0yig(xi)1 0 &lt; α i &lt; C ⇔ y i g ( x i ) = 1 0&lt;\alpha_i&lt;C\Leftrightarrow y_ig(x_i)=1 0<αi<Cyig(xi)=1 α i = C ⇔ y i g ( x i ) ≤ 1 \alpha_i=C\Leftrightarrow y_ig(x_i)\le1 αi=Cyig(xi)1       SMO称选择第一个变量的过程为外层循环,外层循环首先遍历所有满足条件 0 &lt; α i &lt; C 0&lt;\alpha_i&lt;C 0<αi<C的样本点,即在间隔边界上的支持向量点。如果它们都满足KKT条件,那么遍历整个训练集,找出不满足KKT条件的样本点。
       SMO称选择第二个变量的过程为内层循环,假设已找到了第一个变量 α 1 \alpha_1 α1,第二个变量选择的标准是希望能使 α 2 \alpha_2 α2有足够大的变化。上面有公式
α 2 n e w , u n c = α 2 o l d + y 2 ( E 1 − E 2 ) K 11 + K 22 − 2 K 12 \alpha_2^{new,unc}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{K_{11}+K_{22}-2K_{12}} α2new,unc=α2old+K11+K222K12y2(E1E2)       可以看到, α 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最大。具体的,如果 E 1 &gt; 0 E_1&gt;0 E1>0,就选最小的 E i E_i Ei作为 E 2 E_2 E2;如果 E 1 &lt; 0 E_1&lt;0 E1<0,就选最大的 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,则放弃当前已选出的 α 1 \alpha_1 α1,通过外层循环找另外的 α 1 \alpha_1 α1
       最后介绍每次完成两个变量的优化后,更新 b b b E i E_i Ei的方法。
       当 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_iy_iK_{i1}+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 e w y 1 K 11 − α 2 n e w y 2 K 21 b_1^{new}=y_1-\sum_{i=3}^N\alpha_iy_iK_{i1}-\alpha_1^{new}y_1K_{11}-\alpha_2^{new}y_2K_{21} b1new=y1i=3NαiyiKi1α1newy1K11α2newy2K21       同理可得 b 2 n e w b_2^{new} b2new的表达式。如果 α 1 n e w , α 2 n e w \alpha_1^{new},\alpha_2^{new} α1new,α2new同时满足 0 &lt; α i n e w &lt; C 0&lt;\alpha_i^{new}&lt;C 0<αinew<C,那么 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或者 C C C,那么取 b 1 n e w b_1^{new} b1new b 2 n e w b_2^{new} b2new的中点作为 b n e w b^{new} bnew
       接着看 E i E_i Ei的更新方法,根据 E i E_i Ei g ( x i ) g(x_i) g(xi)的定义,有
E 1 = g ( x 1 ) − y 1 = ∑ j = 1 N α j y j K j 1 + b − y i E_1=g(x_1)-y_1=\sum_{j=1}^N\alpha_jy_jK_{j1}+b-y_i E1=g(x1)y1=j=1NαjyjKj1+byi       即 E i E_i Ei的更新规则如下
E i n e w = ∑ S y j α j K ( x i , x j ) + b n e w − y i E_i^{new}=\sum_Sy_j\alpha_jK(x_i,x_j)+b^{new}-y_i Einew=SyjαjK(xi,xj)+bnewyi       式中 S S S是所有支持向量 x j x_j xj的集合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值