1. 程式人生 > >【機器學習四】SVM

【機器學習四】SVM

機器學習中一般用的比較多的是整合學習演算法如bagging和boosting,以及SVM。這2個演算法的效果好。且對資料的分佈沒有啥要求。今天要講的是SVM即支援向量機。
SVM的定義
支援向量機(Support Vecor Machine, SVM)本身是一個二元分類演算法,是
對感知器演算法模型的一種擴充套件,現在的SVM演算法支援線性分類和非線性分
類的分類應用,並且也能夠直接將SVM應用於迴歸應用中,同時通過OvR
或者OvO的方式我們也可以將SVM應用在多元分類領域中。在不考慮整合
學習演算法,不考慮特定的資料集的時候,在分類演算法中SVM可以說是特別
優秀的。在這裡插入圖片描述
SVM可以對線性可分資料進行分類,也能對非線性的資料進行分類

。是不是感覺很強大?
對於線性可分資料,演算法可以在資料中找到一個直線(平面或者超平面)讓儘可能多的資料分佈在兩側,從而達到分類的效果,但是這樣的平面可能不止一個。為啥是儘可能多呢?原因很簡單一方面我們找到的一個近似分類比較好的平面,另一方面資料中存在噪音,不可能對噪音都劃分的很好。在這裡插入圖片描述
我們可以找到多個可以分類的超平面將資料分開,並且優化時希望所有的點(預測正確的點)都離超平面儘可能的遠,但是實際上離超平面足夠遠的點基本上都是被正確分類的,所以這個是沒有意義的;反而比較關心那些離超平面很近的點,這些點比較容易分錯。所以說我們只要讓離超平面比較近的點儘可能的遠離這個超平面,那麼我們的模型分類效果應該就會比較不錯嘍。SVM其實就是這個思想。說完了劃分規則,那麼劃分完以後如何來評估這樣的劃分的效果呢?在這裡插入圖片描述

上面說到了我們只關心離超平面近的點,因為超平面離這些點的距離決定了穩定性,容錯性。那麼就有一個概念出來了,對於這些離超平面近的點我們稱之為支援向量。支援向量到超平面上的距離稱之為間隔。距離L:
在這裡插入圖片描述
在這裡插入圖片描述
備註:在SVM中習慣性的將間隔設定為1,這是不影響推導結果的。
每一種模型都會一個衡量指標,我們常稱之為目標函式或者loss。而對於衡量一個SVM的好壞,我們用間隔衡量,間隔越大,則越好即目標是下面的式子在這裡插入圖片描述
對於上面的問題,我們可以進行一個轉換:
在這裡插入圖片描述
即反過來求||W||式子的最小值,從最大值問題轉換成最小值問題,這兩者是等價的。
從而SVM原始函式的損失值為:
在這裡插入圖片描述
因為目標函式和約束函式滿足KKT條件。在這裡插入圖片描述

所以可以將損失函式最終變成:在這裡插入圖片描述
即引入拉格朗日乘子後,優化目標變成:
在這裡插入圖片描述
根據拉格朗日對偶化特性,將該優化目標轉換為等價的對偶問題
來求解,從而優化目標變成:在這裡插入圖片描述
要是還不明白,可以參考下圖:
在這裡插入圖片描述
所以對於該優化函式而言,可以先求優化函式對於w和b的極小
值,然後再求解對於拉格朗日乘子β的極大值。
首先求讓函式L極小化的時候w和b的取值,這個極值可以直接通
過對函式L分別求w和b的偏導數得到:在這裡插入圖片描述
將求解出來的w和b帶入優化函式L中,定義優化之後的函式如下:在這裡插入圖片描述
假設存在最優解β*; 根據w、b和β的關係,可以分別計算出對應的
w值和b值(一般使用所有支援向量的計算均值來作為實際的b值);在這裡插入圖片描述
這裡的(xs,ys)即支援向量,根據KKT條件中的對偶互補條件(鬆弛條
件約束),支援向量必須滿足一下公式:在這裡插入圖片描述
線性可分SVM演算法流程
在這裡插入圖片描述
以上就是線性可分情況的SVM。對於非線性可分的資料,可以通過核函式求得對應的權重和偏置。這就是本人學習SVM後的總結 。