手推SVM(一)-數學推導
- SVM的想法
- SVM中在數學上目標
2.1 判定條件
2.2 最大間隔假設 - SVM的推導
3.1 第一種境界
3.2 第二種境界
3.3 第三種境界-kkt條件
SVM的推導過程和他的地位一樣重要,雖然很久以前就已經接觸過SVM了,但總感覺理解不是很深,接著聽課的熱度,順便寫篇文章讓自己理解更深刻一點,本文假設你只會簡單的向量乘法,推匯出SVM。
1.SVM的想法
監督學習,作為一個二分類任務,在平面上表示就是希望有這麼一條分類邊界,能把正負樣本分開,每種分類器畫的分類邊界都不一樣,到底哪個最好,只能看問題,看資料,看實際的應用場景。
上圖中,有三條決策邊界,而SVM的關鍵假設是 :找到一條直線到樣本點兩邊的距離最大,也就是margin最大。這樣的好處就是模型具有更好的魯棒性。
什麼是魯棒性呢?
通俗理解來說就是更能容忍誤差,比如下圖中的紅色xx,從左到右是點到直線的距離越來越遠的,如果是最左邊的一條線,假設有一個點和紅色叉叉比較接近,但剛好在紅色叉叉的下方,這時候,模型會判定這條線藍色小圈圈的,而最右邊的那條線則會判定為紅色叉叉,所以相比來說,最右邊的線比最左邊的線具有更好的魯棒性。
上圖是點到線的距離,那換成線到點的距離是不是一樣的呢?
很容易想到我們希望這條街的街寬最大,但是,該怎麼定義呢?
用數學表示式表達出來可以有這樣的式子,街寬用術語來說就是margin:
OK,這是我們的想法,那我們怎麼實現這個想法呢?
2.SVM中在數學上目標
2.1 判定條件
假設中間那條實線是最好的決策邊界,做
2.2 最大間隔假設
為了讓決策邊界更好的劃分樣本,也為了模型具有更好的泛化能力,我們希望模型在訓練集中,這條街的寬度儘可能大,同時,因為
再來回顧一下,我們的總目標就是找到這樣引數
- SVM的推導
3.1 第一種境界
提個要求很容易,但具體的引數應該怎麼求呢?
為了求解方便,我們用一個小技巧,把最大間隔假設合成一個式子:
那這個街寬應該怎麼求出來呢?假設我們只會向量的乘法,我們來看一下怎麼通過向量的乘法求出街的寬度。
下方為負樣本,上方為正樣本,在法向量