SVM-SMO算法

SMO算法思想

上面这个优化式子比较复杂,里面有m个变量组成的向量α𝛼需要在目标函数极小化的时候求出。直接优化时很难的。SMO算法则采用了一种启发式的方法。它每次只优化两个变量,将其他的变量都视为常数。由于 ∑ i = 1 m α i y i = 0 \sum\limits_{i=1}^{m}\alpha_iy_i = 0 i=1mαiyi=0.假如将 α 3 , α 4 , . . . , α m \alpha_3, \alpha_4, ..., \alpha_m α3,α4,...,αm 固定,那么 α 1 , α 2 \alpha_1, \alpha_2 α1,α2之间的关系也确定了。这样SMO算法将一个复杂的优化算法转化为一个比较简单的两变量优化问题。

为什么是变量化两个不是变量化一个?

因为要是变量化一个,剩余N-1个确定,相当于没有变量化,确定了N-1个另一个也确定了,所以需要两个

把软间隔当例子来求这个问题

m i n ⏟ α 1 2 ∑ i = 1 , j = 1 m α i α j y i y j K ( x i , x j ) − ∑ i = 1 m α i \underbrace{ min }_{\alpha} \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jK(x_i,x_j) - \sum\limits_{i=1}^{m}\alpha_i α min21i=1,j=1mαiαjyiyjK(xi,xj)i=1mαi

s . t . ∑ i = 1 m α i y i = 0 s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0 s.t.i=1mαiyi=0

0 ≤ α i ≤ C 0 \leq \alpha_i \leq C 0αiC

满足KKT对偶的互补条件为:

α i ∗ ( y i ( w T x i + b ) − 1 + ξ i ∗ ) = 0 \alpha_{i}^{*}(y_i(w^Tx_i + b) - 1 + \xi_i^{*}) = 0 αi(yi(wTxi+b)1+ξi)=0

原始式子为

m a x γ = y ( w T x + b ) ∣ ∣ w ∣ ∣ 2 s . t y i ( w T x i + b ) = γ ′ ( i ) ≥ γ ′ ( i = 1 , 2 , . . . m ) max \;\; \gamma = \frac{y(w^Tx + b)}{||w||_2} \;\; s.t \;\; y_i(w^Tx_i + b) = \gamma^{'(i)} \geq \gamma^{'} (i =1,2,...m) maxγ=∣∣w2y(wTx+b)s.tyi(wTxi+b)=γ(i)γ(i=1,2,...m)

求max所以为g(X)>=C.看KKT条件那篇文章

变形式子为

m i n 1 2 ∣ ∣ w ∣ ∣ 2 2 + C ∑ i = 1 m ξ i min\;\; \frac{1}{2}||w||_2^2 +C\sum\limits_{i=1}^{m}\xi_i min21∣∣w22+Ci=1mξi

s . t . y i ( w T x i + b ) ≥ 1 − ξ i ( i = 1 , 2 , . . . m ) s.t. \;\; y_i(w^Tx_i + b) \geq 1 - \xi_i \;\;(i =1,2,...m) s.t.yi(wTxi+b)1ξi(i=1,2,...m)

ξ i ≥ 0 ( i = 1 , 2 , . . . m ) \xi_i \geq 0 \;\;(i =1,2,...m) ξi0(i=1,2,...m)

我们有

α i ∗ = 0 ⇒ y i ( w ∗ ∙ ϕ ( x i ) + b ) ≥ 1 \alpha_{i}^{*} = 0 \Rightarrow y_i(w^{*} \bullet \phi(x_i) + b) \geq 1 αi=0yi(wϕ(xi)+b)1

代表条件1满足,条件2不满足或者变成线性,其他点间隔大于1(这个1的来历看SVM支持向量机那篇文章)

0 < α i ∗ < C ⇒ y i ( w ∗ ∙ ϕ ( x i ) + b ) = 1 0 <\alpha_{i}^{*} < C \Rightarrow y_i(w^{*} \bullet \phi(x_i) + b) = 1 0<αi<Cyi(wϕ(xi)+b)=1

两个拉格朗日乘子的条件都成立(变等式条件),设置的乘子都>0, s . t . y i ( w T x i + b ) = 1 ( i = 1 , 2 , . . . m ) s.t. \;\; y_i(w^Tx_i + b) = 1 \;\;(i =1,2,...m) s.t.yi(wTxi+b)=1(i=1,2,...m), ξ i = 0 ( i = 1 , 2 , . . . m ) \; \; \xi_i = 0 \;\;(i =1,2,...m) ξi=0(i=1,2,...m)

α i ∗ = C ⇒ y i ( w ∗ ∙ ϕ ( x i ) + b ) ≤ 1 \alpha_{i}^{*}= C \Rightarrow y_i(w^{*} \bullet \phi(x_i) + b) \leq 1 αi=Cyi(wϕ(xi)+b)1

相当于条件1不满足或者变成线性,条件2满足(所以为0)

由于 w ∗ = ∑ j = 1 m α j ∗ y j ϕ ( x j ) w^{*} = \sum\limits_{j=1}^{m}\alpha_j^{*}y_j\phi(x_j) w=j=1mαjyjϕ(xj),我们令 g ( x ) = w ∗ ∙ ϕ ( x ) + b = ∑ j = 1 m α j ∗ y j K ( x , x j ) + b ∗ g(x) = w^{*} \bullet \phi(x) + b =\sum\limits_{j=1}^{m}\alpha_j^{*}y_jK(x, x_j)+ b^{*} g(x)=wϕ(x)+b=j=1mαjyjK(x,xj)+b,则有:

α i ∗ = 0 ⇒ y i g ( x i ) ≥ 1 \alpha_{i}^{*} = 0 \Rightarrow y_ig(x_i) \geq 1 αi=0yig(xi)1

0 < α i ∗ < C ⇒ y i g ( x i ) = 1 0 < \alpha_{i}^{*} < C \Rightarrow y_ig(x_i) = 1 0<αi<Cyig(xi)=1

α i ∗ = C ⇒ y i g ( x i ) ≤ 1 \alpha_{i}^{*}= C \Rightarrow y_ig(x_i) \leq 1 αi=Cyig(xi)1

为了后面表示方便,我们定义 K i j = ϕ ( x i ) ∙ ϕ ( x j ) K_{ij} = \phi(x_i) \bullet \phi(x_j) Kij=ϕ(xi)ϕ(xj)

然后搞两个为变量,固定N-2

补充上条件:

s . t . α 1 y 1 + α 2 y 2 = − ∑ i = 3 m y i α i = ς s.t. \;\;\alpha_1y_1 + \alpha_2y_2 = -\sum\limits_{i=3}^{m}y_i\alpha_i = \varsigma s.t.α1y1+α2y2=i=3myiαi=ς

0 ≤ α i ≤ C i = 1 , 2 0 \leq \alpha_i \leq C \;\; i =1,2 0αiCi=1,2

SMO算法的优化

上图4

为了求解上面含有这两个变量的目标优化问题,我们首先分析约束条件,所有的 α 1 , α 2 \alpha_1, \alpha_2 α1,α2都要满足约束条件,然后在约束条件下求最小。

根据上面的约束条件 α 1 y 1 + α 2 y 2 = ς 0 ≤ α i ≤ C i = 1 , 2 \alpha_1y_1 + \alpha_2y_2 = \varsigma\;\;0 \leq \alpha_i \leq C \;\; i =1,2 α1y1+α2y2=ς0αiCi=1,2,又由于y1,y2均只能取值1或者-1, 这样𝛼1,𝛼2在[0,C]和[0,C]形成的盒子里面,并且两者的关系直线的斜率只能为1或者-1,也就是说𝛼1,𝛼2的关系直线平行于[0,C]和[0,C]形成的盒子的对角线,如下图所示:

由于𝛼1,𝛼2的关系被限制在盒子里的一条线段上,所以两变量的优化问题实际上仅仅是一个变量的优化问题。不妨我们假设最终是α2𝛼2的优化问题。由于我们采用的是启发式的迭代法,假设我们上一轮迭代得到的解是 α 1 o l d , α 2 o l d \alpha_1^{old}, \alpha_2^{old} α1old,α2old,假设沿着约束方向α2未经剪辑的解是 α 2 n e w , u n c \alpha_2^{new,unc} α2new,unc.本轮迭代完成后的解为 α 1 n e w , α 2 n e w \alpha_1^{new}, \alpha_2^{new} α1new,α2new

由于 α 2 n e w \alpha_2^{new} α2new必须满足上图中的线段约束。假设L和H分别是上图中 α 2 n e w \alpha_2^{new} α2new所在的线段的边界。那么很显然我们有:

L ≤ α 2 n e w ≤ H L \leq \alpha_2^{new} \leq H Lα2newH

而对于L和H,我们也有限制条件如果是上面左图中的情况,则

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)

如果是上面右图中的情况,我们有:

L = m a x ( 0 , α 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, \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 , u n c \alpha_2^{new,unc} α2new,unc,则最终的 α 2 n e w \alpha_2^{new} α2new应该为:

α 2 n e w = { H α 2 n e w , u n c > 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 < L \alpha_2^{new}= \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} < L} \end{cases} α2new= Hα2new,uncLα2new,unc>HLα2new,uncHα2new,unc<L

超过就取边界

α 2 n e w , u n c \alpha_2^{new,unc} α2new,unc我们采用图三中的方法,对 α 2 \alpha_2 α2求导

我们下面要对图二图三的公式详细展开

g ( x ) = w ∗ ∙ ϕ ( x ) + b = ∑ j = 1 m α j ∗ y j K ( x , x j ) + b ∗ g(x) = w^{*} \bullet \phi(x) + b =\sum\limits_{j=1}^{m}\alpha_j^{*}y_jK(x, x_j)+ b^{*} g(x)=wϕ(x)+b=j=1mαjyjK(x,xj)+b

我们令

v i = ∑ j = 3 m y j α j K ( x i , x j ) = g ( x i ) − ∑ j = 1 2 y j α j K ( x i , x j ) − b v_i = \sum\limits_{j=3}^{m}y_j\alpha_jK(x_i,x_j) = g(x_i) - \sum\limits_{j=1}^{2}y_j\alpha_jK(x_i,x_j) -b vi=j=3myjαjK(xi,xj)=g(xi)j=12yjαjK(xi,xj)b

这样我们的图二优化目标函数进一步简化为:

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 v 1 + y 2 α 2 v 2 W(\alpha_1,\alpha_2) = \frac{1}{2}K_{11}\alpha_1^2 + \frac{1}{2}K_{22}\alpha_2^2 +y_1y_2K_{12}\alpha_1 \alpha_2 -(\alpha_1 + \alpha_2) +y_1\alpha_1v_1 + y_2\alpha_2v_2 W(α1,α2)=21K11α12+21K22α22+y1y2K12α1α2(α1+α2)+y1α1v1+y2α2v2

由于 α 1 y 1 + α 2 y 2 = ς \alpha_1y_1 + \alpha_2y_2 = \varsigma α1y1+α2y2=ς,并且 y i 2 = 1 y_i^2 = 1 yi2=1,得到

α 1 = y 1 ( ς − α 2 y 2 ) \alpha_1 = y_1(\varsigma - \alpha_2y_2) α1=y1(ςα2y2)

优化了深度之眼那个式子,没有必要写成除法,加大求偏导难度

代入得:

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 + ( ς − α 2 y 2 ) v 1 + y 2 α 2 v 2 W(\alpha_2) = \frac{1}{2}K_{11}(\varsigma - \alpha_2y_2)^2 + \frac{1}{2}K_{22}\alpha_2^2 +y_2K_{12}(\varsigma - \alpha_2y_2) \alpha_2 - (\varsigma - \alpha_2y_2)y_1 - \alpha_2 +(\varsigma - \alpha_2y_2)v_1 + y_2\alpha_2v_2 W(α2)=21K11(ςα2y2)2+21K22α22+y2K12(ςα2y2)α2(ςα2y2)y1α2+(ςα2y2)v1+y2α2v2

开始求 α 2 n e w , u n c \alpha_2^{new,unc} α2new,unc

∂ 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 = 0 \frac{\partial W}{\partial \alpha_2} = K_{11}\alpha_2 + K_{22}\alpha_2 -2K_{12}\alpha_2 - K_{11}\varsigma y_2 + K_{12}\varsigma y_2 +y_1y_2 -1 -v_1y_2 +y_2v_2 = 0 α2W=K11α2+K22α22K12α2K11ςy2+K12ςy2+y1y21v1y2+y2v2=0

整理上式有:

( K 11 + K 22 − 2 K 12 ) α 2 = y 2 ( y 2 − y 1 + ς K 11 − ς K 12 + v 1 − v 2 ) (K_{11} +K_{22}-2K_{12})\alpha_2 = y_2(y_2-y_1 + \varsigma K_{11} - \varsigma K_{12} + v_1 - v_2) (K11+K222K12)α2=y2(y2y1+ςK11ςK12+v1v2)

= 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 ) ) = y_2(y_2-y_1 + \varsigma K_{11} - \varsigma K_{12} + (g(x_1) - \sum\limits_{j=1}^{2}y_j\alpha_jK_{1j} -b ) -(g(x_2) - \sum\limits_{j=1}^{2}y_j\alpha_jK_{2j} -b)) =y2(y2y1+ςK11ςK12+(g(x1)j=12yjαjK1jb)(g(x2)j=12yjαjK2jb))

ς = α 1 y 1 + α 2 y 2 \varsigma = \alpha_1y_1 + \alpha_2y_2 ς=α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 + g ( x 1 ) − g ( 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 +g(x_1) - g(x_2)) (K11+K222K12)α2new,unc=y2((K11+K222K12)α2oldy2+y2y1+g(x1)g(x2))

= ( K 11 + K 22 − 2 K 12 ) α 2 o l d + y 2 ( E 1 − E 2 ) \;\;\;\; = (K_{11} +K_{22}-2K_{12}) \alpha_2^{old} + y_2(E_1-E_2) =(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+K222K12)y2(E1E2)

利用公式

α 2 n e w = { H α 2 n e w , u n c > 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 < L \alpha_2^{new}= \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} < L} \end{cases} α2new= Hα2new,uncLα2new,unc>HLα2new,uncHα2new,unc<L

我们就可以得到我们新的 α 2 n e w \alpha_2^{new} α2new了。利用 α 2 n e w \alpha_2^{new} α2new α 1 n e w \alpha_1^{new} α1new的线性关系,我们也可以得到新的 α 1 n e w \alpha_1^{new} α1new

SMO两个变量的选择

反正不是顺序选,要挑着选

选第一个变量

SMO算法称选择第一个变量为外层循环,这个变量需要选择在训练集中违反KKT条件最严重的样本点。对于每个样本点,要满足的KKT条件我们在第一节已经讲到了:

α i ∗ = 0 ⇒ y i g ( x i ) ≥ 1 \alpha_{i}^{*} = 0 \Rightarrow y_ig(x_i) \geq 1 αi=0yig(xi)1

0 < α i ∗ < C ⇒ y i g ( x i ) = 1 0 < \alpha_{i}^{*} < C \Rightarrow y_ig(x_i) = 1 0<αi<Cyig(xi)=1

α i ∗ = C ⇒ y i g ( x i ) ≤ 1 \alpha_{i}^{*}= C \Rightarrow y_ig(x_i) \leq 1 αi=Cyig(xi)1

一般来说,我们首先选择违反 0 < α i ∗ < C ⇒ y i g ( x i ) = 1 0 < \alpha_{i}^{*} < C \Rightarrow y_ig(x_i) =1 0<αi<Cyig(xi)=1个条件的点。如果这些支持向量都满足KKT条件,再选择违反 α i ∗ = 0 ⇒ y i g ( x i ) ≥ 1 \alpha_{i}^{*} = 0 \Rightarrow y_ig(x_i) \geq 1 αi=0yig(xi)1 α i ∗ = C ⇒ y i g ( x i ) ≤ 1 \alpha_{i}^{*}= C \Rightarrow y_ig(x_i) \leq 1 αi=Cyig(xi)1的点

选第二个变量

SMO算法称选择第二个变量为内层循环

我们定义

E i = g ( x i ) − y i = ∑ j = 1 m α j ∗ y j K ( x i , x j ) + b − y i E_i = g(x_i)-y_i = \sum\limits_{j=1}^{m}\alpha_j^{*}y_jK(x_i, x_j)+ b - y_i Ei=g(xi)yi=j=1mαjyjK(xi,xj)+byi

假设我们在外层循环已经找到了α1𝛼1, 第二个变量𝛼2的选择标准是让 ∣ E 1 − E 2 ∣ |E1-E2| E1E2∣有足够大的变化。由于𝛼1定了的时候,𝐸1也确定了,所以要想 ∣ E 1 − E 2 ∣ |E1-E2| E1E2∣最大,只需要在𝐸1为正时,选择最小的𝐸𝑖作为𝐸2, 在𝐸1为负时,选择最大的𝐸𝑖作为𝐸2,可以将所有的𝐸𝑖保存下来加快迭代。

如果内存循环找到的点不能让目标函数有足够的下降, 可以采用遍历支持向量点来做𝛼2,直到目标函数有足够的下降, 如果所有的支持向量做𝛼2都不能让目标函数有足够的下降,可以跳出循环,重新选择𝛼1

计算阈值b和差值 E i E_i Ei

在每次完成两个变量的优化之后,需要重新计算阈值b。当 0 < α 1 n e w < C 0 < \alpha_{1}^{new} < C 0<α1new<C时,我们有

y 1 − ∑ i = 1 m α i y i K i 1 − b 1 = 0 y_1 - \sum\limits_{i=1}^{m}\alpha_iy_iK_{i1} -b_1 = 0 y1i=1mαiyiKi1b1=0

于是新的 b 1 n e w b_1^{new} b1new为:

b 1 n e w = y 1 − ∑ i = 3 m α 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\limits_{i=3}^{m}\alpha_iy_iK_{i1} - \alpha_{1}^{new}y_1K_{11} - \alpha_{2}^{new}y_2K_{21} b1new=y1i=3mαiyiKi1α1newy1K11α2newy2K21

计算出𝐸1为:

E 1 = g ( x 1 ) − y 1 = ∑ i = 3 m α 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 = g(x_1) - y_1 = \sum\limits_{i=3}^{m}\alpha_iy_iK_{i1} + \alpha_{1}^{old}y_1K_{11} + \alpha_{2}^{old}y_2K_{21} + b^{old} -y_1 E1=g(x1)y1=i=3mαiyiKi1+α1oldy1K11+α2oldy2K21+boldy1

可以看到上两式都有 y 1 − ∑ i = 3 m α i y i K i 1 y_1 - \sum\limits_{i=3}^{m}\alpha_iy_iK_{i1} y1i=3mαiyiKi1,因此可以将 b 1 n e w b_1^{new} b1new用𝐸1表示为:

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=E1y1K11(α1newα1old)y2K21(α2newα2old)+bold

同样的,如果 0 < α 2 n e w < C 0 < \alpha_{2}^{new} < 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_1K_{12}(\alpha_{1}^{new} - \alpha_{1}^{old}) -y_2K_{22}(\alpha_{2}^{new} - \alpha_{2}^{old}) + b^{old} b2new=E2y1K12(α1newα1old)y2K22(α2newα2old)+bold

最终的 b n e w b^{new} bnew

b n e w = b 1 n e w + b 2 n e w 2 b^{new} = \frac{b_1^{new} + b_2^{new}}{2} bnew=2b1new+b2new

得到了 b n e w b^{new} bnew我们需要更新 E i E_i Ei:

E i = ∑ S y j α j K ( x i , x j ) + b n e w − y i E_i = \sum\limits_{S}y_j\alpha_jK(x_i,x_j) + b^{new} -y_i Ei=SyjαjK(xi,xj)+bnewyi

其中,S是所有支持向量 x j x_j xj的集合。

SMO算法总结

输入是m个样本 ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) , {(x_1,y_1), (x_2,y_2), ..., (x_m,y_m),} (x1,y1),(x2,y2),...,(xm,ym),其中x为n维特征向量。y为二元输出,值为1,或者-1.精度e。

输出是近似解α

1)取初值 α 0 = 0 , k = 0 \alpha^{0} = 0, k =0 α0=0,k=0

2)按照选第一个变量的方法选择 α 1 k \alpha_1^k α1k,接着按照选第二个变量的方法选择 α 2 k \alpha_2^k α2k,求出新的 α 2 n e w , u n c \alpha_2^{new,unc} α2new,unc

α 2 n e w , u n c = α 2 k + y 2 ( E 1 − E 2 ) K 11 + K 22 − 2 K 12 ) \alpha_2^{new,unc} = \alpha_2^{k} + \frac{y_2(E_1-E_2)}{K_{11} +K_{22}-2K_{12})} α2new,unc=α2k+K11+K222K12)y2(E1E2)

3)按照下式求出 α 2 k + 1 \alpha_2^{k+1} α2k+1

α 2 k + 1 = { H α 2 n e w , u n c > 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 < L \alpha_2^{k+1}= \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} < L} \end{cases} α2k+1= Hα2new,uncLα2new,unc>HLα2new,uncHα2new,unc<L

4)利用 α 2 k + 1 \alpha_2^{k+1} α2k+1 α 1 k + 1 \alpha_1^{k+1} α1k+1的线性关系求出 α 1 k + 1 \alpha_1^{k+1} α1k+1

5)按照4.3节的方法计算 b k + 1 b^{k+1} bk+1 E i E_i Ei

6)在精度e范围内检查是否满足如下的终止条件:

∑ i = 1 m α i y i = 0 \sum\limits_{i=1}^{m}\alpha_iy_i = 0 i=1mαiyi=0

0 ≤ α i ≤ C , i = 1 , 2... m 0 \leq \alpha_i \leq C, i =1,2...m 0αiC,i=1,2...m

α i k + 1 = 0 ⇒ y i g ( x i ) ≥ 1 \alpha_{i}^{k+1} = 0 \Rightarrow y_ig(x_i) \geq 1 αik+1=0yig(xi)1

0 < α i k + 1 < C ⇒ y i g ( x i ) = 1 0 <\alpha_{i}^{k+1} < C \Rightarrow y_ig(x_i) = 1 0<αik+1<Cyig(xi)=1

α i k + 1 = C ⇒ y i g ( x i ) ≤ 1 \alpha_{i}^{k+1}= C \Rightarrow y_ig(x_i) \leq 1 αik+1=Cyig(xi)1

7)如果满足则结束,返回 α k + 1 \alpha^{k+1} αk+1,否则转到步骤2)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/853858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DataWhale - 吃瓜教程学习笔记(一)

学习视频&#xff1a;第1章-绪论_哔哩哔哩_bilibili 西瓜书对应章节&#xff1a; 第一章 机器学习三观 What&#xff1a;什么是机器学习&#xff1f; 关键词&#xff1a;“学习算法” Why: 为什么要学机器学习&#xff1f; #### 1. 机器学习理论研究#### 2. 机器学习系统开…

C语言实现动态栈

#include<stdio.h> #include<stdlib.h> #include<stdbool.h>// 每一个节点的数据类型 typedef struct Node {int data;struct Node * pNext; }NODE, * PNODE; // NODE等价 struct Node PNODE等价于 struct Node *// 栈 typedef struct Stack {PNODE pTop;P…

【数据库编程-SQLite3(一)】sqlite3数据库在Windows下的配置及测试

学习分析 1、资源准备2、环境配置2.1、将资源包下载解压缩保存。2.2、在QT中创建工程,配置环境 3、测试配置3.1、 sqlite3_open函数3.2、sqlite3_close函数3.3、代码测试 1、资源准备 资源包 2、环境配置 2.1、将资源包下载解压缩保存。 解压缩得到以下文件 2.2、在QT中创建…

力扣每日一题 6/13 反悔贪心算法

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2813.子序列最大优雅度【困难】 题目&#xff1a; 给你一个长度为 n 的二…

上海2024年二手房最新成交历史数据

标签: 上海2024年二手房最新成交历史数据; 二手房; 时间: 2024年 上海市4月二手房网签套数:18230套 上海市5月二手房网签套数:19396套 上海市6月二手房网签套数: 6月1日:924套 6月2日:886套 6月3日:720套 6月4日:750套 6月5日:823套 6月6日:902套 6月7日:968套…

红黑树的基本概念

红黑树 特征 [1] 根节点是黑色的[2] 每个叶子节点都是黑色的空节点(NIL), 也就是说&#xff0c;叶子节点不存储数据[3] 任何相邻的节点都不能同时为红色&#xff0c;也就是说&#xff0c;红色节点是被黑色节点隔开的[4] 每个节点&#xff0c;从该节点到达其可达叶子节点的所有路…

阿里云香港服务器怎么样?

大家都知道阿里云是国内最受欢迎的云服务商&#xff0c;那么阿里云香港服务器究竟怎么样呢&#xff1f;和硅云的香港服务器用于做外贸网站等业务相比各有哪些优缺点呢&#xff1f; 阿里云和硅云在香港云服务领域有着广泛的应用和良好的口碑。然而&#xff0c;它们各自的特点和…

【V8引擎】 V8引擎如何运行JS的

文章目录 概要什么是V8引擎为什么需要V8引擎比较常见的javascript引起有哪些呢&#xff1f;V8引擎是如何工作的&#xff08;V8引擎的解析过程&#xff09;V8引擎的做了哪些优化 概要 本篇文章主要是讲V8引擎如何运行JS&#xff0c;对运行JS做了哪些优化 什么是V8引擎 V8 是一…

开发做前端好还是后端好?

目录 一、引言 二、两者的对比分析 技能要求和专业知识&#xff1a; 职责和工作内容&#xff1a; 项目类型和应用领域&#xff1a; 就业前景和市场需求&#xff1a; 三、技能转换和跨领域工作 评估当前技能&#xff1a; 确定目标领域&#xff1a; 掌握相关框架和库&a…

按键输入消抖

按键输入是人机对话不可缺少的一部分&#xff0c;对于消抖设计&#xff0c;一种是软件消抖&#xff0c;一种是硬件消抖。但在单片机电路设计中&#xff0c;采用电容消抖才是最佳的选择&#xff0c;其次才是定时器消抖。 1、按键输入采用软件消抖 1)、通过定时器方式定时读取按…

Vue3【二十一】Vue 路由模式(createWebHashHistory /createWebHistory )和RouterLink写法

Vue3【二十一】Vue 路由模式&#xff08;createWebHashHistory /createWebHistory &#xff09;和RouterLink写法 Vue3【二十一】Vue 路由模式和普通组件目录结构 createWebHistory history模式&#xff1a;url不带#号&#xff0c;需要后端做url适配 适合销售项目 利于seo crea…

CyberDAO:引领Web3时代的DAO社区文化

致力于Web3研究和孵化 CyberDAO自成立以来&#xff0c;致力于推动Web3研究和孵化&#xff0c;吸引了来自技术、资本、商业、应用与流量等领域的上千名热忱成员。我们为社区提供多元的Web3产品和商业机会&#xff0c;触达行业核心&#xff0c;助力成员捕获Web3.0时代的红利。 目…

C语言---------深入理解指针

目录 一、字符指针 二、指针数组&#xff1a; 三、数组指针&#xff1a; 1、定义&#xff1a; 2、&数组名和数组名区别&#xff1a; 3、数组指针的使用&#xff1a; 四、数组参数&#xff0c;指针参数&#xff1a; 1、一维数组传参&#xff1a; 2、二维数组传参&am…

模拟电子技术基础(二)--PN结

PN结的本质 芯片都是由硅晶体制成&#xff0c;单个硅原子最外层有带有4个电子 在纯硅当中这些电子会两两形成共价键&#xff0c;此时周围形成非常稳定的八电子结构 在一个回路中&#xff0c;灯泡不亮&#xff0c;不导通&#xff0c;因为电池无法吸引其中的电子离开&#xff0c…

Zombie Animations Set

僵尸动画合集,包括成对攻击/抓取、各种移动方式、爬行、击中反应、死亡动画等。 生产说明 动画总数:99(包括22个位置变化) 配对动画:36 攻击次数:6次 爬网:9 命中反应:6 空转:14 行程2 跑步次数:9次 短跑:2 匝数:3 步行次数:12次 免责声明 任何游戏玩法蓝图都不包…

力扣每日一题 6/16 字符串 + 随机一题 动态规划/数学

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 521.最长特殊序列 I【简单】 题目&#xff1a; 给你两个字符串 a 和 b&am…

【猫狗分类】Pytorch VGG16 实现猫狗分类4-开始训练

背景 现在&#xff0c;我们已经完成了&#xff0c;数据集的清洗&#xff0c;标签的制作&#xff0c;也把VGG16的模型建立好了。那接下来&#xff0c;我们应该把数据&#xff0c;放到我们搭建的vgg16的模型里面&#xff0c;让模型针对这些猫和狗的图片&#xff0c;去进行训练&a…

面试题 17.17. 多次搜索

链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; class Solution { private:struct Trie {Trie() {end false;index -1;next.resize(26);}bool end;int index;std::vector<std::unique_ptr<Trie>> next;};void insert_trie(int in…

【CT】LeetCode手撕—88. 合并两个有序数组

目录 题目1- 思路2- 实现⭐88. 合并两个有序数组——题解思路 2- ACM实现 题目 原题连接&#xff1a;88. 合并两个有序数组 1- 思路 模式识别 模式1&#xff1a;两个有序数组合并 ——> 双指针模式2&#xff1a;返回结果填充到 nums1[mn] ——> 需要开辟新的数组空间 …

lxml库在爬虫领域的贡献及应用

重头戏lxml库里面的xpath 一段代码给各位开开胃 这段代码首先导入了lxml库中的etree模块&#xff0c;然后定义了一个包含HTML内容的字符串html。接着&#xff0c;我们使用etree.HTML()函数解析这个HTML字符串&#xff0c;得到一个表示整个HTML文档的树形结构。最后&#xff0c;…