SVM算法(三)(有監督學習)

五、SMO算法
  針對數據不完全線性可分的超平面,已將問題轉化爲下式(詳情可參考SVM算法(二)):

這裏寫圖片描述

  現在的問題是,針對要求的最小值方程和約束條件找到一組αi=(α12,…,αn)使得W(a)的值最小。最初的約束條件爲:1−yi(Wxi+b)≤0。將其帶入到優化問題中就有KKT條件:αi(1−yi(Wxi+b))=0。之前已分析過,αi≥0,而1−yi(Wxi+b)≤0,所以這兩個式子中間至少有一個值爲0。其中有一個值爲0的原因如下:假設剛開始的超平面可以將一些點正確分類,此時這些樣本點就不再起作用,分對的樣本點肯定滿足yi(Wxi+b)>1,同時滿足αi(1−yi(Wxi+b))=0,所以αi=0。而對於未被正確分類的樣本點,約束其滿足1−yi(Wxi+b)=0,它們對應的αi不爲0,至於是多少,需要看爲正確分類的樣本點在什麼位置,如果位置偏離越大,αi就越大,這樣才能將其拉回到更合理的超平面上。
  由上面的分析可知,對於數據不完全線性可分的情況,KKT條件應該如下:

這裏寫圖片描述

  其中ui=(Wxi+b)。樣本分類正確與否會決定αi的取值。
  在尋找超平面的過程中需要根據是否滿足KKT條件來進行調整,不滿足就說明需要調整,由上面KKT條件可知,不滿足KKT條件的情況有下面三種:

這裏寫圖片描述

  這三種情況下的α都需要進行調整。那麼怎麼調整呢?按照之前的分析需要從α中選取二個進行組合調整,假設調整α1
和α2。之前有個約束條件爲:∑αiyi=0,所以可知:

這裏寫圖片描述

  因爲y1,y2是標籤,要麼1要麼-1。而兩個α>=0。所以新的α是有範圍的。先假設現在y1=y2=1或−1,即兩個值相等,以都爲1爲例,此時可得:

這裏寫圖片描述

  因爲α1new是在0-C之間,所以假設α1new=0,那麼α2new可以取到最大值爲ϵ,也就是α1old2old。而α2new又不能大於C,所以其最大取值爲min(C,α1old2old)。同理如果α1new=C,那麼α2new可以取到最小值爲ϵ−C,也就是α1old2old−C,而α2new最小不能小於0,所以α2new的下限值就爲max(0,α1old2old−C)。同理,可得當y1不等於y2,即一個爲-1,一個爲1時,可以得到其取值範圍。最後的結果如下:

這裏寫圖片描述

  下面對α2new的值進行求解,因爲首先只考慮α1和α2,而原問題爲:

這裏寫圖片描述

  把這個式子乘開,把含有α1和α2單獨拿出來,其它作爲一塊,原問題轉化爲:

這裏寫圖片描述

  v是一個與α12,y1,y2有關的長式子,K是< x1∗x2 >的內積,最後面的式子跟α12沒有關係,現在的想法是利用下式:

這裏寫圖片描述

  將α1的值用α2來代替,然後帶入W(α)將α1消除,此時W(α)中只含有α2,而其中含有的α1old和α2old是上一次迭代後的結果,是已知的。所以將W(α)對α2進行求解就可以解出α2new。最後的結果下圖所示:

這裏寫圖片描述

  求解得到的α2new是有限制範圍的。求解得到α2new後再根據前面的式子,求得α1new。然後根據下式求得W的值:

這裏寫圖片描述

  同理,可以利用yi(w∗x+b)−1=0這個等式求解b的值。求得的結果如下:

這裏寫圖片描述

  可以看出每次更新會有兩個b,那麼該選擇哪個呢?選擇的標準爲誰準選誰,那麼怎麼判斷準不準呢?判斷標準就是看哪個α在0-C之間,α在0-C之間就認爲該超平面在分界線的邊界上,可以作爲支持向量,此時對應的b的值更加準確。當α都不在0-C之間,b的值取兩者的平均值。評判標準如下:

這裏寫圖片描述

  當更新完α1和α2,需要接着更新其它的α值,方法一樣,兩個兩個更新,在這個時候需要分析如何高效地選擇兩個變量進行優化,使得目標函數下降的最快,這裏用到的方法是啓發式選擇方法,要注意這裏面更新的α的值都是不滿足KKT條件的樣本點。當所有的樣本點都滿足KKT條件就找到了最優的一組αi=(α12,…,αn)解。
  至此已經解決了數據不完全線性可分的問題,但是事情情況下還存在這線性不可分的問題,那此時該如何對非線性的樣本進行處理呢?此時SVM算法是否還適應?答案是肯定的,SVM最強大的優勢就是在於對非線性樣本的處理和其處理的精準性。具體如何處理非線性數據請閱讀下文SVM算法(四)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章