SVM支持向量机+python代码复现(二)

KKT条件

​ 对于b的值,我们需要引入KKT条件,只要原问题和对偶问题是强对偶关系,那么我们就说其满足KKT条件,此处不做证明,感兴趣的读者可以自己查阅。对于我们此处要解决的问题,其一定满足以下条件
{ ∂ L ( w , b , λ ) ∂ w = 0 , ∂ L ( w , b , λ ) ∂ b = 0. λ i [ 1 − y i ( w T x i + b ) ] = 0. 1 − y i ( w T x i + b ) ≤ 0. λ i ≥ 0. \left\{ \begin{matrix} \frac{\partial{L(w,b,\lambda)}}{\partial{w}}=0,\frac{\partial{L(w,b,\lambda)}}{\partial{b}}=0. \\\lambda_i[1-y_i(w^Tx_i+b)]=0. \\1-y_i(w^Tx_i+b) \le0. \\\lambda_i \ge0. \end{matrix} \right. wL(w,b,λ)=0,bL(w,b,λ)=0.λi[1yi(wTxi+b)]=0.1yi(wTxi+b)0.λi0.
​ 对于KKT条件,因为 λ i [ 1 − y i ( w T x i + b ) ] = 0 \lambda_i[1-y_i(w^Tx_i+b)]=0 λi[1yi(wTxi+b)]=0,所以要么就是 λ i = 0 \lambda_i=0 λi=0,要么就是 1 − y i ( w T x i + b ) = 0 1-y_i(w^Tx_i+b)=0 1yi(wTxi+b)=0

我们要寻找b的表达式,显然在等式中,里面包含有b这个量,但倘若是 λ i = 0 \lambda_i=0 λi=0,那么等式中的b也会毫无意义,因此,为了寻找b,只能够在λ不为0的时候找到。所以
λ i [ 1 − y i ( w T x i + b ) ] = 0 → 1 − y i ( w T x i + b ) = 0 即 y i ( w T x i + b ) = 1 等式左右乘以 w T x i + b = y i 即 b = y i − w T x i = y i − ∑ i = 1 n λ i y i x i T x i \begin{equation} \begin{aligned} &\lambda_i[1-y_i(w^Tx_i+b)]=0 \rightarrow 1-y_i(w^Tx_i+b)=0 \\即 \hspace{1cm}& y_i(w^Tx_i+b)=1 \\等式左右乘以\hspace{1cm}& w^Tx_i+b=y_i \\即 \hspace{1cm}& b=y_i-w^Tx_i=y_i-\sum\limits_{i=1}^n\lambda_iy_ix_i^Tx_i \end{aligned} \end{equation} 等式左右乘以λi[1yi(wTxi+b)]=01yi(wTxi+b)=0yi(wTxi+b)=1wTxi+b=yib=yiwTxi=yii=1nλiyixiTxi
​ 至此,我们得到
w = ∑ i = 1 n λ i y i x i ; b = y i − ∑ i = 1 n λ i y i x i T x i w=\sum\limits_{i=1}^n\lambda_iy_ix_i;b=y_i-\sum\limits_{i=1}^n\lambda_iy_ix_i^Tx_i w=i=1nλiyixi;b=yii=1nλiyixiTxi
​ 那么接下来的问题就变成了如何求出w、b中打拉格朗日算子λ。我们回到对偶问题
{ max ⁡ λ ∑ i = 1 n λ i − 1 2 ∑ i = 1 n ∑ j = 1 n λ i y i λ j y j x i T x j s . t . λ i ≥ 0. i ∈ 1 , 2 , ⋯ n ∑ i = 1 n λ i y i = 0 \left\{ \begin{matrix} \max\limits_{\lambda}\sum\limits_{i=1}^n\lambda_i-\frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n\lambda_iy_i\lambda_jy_jx_i^Tx_j \\s.t. \hspace{1cm} \lambda_i \ge 0.i \in 1,2,\cdots n \\\sum\limits_{i=1}^n\lambda_iy_i=0 \end{matrix} \right. λmaxi=1nλi21i=1nj=1nλiyiλjyjxiTxjs.t.λi0.i1,2,ni=1nλiyi=0
​ 乍一看,我们好像又回到了原点,这到底还是一个带有n个约束的极值问题,但是,现在的目标函数中,已经没有了w,b,只有λ这一个变量了,并且我们还有了w,b与λ的关系式。因此,我们只需要求出λ,就可以了

SMO算法

​ SMO算法和坐标上升法有些类似,先了解一下坐标上升法对SMO有很大帮助。

坐标上升法

​ 举个栗子,假设我们现在有一个二元函数。
f ( x 1 , x 2 ) = 2 x 1 2 − 3 x 2 2 + x 1 x 2 f(x_1,x_2)=2x_1^2-3x_2^2+x_1x_2 f(x1,x2)=2x123x22+x1x2
​ 如果我们要求它的极值,那么就可以使用坐标上升法。

坐标上升法的核心思想是,选定一个变量,固定住其余的变量,然后求导不断迭代求出最终的结果。

​ 比如在上面的例子中,我们选定 x 1 x_1 x1,固定 x 2 x_2 x2,然后对 x 1 x_1 x1求导得0
4 x 1 + x 2 = 0 → x 1 = − x 2 4 4x_1+x_2=0 \rightarrow x_1=-\frac{x_2}{4} 4x1+x2=0x1=4x2
​ 再选定 x 2 x_2 x2,固定住 x 1 x_1 x1,对 x 2 x_2 x2求导得0
− 6 x 2 + x 1 = 0 → x 2 = x 1 6 -6x_2+x_1=0 \rightarrow x_2=\frac{x_1}{6} 6x2+x1=0x2=6x1
​ 得到了 x 1 、 x 2 x_1、x_2 x1x2的公式,接下来我们只需要随机初始化 x 1 , x 2 x_1,x_2 x1,x2的值,比如 x 1 = 1 , x 2 = 2 x_1=1,x_2=2 x1=1,x2=2,接下来就开始迭代

①选定 x 1 x_1 x1,固定 x 2 x_2 x2 x 1 = − 2 4 = − 0.5 x_1=-\frac{2}{4}=-0.5 x1=42=0.5

②选定 x 2 x_2 x2,固定 x 1 x_1 x1 x 2 = − 0.5 6 x_2=\frac{-0.5}{6} x2=60.5

③循环①②步骤,直到模型收敛。

​ 为什么坐标上升法可以收敛?道上的事儿少打听。总之这种方法就是可以逐渐逼近收敛。实际上就是一个一个分量(方向)地走。

​ 而SMO与坐标上升法类似,只不过SMO是固定两个分量罢了,其他都一样。为什么要固定两个分量?既然坐标上升法理论上可以收敛了,为什么不直接采用呢?我们来看 ∑ i = 1 n λ i y i = 0 \sum\limits_{i=1}^n\lambda_iy_i=0 i=1nλiyi=0这个约束条件,如果我们选定了了 λ 1 \lambda_1 λ1,固定其余变量,那么依据约束条件,我们直接就可以算出 λ 1 \lambda_1 λ1的值了,就没有意义了啊。

​ 那么我们对下面的目标函数先保留 λ 1 、 λ 2 \lambda_1、\lambda_2 λ1λ2
{ max ⁡ λ ∑ i = 1 n λ i − 1 2 ∑ i = 1 n ∑ j = 1 n λ i y i λ j y j x i T x j s . t . λ i ≥ 0. i ∈ 1 , 2 , ⋯ n ∑ i = 1 n λ i y i = 0 \left\{ \begin{matrix} \max\limits_{\lambda}\sum\limits_{i=1}^n\lambda_i-\frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n\lambda_iy_i\lambda_jy_jx_i^Tx_j \\s.t. \hspace{1cm} \lambda_i \ge 0.i \in 1,2,\cdots n \\\sum\limits_{i=1}^n\lambda_iy_i=0 \end{matrix} \right. λmaxi=1nλi21i=1nj=1nλiyiλjyjxiTxjs.t.λi0.i1,2,ni=1nλiyi=0

​ 对于约束条件保留,我们拆开
λ 1 y 1 + λ 2 y 2 + ∑ i = 3 n λ i y i = 0 因为: ∑ i = 3 n λ i y i 是一个定值 令: ∑ i = 3 n λ i y i = − C 得: λ 1 y 1 = C − λ 2 y 2 左右两边乘以 y 1 得: λ 1 = ( C − λ 2 y 2 ) y 1 \begin{equation} \begin{aligned} &\lambda_1y_1+\lambda_2y_2+\sum\limits_{i=3}^n\lambda_iy_i=0 \\&因为:\sum\limits_{i=3}^n\lambda_iy_i是一个定值 \\&令:\sum\limits_{i=3}^n\lambda_iy_i=-C \\&得:\lambda_1y_1=C-\lambda_2y_2 \\&左右两边乘以y_1得: \\&\lambda_1=(C-\lambda_2y_2)y_1 \end{aligned} \end{equation} λ1y1+λ2y2+i=3nλiyi=0因为:i=3nλiyi是一个定值令:i=3nλiyi=C得:λ1y1=Cλ2y2左右两边乘以y1得:λ1=(Cλ2y2)y1
​ 对于目标函数,我们拆开
L ( λ 1 , λ 2 ) = ∑ i = 1 n λ i − 1 2 ∑ i = 1 n ∑ j = 1 n λ i y i λ j y j x i T x j = λ 1 + λ 2 + ∑ i = 3 n λ i − 1 2 ∑ i = 1 n ∑ j = 1 n λ i y i λ j y j x i T x j \begin{equation} \begin{aligned} L(\lambda_1,\lambda_2)=&\sum\limits_{i=1}^n\lambda_i-\frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n\lambda_iy_i\lambda_jy_jx_i^Tx_j \\&=\lambda_1+\lambda_2+\sum\limits_{i=3}^n\lambda_i-\frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n\lambda_iy_i\lambda_jy_jx_i^Tx_j \end{aligned} \end{equation} L(λ1,λ2)=i=1nλi21i=1nj=1nλiyiλjyjxiTxj=λ1+λ2+i=3nλi21i=1nj=1nλiyiλjyjxiTxj

​ 对于后面的 ∑ i = 1 n ∑ j = 1 n λ i y i λ j y j x i T x j \sum\limits_{i=1}^n\sum\limits_{j=1}^n\lambda_iy_i\lambda_jy_jx_i^Tx_j i=1nj=1nλiyiλjyjxiTxj,我们单独写开,因为有点复杂。并且为了表达简便,令 x i T x j = K i j = K j i x_i^Tx_j=K_{ij}=K_{ji} xiTxj=Kij=Kji


对于 ∑ i = 1 n ∑ j = 1 n λ i y i λ j y j x i T x j 有以下几种可能 ① i = 1 , j = 1 → λ 1 y 1 λ 1 y 1 K 11 → λ 1 2 K 11 ② i = 1 , j = 2 → λ 1 y 1 λ 2 y 2 K 12 ③ i = 1 , j ≥ 3 → ∑ j = 3 n λ 1 y 1 λ j y j K 1 j ④ i = 2 , j = 1 → λ 2 y 2 λ 1 y 1 K 21 ⑤ i = 2 , j = 2 → λ 2 y 2 λ 2 y 2 K 22 → λ 2 2 K 22 ⑥ i = 2 , j ≥ 3 → ∑ j = 3 n λ 2 y 2 λ j y j K 2 j ⑦ i ≥ 3 , j = 1 → ∑ i = 3 n λ i y i λ 1 y 1 K i 1 ⑧ i ≥ 3 , j = 2 → ∑ i = 3 n λ i y i λ 2 y 2 K i 2 ⑨ i ≥ 3 , j ≥ 3 → ∑ i = 3 n ∑ j = 3 n λ i y i λ j y j K i j \begin{equation} \begin{aligned} &对于\sum\limits_{i=1}^n\sum\limits_{j=1}^n\lambda_iy_i\lambda_jy_jx_i^Tx_j \\&有以下几种可能 \\&①i=1,j=1 \rightarrow \lambda_1y_1\lambda_1y_1K_{11} \rightarrow \lambda_1^2K_{11} \\&②i=1,j=2 \rightarrow \lambda_1y_1\lambda_2y_2K_{12} \\&③i=1,j\ge3 \rightarrow \sum\limits_{j=3}^n\lambda_1y_1\lambda_jy_jK_{1j} \\&④i=2,j=1 \rightarrow \lambda_2y_2\lambda_1y_1K_{21} \\&⑤i=2,j=2 \rightarrow \lambda_2y_2\lambda_2y_2K_{22} \rightarrow \lambda_2^2K_{22} \\&⑥i=2,j\ge3 \rightarrow \sum\limits_{j=3}^n\lambda_2y_2\lambda_jy_jK_{2j} \\&⑦i\ge3,j=1 \rightarrow \sum\limits_{i=3}^n\lambda_iy_i\lambda_1y_1K_{i1} \\&⑧i\ge3,j=2 \rightarrow \sum\limits_{i=3}^n\lambda_iy_i\lambda_2y_2K_{i2} \\&⑨i\ge3,j\ge3 \rightarrow \sum\limits_{i=3}^n\sum\limits_{j=3}^n\lambda_iy_i\lambda_jy_jK_{ij} \end{aligned} \end{equation} 对于i=1nj=1nλiyiλjyjxiTxj有以下几种可能i=1,j=1λ1y1λ1y1K11λ12K11i=1,j=2λ1y1λ2y2K12i=1,j3j=3nλ1y1λjyjK1ji=2,j=1λ2y2λ1y1K21i=2,j=2λ2y2λ2y2K22λ22K22i=2,j3j=3nλ2y2λjyjK2ji3,j=1i=3nλiyiλ1y1Ki1i3,j=2i=3nλiyiλ2y2Ki2i3,j3i=3nj=3nλiyiλjyjKij
​ 接着只需要合并同类项然后相加,再乘以前面的\frac{1}{2}即可
L ( λ 1 , λ 2 ) = ∑ i = 1 n λ i − 1 2 ∑ i = 1 n ∑ j = 1 n λ i y i λ j y j x i T x j = λ 1 + λ 2 + ∑ i = 3 n λ i − 1 2 ( λ 1 2 K 11 + λ 2 2 K 22 + 2 λ 1 y 1 λ 2 y 2 K 12 + 2 ∑ j = 3 n λ 1 y 1 λ j y j K 1 j + 2 ∑ j = 3 n λ 2 y 2 λ j y j K 2 j + ∑ i = 3 n ∑ j = 3 n λ i y i λ j y j K i j ) \begin{equation} \begin{aligned} L(\lambda_1,\lambda_2)=&\sum\limits_{i=1}^n\lambda_i-\frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n\lambda_iy_i\lambda_jy_jx_i^Tx_j \\&=\lambda_1+\lambda_2+\sum\limits_{i=3}^n\lambda_i-\frac{1}{2}\left(\lambda_1^2K_{11}+\lambda_2^2K_{22}+\\2\lambda_1y_1\lambda_2y_2K_{12}+2\sum\limits_{j=3}^n\lambda_1y_1\lambda_jy_jK_{1j}+2\sum\limits_{j=3}^n\lambda_2y_2\lambda_jy_jK_{2j}+\sum\limits_{i=3}^n\sum\limits_{j=3}^n\lambda_iy_i\lambda_jy_jK_{ij} \right) \end{aligned} \end{equation} L(λ1,λ2)=i=1nλi21i=1nj=1nλiyiλjyjxiTxj=λ1+λ2+i=3nλi21(λ12K11+λ22K22+2λ1y1λ2y2K12+2j=3nλ1y1λjyjK1j+2j=3nλ2y2λjyjK2j+i=3nj=3nλiyiλjyjKij)
​ 将 λ 1 = ( C − λ 2 y 2 ) y 1 \lambda_1=(C-\lambda_2y_2)y_1 λ1=(Cλ2y2)y1代入,得
L ( λ 2 ) = ( C − λ 2 y 2 ) y 1 + λ 2 + ∑ i = 3 n λ i − 1 2 ( [ ( C − λ 2 y 2 ) y 1 ] 2 K 11 + λ 2 2 K 22 + 2 [ ( C − λ 2 y 2 ) y 1 ] y 1 λ 2 y 2 K 12 + 2 ∑ j = 3 n [ ( C − λ 2 y 2 ) y 1 ] y 1 λ j y j K 1 j + 2 ∑ j = 3 n λ 2 y 2 λ j y j K 2 j + ∑ i = 3 n ∑ j = 3 n λ i y i λ j y j K i j ) = ( C − λ 2 y 2 ) y 1 + λ 2 + ∑ i = 3 n λ i − 1 2 ( ( C y 1 − λ 2 y 2 y 1 ) 2 K 11 + λ 2 2 K 22 + 2 C λ 2 y 2 K 12 − 2 λ 2 2 K 12 + 2 ∑ j = 3 n ( C λ j y j K 1 j − λ 2 y 2 λ j y j K 1 j ) + 2 ∑ j = 3 n λ 2 y 2 λ j y j K 2 j + ∑ i = 3 n ∑ j = 3 n λ i y i λ j y j K i j ) \begin{equation} \begin{aligned} L(\lambda_2)&=(C-\lambda_2y_2)y_1+\lambda_2+\sum\limits_{i=3}^n\lambda_i-\frac{1}{2}\left([(C-\lambda_2y_2)y_1]^2K_{11}+\lambda_2^2K_{22}+2[(C-\lambda_2y_2)y_1]y_1\lambda_2y_2K_{12}+\\2\sum\limits_{j=3}^n[(C-\lambda_2y_2)y_1]y_1\lambda_jy_jK_{1j}+2\sum\limits_{j=3}^n\lambda_2y_2\lambda_jy_jK_{2j}+\sum\limits_{i=3}^n\sum\limits_{j=3}^n\lambda_iy_i\lambda_jy_jK_{ij} \right) \\&=(C-\lambda_2y_2)y_1+\lambda_2+\sum\limits_{i=3}^n\lambda_i-\frac{1}{2}\left( (Cy_1-\lambda_2y_2y_1)^2K_{11}+\lambda_2^2K_{22}+2C\lambda_2y_2K_{12}-2\lambda_2^2K_{12}\\+ 2\sum\limits_{j=3}^n(C\lambda_jy_jK_{1j}-\lambda_2y_2\lambda_jy_jK_{1j})+2\sum\limits_{j=3}^n\lambda_2y_2\lambda_jy_jK_{2j}+\sum\limits_{i=3}^n\sum\limits_{j=3}^n\lambda_iy_i\lambda_jy_jK_{ij} \right ) \end{aligned} \end{equation} L(λ2)=(Cλ2y2)y1+λ2+i=3nλi21([(Cλ2y2)y1]2K11+λ22K22+2[(Cλ2y2)y1]y1λ2y2K12+2j=3n[(Cλ2y2)y1]y1λjyjK1j+2j=3nλ2y2λjyjK2j+i=3nj=3nλiyiλjyjKij)=(Cλ2y2)y1+λ2+i=3nλi21((Cy1λ2y2y1)2K11+λ22K22+2Cλ2y2K122λ22K12+2j=3n(CλjyjK1jλ2y2λjyjK1j)+2j=3nλ2y2λjyjK2j+i=3nj=3nλiyiλjyjKij)
​ 对其关于 λ 2 \lambda_2 λ2求导等于0
∂ L ( λ 2 ) ∂ λ 2 = − y 2 y 1 + 1 − 1 2 ( 2 ( C y 1 − λ 2 y 2 y 1 ) ( − y 2 y 1 ) K 11 + 2 λ 2 K 22 + 2 C y 2 K 12 − 4 λ 2 K 12 − 2 ∑ j = 3 n y 2 λ j y j K 1 j + 2 ∑ j = 3 n y 2 λ j y j K 2 j ) = − y 2 y 1 + 1 + C y 2 K 11 − λ 2 K 11 − λ 2 K 22 − C y 2 K 12 + 2 λ 2 K 12 + ∑ j = 3 n y 2 λ j y j K 1 j − ∑ j = 3 n y 2 λ j y j K 2 j = − y 2 y 1 + 1 + C y 2 K 11 − λ 2 K 11 − λ 2 K 22 − C y 2 K 12 + 2 λ 2 K 12 + y 2 ∑ j = 3 n λ j y j K 1 j − y 2 ∑ j = 3 n λ j y j K 2 j = 0 \begin{equation} \begin{aligned} &\frac{\partial{L(\lambda_2)}}{\partial{\lambda_2}} \\&=-y_2y_1+1-\frac{1}{2} \left ( 2(Cy_1-\lambda_2y_2y_1)(-y_2y_1)K_{11}+2\lambda_2K_{22}+2Cy_2K_{12}-4\lambda_2K_{12}-2\sum\limits_{j=3}^ny_2\lambda_jy_jK_{1j}\\+2\sum\limits_{j=3}^ny_2\lambda_jy_jK_{2j} \right) \\&=-y_2y_1+1+Cy_2K_{11}-\lambda_2K_{11}-\lambda_2K_{22}-Cy_2K_{12}+2\lambda_2K_{12}+\sum\limits_{j=3}^ny_2\lambda_jy_jK_{1j}-\sum\limits_{j=3}^ny_2\lambda_jy_jK_{2j} \\&=-y_2y_1+1+Cy_2K_{11}-\lambda_2K_{11}-\lambda_2K_{22}-Cy_2K_{12}+2\lambda_2K_{12}+y_2\sum\limits_{j=3}^n\lambda_jy_jK_{1j}-y_2\sum\limits_{j=3}^n\lambda_jy_jK_{2j}=0 \end{aligned} \end{equation} λ2L(λ2)=y2y1+121(2(Cy1λ2y2y1)(y2y1)K11+2λ2K22+2Cy2K124λ2K122j=3ny2λjyjK1j+2j=3ny2λjyjK2j)=y2y1+1+Cy2K11λ2K11λ2K22Cy2K12+2λ2K12+j=3ny2λjyjK1jj=3ny2λjyjK2j=y2y1+1+Cy2K11λ2K11λ2K22Cy2K12+2λ2K12+y2j=3nλjyjK1jy2j=3nλjyjK2j=0

​ 将 λ 2 \lambda_2 λ2单独提到一边(注意,因为SMO是迭代式算法,所以我们都有一个初始的λ,为了区分,我们用 λ n e w \lambda^{new} λnew代表新的值,用 λ o l d \lambda^{old} λold代表旧的值)
λ 2 n e w ( K 11 + K 22 − 2 K 12 ) = 1 − y 2 y 1 + C y 2 K 11 − C y 2 K 12 + y 2 ∑ j = 3 n λ j y j K 1 j − y 2 ∑ j = 3 n λ j y j K 2 j \lambda_2^{new}(K_{11}+K_{22}-2K_{12})=1-y_2y_1+Cy_2K_{11}-Cy_2K_{12}+y_2\sum\limits_{j=3}^n\lambda_jy_jK_{1j}-y_2\sum\limits_{j=3}^n\lambda_jy_jK_{2j} λ2new(K11+K222K12)=1y2y1+Cy2K11Cy2K12+y2j=3nλjyjK1jy2j=3nλjyjK2j
​ 我们知道 f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b,当取 x 1 x_1 x1时,得
f ( x 1 ) = w T x 1 + b = ∑ i = 1 n ( λ i y i x i T x 1 ) + b = λ 1 y 1 x 1 T x 1 + λ 2 y 2 x 2 T x 1 + ∑ i = 3 n ( λ i y i K i 1 ) + b = λ 1 y 1 K 11 + λ 2 y 2 K 21 + ∑ i = 3 n ( λ i y i K i 1 ) + b 移项得: ∑ i = 3 n ( λ i y i K i 1 ) = f ( x 1 ) − λ 1 y 1 K 11 − λ 2 y 2 K 21 − b \begin{equation} \begin{aligned} f(x_1)&=w^Tx_1+b \\&=\sum\limits_{i=1}^n(\lambda_iy_ix_i^Tx_1)+b \\&=\lambda_1y_1x_1^Tx_1+\lambda_2y_2x_2^Tx_1+\sum\limits_{i=3}^n(\lambda_iy_iK_{i1})+b \\&=\lambda_1y_1K_{11}+\lambda_2y_2K_{21}+\sum\limits_{i=3}^n(\lambda_iy_iK_{i1})+b \\&移项得: \\&\sum\limits_{i=3}^n(\lambda_iy_iK_{i1})=f(x_1)-\lambda_1y_1K_{11}-\lambda_2y_2K_{21}-b \end{aligned} \end{equation} f(x1)=wTx1+b=i=1n(λiyixiTx1)+b=λ1y1x1Tx1+λ2y2x2Tx1+i=3n(λiyiKi1)+b=λ1y1K11+λ2y2K21+i=3n(λiyiKi1)+b移项得:i=3n(λiyiKi1)=f(x1)λ1y1K11λ2y2K21b
​ 同理得 x 2 x_2 x2
∑ i = 3 n ( λ i y i K i 2 ) = f ( x 2 ) − λ 1 y 1 K 12 − λ 2 y 2 K 22 − b \sum\limits_{i=3}^n(\lambda_iy_iK_{i2})=f(x_2)-\lambda_1y_1K_{12}-\lambda_2y_2K_{22}-b i=3n(λiyiKi2)=f(x2)λ1y1K12λ2y2K22b
​ 因为 K i j = K j i K_{ij}=K_{ji} Kij=Kji,仔细看所得的式子,它刚好在我们对 λ 2 \lambda_2 λ2求导所得的式子,将其代入,并且此时的λ都是旧的λ
λ 2 ( K 11 + K 22 − 2 K 12 ) = 1 − y 2 y 1 + C y 2 K 11 − C y 2 K 12 + y 2 ∑ j = 3 n λ j y j K 1 j − y 2 ∑ j = 3 n λ j y j K 2 j = 1 − y 2 y 1 + C y 2 K 11 − C y 2 K 12 + y 2 ( f ( x 1 ) − λ 1 o l d y 1 K 11 − λ 2 o l d y 2 K 21 − b ) − y 2 ( f ( x 2 ) − λ 1 o l d y 1 K 12 − λ 2 o l d y 2 K 22 − b ) = y 2 ( y 2 − y 1 + C K 11 − C K 12 + f ( x 1 ) − λ 1 o l d y 1 K 11 − λ 2 o l d y 2 K 21 − b − f ( x 2 ) + λ 1 o l d y 1 K 12 + λ 2 o l d y 2 K 22 + b ) \begin{equation} \begin{aligned} \lambda_2(K_{11}+K_{22}-2K_{12})&=1-y_2y_1+Cy_2K_{11}-Cy_2K_{12}+y_2\sum\limits_{j=3}^n\lambda_jy_jK_{1j}-y_2\sum\limits_{j=3}^n\lambda_jy_jK_{2j} \\&=1-y_2y_1+Cy_2K_{11}-Cy_2K_{12}+y_2 \left ( f(x_1)-\lambda_1^{old}y_1K_{11}-\lambda_2^{old}y_2K_{21}-b \right ) \\&-y_2 \left( f(x_2)-\lambda_1^{old}y_1K_{12}-\lambda_2^{old}y_2K_{22}-b \right) \\&=y_2 ( y_2-y_1+CK_{11}-CK_{12}+f(x_1)-\lambda_1^{old}y_1K_{11}-\lambda_2^{old}y_2K_{21}-b-f(x_2)+ \\& \lambda_1^{old}y_1K_{12}+\lambda_2^{old}y_2K_{22}+b) \end{aligned} \end{equation} λ2(K11+K222K12)=1y2y1+Cy2K11Cy2K12+y2j=3nλjyjK1jy2j=3nλjyjK2j=1y2y1+Cy2K11Cy2K12+y2(f(x1)λ1oldy1K11λ2oldy2K21b)y2(f(x2)λ1oldy1K12λ2oldy2K22b)=y2(y2y1+CK11CK12+f(x1)λ1oldy1K11λ2oldy2K21bf(x2)+λ1oldy1K12+λ2oldy2K22+b)
​ 将 C = λ 1 y 1 + λ 2 y 2 C=\lambda_1y_1+\lambda_2y_2 C=λ1y1+λ2y2回代
λ 2 n e w ( K 11 + K 22 − 2 K 12 ) = y 2 ( y 2 − y 1 + λ 1 o l d y 1 K 11 + λ 2 o l d y 2 K 11 − λ 1 o l d y 1 K 12 − λ 2 o l d y 2 K 12 + f ( x 1 ) − λ 1 o l d y 1 K 11 − λ 2 o l d y 2 K 21 − b − f ( x 2 ) + λ 1 o l d y 1 K 12 + λ 2 o l d y 2 K 22 + b ) = y 2 ( y 2 − y 1 + λ 2 o l d y 2 K 11 − 2 λ 2 o l d y 2 K 21 + f ( x 1 ) − f ( x 2 ) + λ 2 o l d y 2 K 22 ) = y 2 ( [ f ( x 1 ) − y 1 ] − [ f ( x 2 ) − y 2 ] + λ 2 o l d y 2 [ K 11 + K 22 − 2 K 21 ] ) 等式两边除以 K 11 + K 22 − 2 K 21 λ 2 n e w = y 2 ( [ f ( x 1 ) − y 1 ] − [ f ( x 2 ) − y 2 ] ) K 11 + K 22 − 2 K 21 + λ 2 o l d \begin{equation} \begin{aligned} &\lambda_2^{new}(K_{11}+K_{22}-2K_{12}) \\&= y_2\left( y_2-y_1+\lambda_1^{old}y_1K_{11}+\lambda_2^{old}y_2K_{11}-\lambda_1^{old}y_1K_{12}-\lambda_2^{old}y_2K_{12}+f(x_1)-\lambda_1^{old}y_1K_{11} \\-\lambda_2^{old}y_2K_{21}-b-f(x_2)+\lambda_1^{old}y_1K_{12}+\lambda_2^{old}y_2K_{22}+b \right ) \\&=y_2\left( y_2-y_1+\lambda_2^{old}y_2K_{11}-2\lambda_{2}^{old}y_2K_{21}+f(x_1)-f(x_2)+\lambda_{2}^{old}y_{2}K_{22} \right ) \\&= y_2\left( [f(x_1)-y_1]-[f(x_2)-y_2]+\lambda_{2}^{old}y_2[K_{11}+K_{22}-2K_{21}] \right) \\&等式两边除以K_{11}+K_{22}-2K_{21} \\&\lambda_{2}^{new}=\frac{y_2\left([f(x_1)-y_1]-[f(x_2)-y_2]\right)}{K_{11}+K_{22}-2K_{21}}+\lambda_2^{old} \end{aligned} \end{equation} λ2new(K11+K222K12)=y2(y2y1+λ1oldy1K11+λ2oldy2K11λ1oldy1K12λ2oldy2K12+f(x1)λ1oldy1K11λ2oldy2K21bf(x2)+λ1oldy1K12+λ2oldy2K22+b)=y2(y2y1+λ2oldy2K112λ2oldy2K21+f(x1)f(x2)+λ2oldy2K22)=y2([f(x1)y1][f(x2)y2]+λ2oldy2[K11+K222K21])等式两边除以K11+K222K21λ2new=K11+K222K21y2([f(x1)y1][f(x2)y2])+λ2old
​ 为了表达简便,我们用
η = K 11 + K 22 − 2 K 21 E i = f ( x i ) − y i \eta=K_{11}+K_{22}-2K_{21}\\E_i=f(x_i)-y_i η=K11+K222K21Ei=f(xi)yi
​ 所以最终
λ 2 n e w = λ 2 o l d + y 2 ( E 1 − E 2 ) η \lambda_2^{new}=\lambda_2^{old}+\frac{y_2(E_1-E_2)}{\eta} λ2new=λ2old+ηy2(E1E2)

​ 至于 λ 1 n e w \lambda_1^{new} λ1new,利用 C = λ 1 y 1 + λ 2 y 2 C=\lambda_1y_1+\lambda_2y_2 C=λ1y1+λ2y2即可求出。但是仍然有一个条件,就是 λ \lambda λ必须是大于0的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值