SVM演算法原理

2022-05-18 16:12:18 字數 1496 閱讀 2066

支援向量機(support vector machines)是乙個二分類的分類模型(或者叫做分類器)。如圖:

它分類的思想是,給定給乙個包含正例和反例的樣本集合,svm的目的是尋找乙個超平面來對樣本根據正例和反例進行分割。

各種資料對它評價甚高,說「 它在解決小樣本、非線性及高維模式識別中表現出許多特有的優勢,並能夠推廣應用到函式擬合等其他機器學習問題中」

svm之線性分類器

如果乙個線性函式能夠將樣本完全正確的分開,就稱這些資料是線性可分的,否則稱為非線性可分的。

什麼叫線性函式呢?在一維空間裡就是乙個點,在二維空間裡就是一條直線,三維空間裡就是乙個平面,以此類推。

如果不關注空間的維數,這種線性函式就是前言中所說的那個統一的名稱——超平面(hyper plane)!

在樣本空間中,劃分超平面可通過如下線性方程來描述:

假設它已經完成了對樣本的分隔,且兩種樣本的標籤分別是,那麼對於乙個分類器來說,g(x)>0和個g(x)<0就可以分別代表兩個不同的類別,+1和-1。

但光是分開是不夠的,svm的核心思想是盡最大努力使分開的兩個類別有最大間隔,這樣才使得分隔具有更高的可信度。而且對於未知的新樣本才有很好的分類**能力(在機器學習中叫泛化能力)

那麼怎麼描述這個間隔,並且讓它最大呢?svm的辦法是:讓離分隔面最近的資料點具有最大的距離。

為了描述離分隔超平面最近的資料點,需要找到兩個和這個超平面平行和距離相等的超平面:

h1: y = wtx + b=+1 和 h2: y = wtx + b=-1

如圖所示:

在這兩個超平面上的樣本點也就是理論上離分隔超平面最近的點,是它們的存在決定了h1和h2的位置,支撐起了分界線,它們就是所謂的支援向量,這就是支援向量機的由來

有了這兩個超平面就可以順理成章的定義上面提到的間隔(margin)了

二維情況下 ax+by=c1和ax+by=c兩條平行線的距離公式為:

可以推出h1和h2兩個超平面的間隔為2/||w||,即現在的目的是要最大化這個間隔。

所以support vector machine又叫maximum margin hyper plane classifier

等價於最小化||w||

為了之後的求導和計算方便,進一步等價於最小化

假設超平面能將樣本正確分類,則可令:

兩個式子綜合一下有:

這就是目標函式的約束條件。現在這個問題就變成了乙個最優化問題:

而且這是乙個凸二次規劃問題,一般的解決方法有兩種1是用現成的優化工具包直接求解,2是使用lagrange duality找到一種更有效的方法求解。

其中方法2具有兩個優點:

a、更好解

b、可以自然地引入核函式,推廣到非線性分類

所以這裡選用了第二種方法。

參考:

SVM演算法原理以及sklearn例項

今天重新學習了一遍svm的內容,發現好多以前看不懂的推導公式都能理解了,趕緊記錄下來。作者屬於菜鳥級別,文中如有錯誤認識還請大家不吝賜教!svm support vector machine,支援向量機 是一種可應用與線性或非線性的一種分類器。以下我們按照svm的發展順序以及問題求解依次介紹。1.線...

SVM演算法原理詳解及python實現

w tx b 0 quad y i 1 longleftrightarrow y x i 0 w tx b 0 quad y i 1 longleftrightarrow y x i 0 end 幾何間距 longleftrightarrow frac 函式間隔 w wtx b 幾何間距 w y i...

SVM的實現原理

svm的 是實現原理 1 計算核函式 def calckernelvalue matrix x,sample x,kerneloption kerneltype kerneloption 0 numsamples matrix x.shape 0 kernelvalue mat zeros nums...