支持向量機(support vector machines)是一個二分類的分類模型(或者叫做分類器)。如圖:
它分類的思想是,給定給一個包含正例和反例的樣本集合,svm的目的是尋找一個超平面來對樣本根據正例和反例進行分割。
各種資料對它評價甚高,說“ 它在解決小樣本、非線性及高維模式識別中表現出許多特有的優勢,並能夠推廣應用到函數擬合等其他機器學習問題中”
SVM之線性分類器
如果一個線性函數能夠將樣本完全正確的分開,就稱這些數據是線性可分的,否則稱為非線性可分的。
什么叫線性函數呢?在一維空間里就是一個點,在二維空間里就是一條直線,三維空間里就是一個平面,以此類推。
如果不關注空間的維數,這種線性函數就是前言中所說的那個統一的名稱——超平面(Hyper Plane)!
在樣本空間中,划分超平面可通過如下線性方程來描述:
假設它已經完成了對樣本的分隔,且兩種樣本的標簽分別是{+1,-1},那么對於一個分類器來說,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、可以自然地引入核函數,推廣到非線性分類
所以這里選用了第二種方法。
參考:https://blog.csdn.net/u012581541/article/details/51181041