1. 程式人生 > >SVM支援向量機之證明SVM (三)

SVM支援向量機之證明SVM (三)

1、線性學習器

感知機演算法

感知機演算法是1956年提出的,年代久遠,依然影響著當今,當然,可以肯定的是,此演算法亦非最優,後續會有更詳盡闡述。

不過有一點必須清楚,這個演算法的作用很簡單:不斷的訓練試錯,以期尋找一個合適的超平面。
感知機演算法的虛擬碼如下所示:

給定線性可分的資料集S和學習率η∈R+; 
w0←0;b0←0;k←0
R←max i≤i≤l ∥xi∥
重複: 
for i=1 to l
  if yi[(wk⋅xi)+bk]≤0     
  then
    wk+1 ← wk+ηyixi
    bk+1 ← bk+ηyiR2
    k ← k+1
  end if
end for
直到在for迴圈中沒有錯誤發生 
返回(wk,bk),這裡k是錯誤次數

下面舉個例子:

在這裡插入圖片描述
圖1 感知機演算法示例

如上圖1所示,憑我們的直覺可以看出,圖中的紅線是最優超平面,藍線則是根據感知機演算法在不斷的訓練中,最終,若藍線能通過不斷的訓練移動到紅線位置上,則代表訓練成功。

既然需要通過不斷的訓練以讓藍線最終成為最優分類超平面,那麼,到底需要訓練多少次呢?這個問題可以用Novikoff定理解釋。

Novikoff定理:如果分類超平面存在, 僅需在序列S上迭代幾次,在界為(2Rγ)2的錯誤次數下就可以找到分類超平面,演算法停止。 
- R=max 1≤i≤l ∥xi∥
- γ :擴充間隔(即前文第一章中提到的最大分類間隔;根據誤分次數公式可知,迭代次數與對應於擴充(包括偏置)權重的訓練集的間隔有關)

Novikoff定理告訴我們當間隔是正的時候感知機演算法會在有限次數的迭代中收斂,也就是說Novikoff定理證明了感知機演算法的收斂性,即能得到一個界,不至於無窮迴圈下去。

2、非線性學習器

Mercer定理

Mercer定理:如果函式K是Rn×Rn→R上的對映(也就是從兩個n維向量對映到實數域)。

那麼如果K是一個有效核函式(也稱為Mercer核函式),那麼當且僅當對於訓練樣例{x1,x2,…,xm},其相應的核函式矩陣是對稱半正定的。 要理解Mercer定理,先要了解什麼是半正定矩陣;要了解半正定矩陣,需要了解什麼是正定矩陣。

關於正定與半正定矩陣,內容基本上是大學矩陣論中的內容,可以重新複習一下。下面給出一些正定矩陣和半正定矩陣的簡單介紹。

正定矩陣:設M是n階方陣,如果對任何非零向量zz,都有zTMz>0,其中zT表示z的轉置,就稱M正定矩陣。

正定矩陣的判定定理: 
  定理1:對稱陣A為正定的充分必要條件是:A的特徵值全為正。 
  定理2:對稱陣A為正定的充分必要條件是:A的各階順序主子式都為正。 
  定理3:任意陣A為正定的充分必要條件是:A合同於單位陣。 
正定矩陣的性質: 
  性質1:正定矩陣的任一主子矩陣也是正定矩陣。 
  性質2:若A為n階對稱正定矩陣,則存在唯一的主對角線元素都是正數的下三角陣L,使得A=LLT,此分解式稱為 正定矩陣的楚列斯基(Cholesky)分解。 
  性質3:若A為n階正定矩陣,則A為n階可逆矩陣。

半正定矩陣的概念與正定矩陣比較相似:

半正定矩陣:一個n×n的埃爾米特矩陣M是正定的,當且僅當對於每個非零的復向量z,都有zTMz>0,則稱M為正定矩陣,其中zT表示z的轉置矩陣。當zTMz>0弱化為zTM≥0時,稱M是半正定矩陣;

半正定矩陣的判定:若矩陣A的特徵值大於等於0,則半正定。否則矩陣A為非正定。

3、損失函式

支援向量機(SVM)是90年代中期發展起來的基於統計學習理論的一種機器學習方法,通過尋求結構化風險最小來提高學習機泛化能力,實現經驗風險和置信範圍的最小化,從而達到在統計樣本量較少的情況下,亦能獲得良好統計規律的目的。

可能很多人並不瞭解結構化風險、經驗風險是什麼,要了解這兩種風險,還得從監督學習說起。
監督學習實際上就是一個經驗風險或者結構風險函式的最優化問題。風險函式度量平均意義下模型預測的好壞,模型每一次預測的好壞用損失函式來度量。

監督學習從假設空間F中,選擇模型ff作為決策函式,對於給定的輸入X,由輸入f(X)給出相應的輸出Y。引數的具體意義如下:

X:輸入的資料;
f(X):輸入資料後,根據模型輸出的預測值;
Y:實際的輸出資料;

預測值f(X)可能與真實值Y一致,也可能不一致。預測值與真實值之間的差別成都用一個損失函式來度量。損失函式被記為L(Y,f(X))。

(1) 常用損失函式

0-1損失函式

L(Y,f(X))=1,Y≠f(X)
L(Y,f(X))=0,Y=f(X)

平方損失函式

L(Y,f(X))=(Y−f(X))^2

絕對損失函式

L(Y,f(X))=|Y−f(X)|

對數損失函式

L(Y,P(Y|X))=−logP(Y|X)

(2) 經驗風險與結構風險

如果給定一個訓練資料集如下:

T={(x1,y1),(x2,y2),...(xi,yi)...,(xN,yN)}                           (3.1)

模型f(X)f(X)關於訓練資料集的平均損失,稱為經驗風險,公式如下:

Remp(f)=1N∑i=1NL(yi,f(xi))                                          (3.2)

關於如何選擇模型,監督學習有兩種策略:經驗風險最小化、結構風險最小化。
經驗風險最小化的策略認為:經驗風險最小的模型就是最優模型,即按照經驗風險最小化的標準求取最優模型,就是求解如下最優化問題:

minf∈F1N∑i=1NL(yi,f(xi))                                           (3.3)

然而當樣本容量很小時,經驗風險最小化的策略容易產生過擬合現象。
結構風險最小化可以防止過擬合。結構風險實在經驗風險的基礎上,加上表示模型複雜度的懲罰項,結構風險的定義如下:

Rsrm(f)=1/N∑i=1-N L(yi,f(xi)) + λJ(f)                               (3.4)

式(3.4)中引數說明如下:
J(f):模型的複雜度
模型f越複雜,J(f)越大;模型越簡單,J(f)越小;
也就是說,J(f)是對複雜模型的懲罰;
λ≥0:權衡經驗風險和模型複雜度的係數

結構風險最小化的策略認為結構風險最小的模型就是最優模型,所以求最優模型就是求解如下所示的最優化問題:

min f∈F 1/N∑i=1-N L(yi,f(xi)) + λJ(f)                               (3.5)

這樣監督學習問題就變成了經驗風險或結構風險函式的最優化問題,如式(3.4)與(3.5)。
於是,SVM也有了第二種理解,即最優化+損失最小。如果從損失函式和優化演算法角度看SVM, boosting, LR等演算法,可能會有不同收穫。

4、最小二乘法

(1) 最小二乘法的說明

最小二乘法(又稱最小平方法)是一種數學優化技術。它通過最小化誤差的平方和尋找資料的最佳函式匹配。利用最小二乘法可以簡便地求得未知的資料,並使得這些求得的資料與實際資料之間誤差的平方和為最小。用函式表示為下式:

minx→∑i=1-n (ym−yi)^2                                               (4.1)

誤差可以被定義為預測值與實際真實值的差量,所以最小二乘法就是使誤差平方和達到最小,以尋求估計值的方法。用最小二乘法得到的估計,就叫做最小二乘估計。當然,取平方和作為目標函式只是眾多可取的方法之一。
最小二乘法的一般形式,可以表示成下式:

minx→ ∥ym−→−y→∥2                                                   (4.2)

有效的最小二乘法,基本思想就是認為測量中有誤差,所以所有方程的累計誤差為:
累積誤差=∑(觀測值−理論值)^2

我們求解出導致累計誤差最小的引數即可:

β^= argminβ∑i=1-n ei^2
  = β^ = argminβ∑i=1-n [yi−(β0+β1x1i+...+βpxpi)]^2                   (4.3)

最小二乘法的優點如下:

最小二乘使得誤差平方和最小,並在各個方程的誤差之間建立了平衡,防止某一個極端誤差取得支配地位;
計算中只要求偏導後求解線性方程組,計算過程明確便捷;
最小二乘可以匯出算術平均值作為估計值;

對於上面的最後一點,從統計學角度來看,是很重要的一個性質。推理如下:
假設真值為θ,x1,…,xn是測量值。每次測量的誤差為ei=xi−θ,那麼按照最小二乘法,累計誤差為:

L(θ)=∑i=1-n ei^2 = ∑i=1-n (xi−θ)^2                                   (4.4)

求解θ使L(θ)最小,結果正好是其算術平均值:x¯¯¯=(∑i−1-n xi)/n。

由於算術平均是一個歷經考驗的方法,而以上的推理說明,算術平均是最小二乘的一個特例,所以從另一個角度說明了最小二乘方法的優良性,使我們對最小二乘法更加有信心。

最小二乘法發表之後很快得到了大家的認可接受,並迅速的在資料分析實踐中被廣泛使用。不過歷史上又有人把最小二乘法的發明歸功於高斯,這又是怎麼一回事呢。高斯在1809年也發表了最小二乘法,並且聲稱自己已經使用這個方法多年。高斯發明了小行星定位的數學方法,並在資料分析中使用最小二乘方法進行計算,準確的預測了穀神星的位置。

說了這麼多,貌似跟本文主題SVM沒有關係。後文會將最小二乘法與SVM聯絡在一起。本質上說,最小二乘法即是一種引數估計方法,說到引數估計,咱們得從一元線性模型說起。

(2) 最小二乘法的解法

什麼是一元線性模型呢? 這裡引用一元線性模型的一篇部落格,來梳理下幾個基本概念:
參考地址:《一元線性迴歸模型與最小二乘法及其C++實現 》

監督學習中,如果預測的變數是離散的,我們稱其為分類(如決策樹,支援向量機等);如果預測的變數是連續的,我們稱其為迴歸;
迴歸分析中,如果只包括一個自變數和一個因變數,且二者的關係可用一條直線近似表示,這種迴歸分析稱為一元線性迴歸分析;
如果迴歸分析中包括兩個或兩個以上的自變數,且因變數和自變數之間是線性關係,則稱為多元線性迴歸分析。

對於二維空間線性是一條直線;對於三維空間線性是一個平面,對於多維空間線性是一個超平面;
對於一元線性迴歸模型,假設從總體中獲取了n組觀察值(X1,Y1),(X2,Y2),…,…,(Xn,Yn)。對於平面中的這n個點,可以使用無數條曲線來擬合。要求樣本回歸函式儘可能好地擬合這組值。綜合起來看,這條直線處於樣本資料的中心位置最合理。

選擇最佳擬合曲線的標準可以確定為:使總的擬合誤差(即總殘差)達到最小。有以下三個標準可以選擇:

用“殘差和最小”確定直線位置是一個途徑。但很快發現計算“殘差和”存在相互抵消的問題;
用“殘差絕對值和最小”確定直線位置也是一個途徑,但絕對值的計算比較麻煩;
最小二乘法的原則是以“殘差平方和最小”確定直線位置,用最小二乘法除了計算比較方便外,得到的估計量還具有優良特性。這種方法對異常值非常敏感。

最常用的是普通最小二乘法(Ordinary Least Square, OLS):所選擇的迴歸模型應該使所有觀察值的殘差平方和達到最小,即採用平方損失函式。

我們定義樣本回歸模型為:

Yi=β0^+β1^Xi+ei

轉換上式為:

ei=Yi−β0^−β1^Xi                                                       (4.5)

其中,ei為樣本(Xi,Yi)的誤差。
接著,我們定義平方損失函式Q:

Q = ∑i=1-n ei^2 = ∑i=1-n (Yi−Yi^)2 = ∑i=1-n (Yi−β0^−β1^Xi)^2          (4.6)

則我們通過Q最小確定這條直線,就可以確定β0^ , β1^ ,以β0^ ,β1^ 為變數,把它們看做是Q的函式,就變成了一個求極值的問題。β0^ ,β1^可以通過求導得到。
令Q對β0^ ,β1^求偏導得到:

∂Q∂β0^ = 2∑i=1-n (Yi−β0^−β1^Xi)(−1) = 0
∂Q∂β1^ = 2∑i=1-n (Yi−β0^−β1^Xi)(−Xi) = 0                              (4.7)

解得:

∂Q∂β0^ = (n∑ni=1-n XiYi + ∑i=1-n Xi∑i=1-n Yi ) / (n∑i=1-n Xi^2−(∑i=1-n Xi)^2)
∂Q∂β1^ = (n∑ni=1-n XiYi − ∑i=1-n Xi∑ni=1Yi ) / (n∑i=1-n Xi^2−(∑i=1-n Xi)^2)                       (4.8)

這就是最小二乘法的解法,求得平方損失函式的極值點。
自此,你看到求解最小二乘法與求解SVM問題何等相似,尤其是定義損失函式,而後通過偏導求得極值。

5、SMO演算法

上文中,我們提到了求解對偶問題的序列最小最優化演算法SMO演算法,但並未提到其具體解法。
首先回到之前沒有解決的問題,即式(3.5):

max α∑i=1-n αi − 1/2∑i=1-n αiαjyiyj⟨xi,xj⟩
s.t.,0≤αi≤C,i=1,...,n
∑i=1-n αiyi=0

實際上,上式最終等價於求解:

minα Ψ(α→) = min α 1/2 ∑i=1-n ∑j=1-n yiyjK(xi→,xj→)αiαj−∑i=1-n αi
s.t.,0≤αi≤C,i=1,...,n
∑i=1-n αiyi=0                                                                    (5.1)

下面介紹上式(5.1)的推導過程。

(1) SMO演算法的推導

推導SMO演算法之前,我們首先定義特徵到結果的輸出函式如下:

u=ω→⋅x→−b                                                                        (5.2)

注:其實上式(5.2)中的u和我們之前定義的f(x)=ωTx+b實質是一樣的。

接著我們回顧一下在第一章第4節,最大間隔分類器部分設定的原始優化問題。由於函式間隔γ=1,所以改寫式(1.1)如下式(5.3)所示:

min1/2∥ω∥^2
s.t.,yi(ωTxi+b)≥1,i=1,...,n                                                      (5.3)

按照第二章第1節的方法,對上式(5.3)的目標函式求拉格朗日函式,並令拉格朗日函式對ω,α求偏導,得到:

ω→=∑i=1-n yiαixi→
b=ω→⋅xk→−yk(對於αk>0)                                                            (5.4)

將上式(5.4)代入到(5.2)中,得到:

u = ∑i=1-n yjαjK(xj→,x→)−b                                                        (5.5)

回顧前文第二章第2節第(2)小節中的講解,拉格朗日函式的目標函式可以轉化成式(2.12),即:

max α∑i=1-n αi − 1/2∑i=1-n αiαjyiyjK(xi,xj)
s.t.,αi≥0,i=1,...,n
∑i=1-n αiyi = 0

上式也可以從max函式轉化成min函式,變成:

minΨ(α→)=minα1/2∑i=1-n αiαjyiyjK(xi,xj) − ∑i=1-n αi
s.t.,αi≥0,i=1,...,n
∑i=1-n αiyi = 0                                                                    (5.6)

按照前文第二章第3節,加入鬆弛變數後,模型修改成式(3.3):

min1/2∥ω∥^2 + C∑i=1-n ξi
s.t.,yi(ωTxi+b)≥1−ξi,i=1,...,n
0≤ξi≤C,i=1,...,n

從而,我們的問題最終變為下式:

minΨ(α→) = min α1/2∑i=1-n αiαjyiyjK(xi,xj) − ∑i=1-n αi
s.t.,0≤ξi≤C,i=1,...,n
∑i=1-n αiyi = 0                                                                    (5.7)

下面,我們要解決的問題是在αi={α1,α2,…,αn}上求取上式(5.7)中目標函式的最小值。

為了求解這些乘子,每次從中任意抽取兩個乘子α1,α2,然後固定α1,α2和以外的其它乘子{α3,α4,…,αn}{α3,α4,…,αn},使得目標函式只是關於和的函式,使得目標函式只是關於α1,α2的函式。這樣不斷的從一堆乘子中任意抽取兩個求解,不斷的迭代求解子問題,最終達到求解原問題的目的。

上式(5.7)中的Ψ(⋅)即為原對偶問題的子問題目標函式,它可以表達為:

Ψ=1/2K11α1^2 + K22α2^2 + sK12α1α2 + y1α1v1 + y2α2v2 − α1 − α2 + Ψconstant          (5.8)

上式(5.8)的引數含義如下所示:

Kij=K(xi→,xj→)
vi→=∑j=3-n yjα∗jKij = ui+b∗−y1α∗1K1i−y2α∗2K2i
s=y1⋅y2

即s的值為-1或1,具體由y1,y2共同決定。
為了解決這個子問題,首要問題便是每次如何選取α1,α2。
實際上,選取的兩個乘子α1,α2中,一個乘子是違反KKT條件最嚴重的,另外一個乘子由另外一個約束條件選取。

首先選取第一個乘子,即違反KKT條件最嚴重的乘子。
根據KKT條件,可以得出目標函式中αiαi取值的含義:

αi=0 ⟺ yiui≥1
0<αi<C ⟺ yiui=1
αi=C ⟺ yiui≤1                                                                     (5.9)

注:上式(5.9)中的αi還是拉格朗日乘子。
對於上式(5.9)的解釋如下:

第一種情況,表明αi是正常分類,在間隔邊界內部;
第二種情況,表明αi是支援向量,在間隔邊界之上;
第三種情況,表明αi在兩條間隔邊界之間;

而我們求的最優解需要滿足KKT條件,也就是說上述三個條件全都要滿足。

反過來看,以下幾種情況出現時,KKT條件將不能滿足:
yiui≤1(原本等價於αi=C),然而實際上αi<C;
yiui≥1(原本等價於αi=0),然而實際上αi>0;
yiui=1(原本等價於0<αi<C),然而實際上αi=0或αi=C;

上述三種情況,都不滿足KKT條件。對於這些不滿足KKT條件的αi,那麼就需要對其進行更新。這可以理解成式(5.7)的第一個約束條件。

另外更新的同時還需要第二個約束條件,即∑i=1-n αiyi = 0的限制。

根據∑i=1-nαiyi = 0的限制,如果假設選擇兩個乘子α1,α2,並設它們更新之前分別是αold1,αold2,更新之後分別是αnew1,αnew2,那麼更新前後的值需要滿足以下等式,才能保證前面和為0的約束條件:

α1newy1+α2newy2 = α1oldy1+α2oldy2 = ξ                                              (5.10)

上式(5.10)中,ξ是常數。

上面兩個因子不容易同時求解,所以我們可以先求第二個乘子α2的解(αnew2),得到αnew2之後,然後再用αnew2表示α1的解(αnew1)。為了求解αnew2,首先需要確定αnew2的取值範圍。

假設αnew2的上下邊界分別為H,LH,L,那麼就有:

L≤αnew2≤H                                                                          (5.11)

接下來,我們就可以綜合0≤αi≤C, αnew1y1+αnew2y2=αold1y1+αold2y2=ξ這兩個約束條件求取αnew2的取值範圍。
當y1≠y2即y1,y2異號時,根據αnew1y1+αnew2y2=αold1y1+αold2y2=ξ,可以得到αold1−αold2=ξ,所以有:

L=max(0,−ξ),H=min(C,C−ξ)                                                           (5.12)

在這裡插入圖片描述
圖2 y1≠y2的上下邊界

當y1=y2即y1,y2同號時,同樣根據αnew1y1+αnew2y2=αold1y1+αold2y2=ξ,可以得到αold1+αold2=ξ,所以有:

L=max(0,ξ−C),H=min(C,ξ)                                                            (5.13)

在這裡插入圖片描述
圖3 y1=y2的上下邊界

如此總結,根據y1,y2異號或同號,可以得到αnew2的上下界分別為:

L=max(0,αold2−αold1),H=min(C,C+αold2−αold1),y1≠y2
L=max(0,αold2+αold1−C),H=min(C,αold2+αold1),y1=y2                                  (5.14)

回顧前面第二個約束條件αnew1y1+αnew2y2=αold1y1+αold2y2=ξ,令等式兩邊同時乘以y1,可得到:

α1+sα2=α∗1+sα∗2=w                                                                  (5.15)

上式(5.15)的引數說明如下:

w=−y1∑i=3-n yiαi*
s=y1⋅y2

即s的值為-1或1,具體由y1,y2共同決定。
所以通過上式,我們可以用α2表示α1:α1=w−s⋅α2
從而把子問題的目標函式轉換為只含α2的問題:

Ψ=12K11(w−sα2)^2+12K22α2^2+sK12(w−sα2)α2 
+ y1(w−sα2)v1−w+sα2+y2α2v2−α2+Ψconstant                                            (5.16)

上式(5.16)對α2求導,得到:

dΨ/dα2 = −sK11(w−sα2)+K22α2−K12α2+sK12(w−sα2)−y1v1+s+y2v2−1 = 0

化簡上式得到:

α2(K11+K22−2K12)=s(K11−K12)w+y2(v1−v2)+1−s                                         (5.17)

然後,將:

s=y1⋅y2
α1+sα2=α1∗+sα2∗=w
Kij=K(xi→,xj→)
vi→=∑j=3-n yjαj∗Kij=ui+b∗−y1α1∗K1i−y2α2∗K2i

代入上式(5.17),可得到:

α2new,unc(K11+K22−2K12) = α2old(K11+K22−2K12) + y2(u1−u2+y2−y1)                    (5.18)

注:其中αnew,unc2的unc是指unclipped,意思是未剪輯,後面會有解釋。

令Ei=ui−yi,表示預測值與真實值之差,再令η=K(x1→,x1→)+K(x2→,x2→)−2K(x1→,x2→),然後在上式(5.18)兩端同時除以η,得到一個關於單變數α2的解:

α2new,unc = α2old+y2(E1−E2)η                                                       (5.19)

關於α2的這個解,其實沒有考慮到其約束條件0≤α2≤C,即此時的解是未經剪輯的解。此時考慮約束條件0≤α2≤C,可得到經過剪輯後的αnew2的解析解為:

α2new={H,α2new,unc>H  α2new,unc,L≤α2new,unc≤H  L,α2new,unc<L }                     (5.20)

求出αnew2後,便可以根據αnew1y1+αnew2y2=αold1y1+αold2y2求出α1,
即αnew1=αold1+y1y2(αold2−αnew2)。
說到這裡,那麼具體應該如何選擇乘子α1,α2呢?總結如下:

第一個乘子α1,可以通過剛剛說的那三種不滿足KKT條件來找;
第二個乘子α2,可以尋找滿足條件max|Ei−Ej|的乘子。
而b在滿足下述條件時更新:

b={b1,0<α1new<C  b2,0<α2new<C  (b1+b2)/2,otherwise}                                (5.21)

更新的b值為:

b1new=bold−E1−y1(α1new−α1old)K(x1→,x1→)−y2(α2new−α2old)K(x1→,x2→)
b2new=bold−E2−y1(α1new−α1old)K(x1→,x2→)−y2(α2new−α2old)K(x2→,x2→)                  (5.22)

且每次更新完兩個乘子的優化後,都需要再重新計算b,以及對應的EiEi值。
最後更新所有的αi,y,b,這樣模型就出來了。從而我們就得到最開始提出的分類函式式(1.17):

f(x)=∑i=1nαiyi⟨xi→,x→⟩+b

(2) SMO演算法的步驟

綜上,總結SMO的主要步驟:

選取一對αi,αj,選取方法使用啟發式方法;
固定除αi,αj之外的其他引數,確定W極值條件下的αi,αi由αj表示。
假設某一次迭代中,需要更新x1,x2對應的拉格朗日乘子α1,α2,那麼這個小規模的二次規劃問題寫為:

Ls = maxα{(α1+α2) + ∑i=3-n αi−1/2|α1y1ϕ(x1) + α2y2ϕ(x2) + ∑i=3-n αiyiϕ(xi)|^2}
s.t.,α1y1+α2y2=−∑i=3-n αiyi,0<αi<C

那麼每次迭代中,應該如何更新乘子?具體步驟如下:

計算上下界H,L:

L=max(0,αold2−αold1),H=min(C,C+αold2−αold1),y1≠y2
L=max(0,αold2+αold1−C),H=min(C,αold2+αold1),y1=y2

計算Ls的二階導數

η=2ϕ(x1)Tϕ(x2)−ϕ(x1)Tϕ(x1)−ϕ(x2)Tϕ(x2)

更新Ls

αnew2=αold2−y2(e1−e2)η
ei=gold(xi)−yi

計算變數α2

如式(5.20)

更新α1

αnew1=αold1+y1y2(αold2−αnew2)

知道了如何更新乘子,那麼選取哪些乘子進行更新呢?具體選擇方法有以下兩個步驟:

第一個乘子α1,可以通過剛剛說的那三種不滿足KKT條件來找;
第二個乘子α2,可以尋找滿足條件max|Ei−Ej|的乘子。
最後,每次更新完兩個乘子的優化後,都需要再重新計算b,及對應的Ei值。