支援向量機SVM(直觀理解原理、推導)
這裡主要基於吳恩達機器學習課程對於SVM的講解進行總結回顧,並參考各類資料對其推導過程進一步理解及實現。所以分為兩個部分及最後的一些個人總結。(內容較多、篇幅較長,靜下心來、慢慢體會)
第一部分也即吳恩達課程是從邏輯迴歸的cost函式講到svm的cost優化問題的,其實直接上來看是有一定理解難度的(要求有一定相關基礎),可以先看第二部分推導,再回過頭來看第一部分會有一個更加深刻的理解和掌握。
1、吳恩達機器學習課程對於SVM的講解
1、損失函式的由來
課程裡直接從邏輯迴歸的cost函式講起,(線性迴歸用於擬合,而邏輯迴歸用於分類,這裡的SVM就是用於分類的,所以其應該是屬於邏輯迴歸的)。 如上圖所示,由邏輯迴歸的cost函式進行基本的線性變換
有了cost函式,我們的目標自然是儘可能地使其取得最小值,在這裡假設一種情況: 1)假如前面的係數C非常大的話,為了使總體cost值最小,那麼對於C後面的加和乘數其值將接近於0才可;那麼此時的cost函式就只剩下最後一項1/2*theta的平方求和。
先解釋一下為什麼要取C值非常大: 如下圖所示,為了找一條邊界將藍圓與紅叉分開,當取不同的C值對於SVM將有如圖所示兩種情況分法:一個是粉線、一個為黑線; 那麼考慮這兩條線哪個更合理呢, 1)當C不大的時候,若沒有最左下面的紅叉,其計算的分界線肯定是黑色;若加上最左下面那個紅叉,分界線將變為粉線(說明了其演算法受個別突出樣本的影響非常大) 2)當C很大的時候
所以綜上所述,SVM的cost值主要由後一個加法項決定,那麼我們的目標變成了最小化最後一項:
2、直觀的來理解一下:邊距及cost函式的theta值之間的關係
(cost越小也即theta越小,邊距越大,分類效果越好,為什麼)
如下圖所示,這裡的cost函式是有條件的,即樣本標籤y=1時,要求thetax>=1;同樣y=0時,thetax<=-1;(這裡可以直接類別邏輯迴歸,只不過是增強了其安全係數,比較的不是0而是-/+1).(在這裡上課時老師說SVM是一個強分類器,使用具有較強特徵的樣本,跟這裡的取+/-1而不是0,應該是同一個意思
課程後面還包括使用線性核函式及高斯核函式的SVM進行分類處理,這裡主要是應用層面的,後續部落格再行探討,在此只關注於其原理及推導。
2、SVM的具體推導過程(主要來源於各種部落格的個人總結及理解)
1、從最直觀的表現走起(其深層含義如第一部分所述): 如上圖所示,分類邊界wx+b=0;兩邊的支援向量(虛線上的樣本點)組成的最大邊界線wx+b=+/-1;我們的目的就是使分類邊距(即兩條虛線間的間距)最大,如下圖所示:間距=2/||w||,其約束條件y(wx+b)>=1(這這裡樣本標籤分別取+1/-1);稍微轉化一下變為求下面||w||^2的最小值:(這裡的w即對應第一部分的theta) 2、利用拉格朗日函式求解滿足上述條件的w、b
可以看到上面所求函式是一個條件函式,而求解條件函式可以借用拉格朗日函式求解(對於此函式不在過多討論,大學高數內容,只是一種方便求解的形式,個人認為沒必要深究只需記住如何使用並解決問題即可):目標函式、約束條件及拉格朗日函式如下: 對於拉格朗日函式求極值的規則就是對變數求偏導並使其為0;在這裡L(w,b,a)是有極大值的,因為乘子a>0且由約束條件知y(wx+b)>=1,L的後一項為負數;於是我們將L對w、b求偏導並使其為0,即可得到L關於乘子a的極大值: 將如上求值帶入L,即可消去w、b得到L關於a的函式: 如上問題,只含有一個變數乘子a,我們是可以求出滿足條件的a的,然後再根據之前求得的偏導式子中a與w、b的關係,我們便可以求得相應的w、b的,也即得到了分類超平面。
如上是關於SVM的一些理解及推導,其實還有很多細節沒有涉及;個人感覺主要是理解其思想及由來,包括前後之間的關係及其直觀解釋等;
分類----邏輯迴歸cost----SVM的cost,有了目標函式,就是對其不斷優化求解;在這裡利用了拉格朗日函式求解法,不斷調解a使其滿足KKT條件(KKT條件就是在約束下求得目標函式極值時αi滿足的條件,只有滿足了kkt條件,才算是滿足了目標函式和約束函式),然後通過a求得超平面引數w、b最終得到超平面。