SMO算法要解如下凸二次規(guī)劃的對(duì)偶問(wèn)題:
在這個(gè)問(wèn)題中尔艇,變量是拉格朗日乘子羡忘,一個(gè)變量對(duì)應(yīng)于一個(gè)樣本點(diǎn)
。變量的總數(shù)等于訓(xùn)練樣本的容量
案狠。
SMO算法是一種啟發(fā)式算法服傍,其基本思路是:如果所有變量的解都滿(mǎn)足此最優(yōu)化問(wèn)題的條件,那么這個(gè)最優(yōu)化問(wèn)題的解就得到了骂铁,因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=KKT" alt="KKT" mathimg="1">條件是該最優(yōu)化問(wèn)題的充分必要條件吹零。于是,每次只選擇兩個(gè)變量進(jìn)行優(yōu)化拉庵,使其滿(mǎn)足
條件灿椅,然后不斷迭代,直至所有變量滿(mǎn)足
條件,得到最優(yōu)解茫蛹。在優(yōu)化變量的選取上操刀,一般一個(gè)是違反
條件最嚴(yán)重的一個(gè),另一個(gè)由約束條件自動(dòng)決定婴洼。
兩個(gè)變量二次規(guī)劃的求解方法
根據(jù)SMO算法骨坑,公式(1)-(3)的問(wèn)題可以通過(guò)多次選擇變量,
柬采,求解下列子問(wèn)題得到:
上述優(yōu)化問(wèn)題欢唾,因?yàn)榭梢酝ㄟ^(guò)公式(5)可以用來(lái)表示
,所以可以考慮為對(duì)
的最優(yōu)化問(wèn)題粉捻。如果
礁遣,則
,
為常數(shù):
根據(jù)公式(6)杀迹,亡脸,
在正方形內(nèi)部,加上公式(5)树酪,所以
浅碾,
為直線(xiàn)和正方形交線(xiàn)上的點(diǎn)。同理续语,如果
垂谢,則
,如下圖:
假設(shè)問(wèn)題(4)-(6)優(yōu)化前疮茄,
的值為
滥朱,
,優(yōu)化后的最優(yōu)解為
力试,
徙邻,并且假設(shè)在沿著約束方向未經(jīng)剪輯時(shí)
的最優(yōu)解為
。
需要滿(mǎn)足不等式
其中畸裳,和
是
所在對(duì)角線(xiàn)段的界缰犁,如果
,則
因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Calpha_1%5E%7Bnew%7D-%5Calpha_2%5E%7Bnew%7D%3Dk%3D%5Calpha_1%5E%7Bold%7D-%5Calpha_2%5E%7Bold%7D" alt="\alpha_1^{new}-\alpha_2^{new}=k=\alpha_1^{old}-\alpha_2^{old}" mathimg="1">怖糊,所以在直線(xiàn)
和正方形的交線(xiàn)段上帅容,通過(guò)上下平移就能夠得到上面
的界。同理伍伤,如果
,則
于是通過(guò)公式(5)得到用
的表示:
代入公式
并求導(dǎo)等于0便可以得到未經(jīng)剪輯時(shí)的最優(yōu)解
,最后根據(jù)上述
和
裁剪得到
荐开。
最優(yōu)化問(wèn)題(4)-(6)沿著約束方向未經(jīng)剪輯時(shí)的解是
其中,
是輸入空間到特征空間的映射,
初斑,
為
表示對(duì)輸入的預(yù)測(cè)值與真實(shí)輸出
之差,其中
經(jīng)剪輯后的解是
然后根據(jù)公式
計(jì)算鹃答。
變量的選擇方法
SMO算法每次都要選擇兩個(gè)變量進(jìn)行優(yōu)化,其中至少一個(gè)變量是違反條件的锋八。
第一個(gè)變量的選擇
SMO稱(chēng)選擇第1個(gè)變量的過(guò)程為外層循環(huán)。外層循環(huán)在訓(xùn)練樣本中選取違反條件最嚴(yán)重的樣本點(diǎn)樊销,并將其對(duì)應(yīng)的變量作為第1個(gè)變量裤园,具體的拧揽,檢驗(yàn)訓(xùn)練樣本點(diǎn)
是否滿(mǎn)足
條件痒谴,即
其中意鲸,。
該檢驗(yàn)是在范圍內(nèi)進(jìn)行的槐雾。在檢驗(yàn)過(guò)程中,外層循環(huán)首先遍歷所有滿(mǎn)足條件
的樣本點(diǎn)擎值,即間隔邊界上的支持向量點(diǎn),檢驗(yàn)它們是否滿(mǎn)足
條件捆交,如果這些樣本點(diǎn)都滿(mǎn)足
條件品追,那么遍歷整個(gè)訓(xùn)練集肉瓦,檢驗(yàn)它們是否滿(mǎn)足
條件。
第二個(gè)變量的選擇
SMO稱(chēng)選擇第2個(gè)變量的過(guò)程為內(nèi)層循環(huán)鲫趁。第2個(gè)變量的選擇標(biāo)準(zhǔn)是希望能使有足夠大的變化堡僻。由于
所以的變化依賴(lài)于
。于是選擇使
最大的
牲阁,當(dāng)
是正的,選擇最小的
作為
,如果
是負(fù)的法瑟,選擇最大的
作為
,為了節(jié)省計(jì)算時(shí)間酥夭,將所有的
值保存在一個(gè)列表中。
如果這種內(nèi)層循環(huán)找不到一個(gè)有足夠下降的讶隐,則遍歷在間隔邊界上的支持向量點(diǎn)地消,依次將其對(duì)應(yīng)的變量作為
試用疼阔,直到有足夠的下降竿开,如果還不可以,則遍歷訓(xùn)練集列荔。再不可以,換一個(gè)
。
計(jì)算閾值
和差值
更新完,
的值,都需要重新計(jì)算閾值
,當(dāng)
時(shí),由
條件可知
所以
由于未更新的為
移項(xiàng)得到
代入公式(15)得到的更新公式
同理鳞青,當(dāng)時(shí),可以推出
的更新公式
如果,
同時(shí)滿(mǎn)足條件
,
,那么
,如果
,
是0或者
,那么
和
以及它們之間的數(shù)都是符合
條件的閾值,這時(shí)選擇它們的中點(diǎn)作為
须教。
更新完,
后還需要更新對(duì)應(yīng)的
值挤土,并保存在列表中咖杂,
的更新需要用到
的值,以及所有支持向量對(duì)應(yīng)的
:
其中是所有支持向量
的集合伍绳。
SMO算法
輸入:訓(xùn)練數(shù)據(jù)集模蜡,其中
甥绿,
共缕,
,精度
士复;
輸出:近似解图谷。
(1)選取初值,令
阱洪;
(2)選取優(yōu)化變量便贵,
,解析求解兩個(gè)變量的最優(yōu)化問(wèn)題(4)-(6)冗荸,求得最優(yōu)解
承璃,
其中
如果
如果
更新為
;
(3)若在精度范圍內(nèi)滿(mǎn)足停機(jī)條件
其中
則轉(zhuǎn)(4)蚌本;否則令盔粹,轉(zhuǎn)(2);
(4)取魂毁。