導讀
昨天詳細談了談最簡單的SVM,相比較于今天要講的Soft Margin SVM來說,昨天講的其實是Hard Margin SVM,沒看過的朋友們可以點選這裡:
【機器學習】今天想跟大家聊聊SVM
為什麼提出Soft Margin SVM
還是舉一個例子吧
該點屬于藍色類别,是以決策線如圖所示。但是這個決策邊界如果運用到現實環境中的話,肯定會有很大的誤分類點。也就是該分類線沒有泛化能力。關于上述的情況,其實我們的理想分類線應該為:
雖然在訓練集中分類效果不好,但是它具有一定的泛化能力!畢竟我們的模型最終都是要用到現實生活中去的。
再比如存線上性不可分的點,但還是理想情況還是可以分的情況,如
而能解決上述2種問題的SVM就被成為Soft Margin SVM,允許一些點進行錯誤分類。
Soft Margin SVM理論
我們先回顧下之前的SVM(Hard Margin SVM)的優化公式:
像上述距離的兩種情況不能分類的具體原因就是該條件的限制:
現在我們允許一些點犯錯,也就是允許一些點不滿足這個公式,放放水,是以對每個點引入一個松弛變量(大于等于0),使得
+它的松弛變量 >= 1
即可,轉換下公式為
>= 1 - 它的松弛變量
上述式子的專業公式為:
但是松弛變量也不能太大,得需要有東西看着它,怎麼看着呢?當然就是用目标函數啦。又因為每個資料點都有自己的松弛變量,是以需要需要求和作為最終目标函數的一部分:
但是這樣的目标函數
表示a和b重要性是相同的。但是實際上a,b是有各自的權重的,但是這裡其實隻要在b部分加個權重C即可:
當C越大時,代表主要是優化b部分,是以就對于b項很嚴格,最終就使得結果越接近Hard Margin SVM。反之,當C越小時,代表主要優化a部分,就對于b寬松很多,最終就是的結果非常的Soft Margin SVM。如何選擇C值,自己調試即可。
是以最終的完整目标函數為:
SVM正則化
正則化,聽起來有難度的趕腳,但是實際上很簡單,比如上述的目标函數就是L1正則:
這裡的L1正則說的是松弛變量的幂。那樣這樣就很好了解L2正則啦:
常用的是L2正則,個人覺得是實驗效果決定的結果吧。
代碼實踐
這裡用的是sklearn來實踐的
資料介紹
初始化SVM C = 1e9
SVM還有很多參數,感興趣的可以自行了解哈。
可視化
改變C的值,C = 0.01
注意到該點的分類變化。
PS:今天就到這裡吧,下次會帶來對偶問題和核函數,以及SVM的回歸模型。敬請期待!
IELTS a bit
documentation n. 檔案,證明檔案,史實,檔案編制
clientele n. 客戶;訴訟委托人
sequential adj. 連續的;相繼的;有順序的
conclusive adj. 決定性的;最後的;确定的;确實的;确定性的
introspection n. 内省;檢討