支援向量機(support vector machine, svm)是一類按監督學習(supervised learning)方式對資料進行二元分類的廣義線性分類器(generalized linear classifier),其決策邊界是對學習樣本求解的最大邊距超平面(maximum-margin hyperplane)
1.1 最早是由vladimir n. vapnik 和 alexey ya. chervonenkis 在2023年提出
1.2 目前的版本(soft margin)是由corinna cortes 和 vapnik在2023年提出,並在2023年發表
1.3 深度學習(2012)出現之前,svm被認為機器學習中近十幾年來最成功,表現最好的演算法
訓練集=>提取特徵向量=>結合一定的演算法(分類器:比如決策樹,knn)=>得到結果
3.1 例子
如圖所示,我們提取了一些向量,對映為圖中二維的黑白點,我們需要將以上點點分為兩類,圖中哪條分類線效果最好?
藍線和紅線都把黑白點區分開了,我們應該選擇哪一條呢?
憑直覺來說,我們肯定是選擇紅線,但是為什麼要選擇紅線呢?
這就是接下來我們要討論的問題了。
3.2 svm尋找區分兩類的超平面(hyber plane),使邊際(margin)最大
如果按第一張小圖畫線,margin就比較小
按第二章小圖來畫線,margin則比較大
為什麼我們想讓margin越大越好?可以理解為margin越大,兩類物質的差別也就越大,也就越好區分
所以svm分類的目標是尋找乙個超平面,使margin可以最大化
那麼總共可以有多少個可能的超平面?無數條
如何選取使邊際最大的超平面(max margin hyperplane)?
超平面到一側最近點的距離等於到另一側最近點的距離,兩側的超平面平行。
先來介紹兩個基本概念
比如第一張圖上面,藍色的圈圈和紅色的叉叉,我們無法找到乙個超平面,將兩類線性區分開,所以這兩類是線性不可區分的
第二張圖和第三張圖也一樣,都是線性不可區分的。
在這裡呢,我們目前只討論線性可區分的情況
超平面可以定義為:
x:訓練例項
w : weight vector
b:bias ,偏向
n:特徵值的個數
4.1 假設2維特徵向量:x=(x1,x2)
把b想象成額外的weight,超平面方程變為:
所有超平面右上方的點滿足:
所有超平面左下方的點滿足:
調整weight,使超平面定義邊際的兩邊:
綜合以上兩式,得到:(1)
所有坐落在邊際的兩邊的超平面上的被稱作「支援向量(support vectors)」分界的超平面h1和h2上任意一點的距離為:
1/||w||
(其中||w||是向量的範數(norm))
所以,最大邊際距離為:
2/||w||
6.1 svm如何找出最大邊際的超平面(mmh)呢?
利用一些數學推導,以上公式(1)可變為有限制的凸優化問題(convex quadratic optimization),利用karush-kuhn-tucker(kkt)條件和拉格朗日公式,可以推出mmh可以被表示為以下「決定邊界」(decision boundary)
其中:yi是支援向量點;
xi(support vector)的分類標記(class label)
xt是要測試的例項
αi和b0都是單一數值型引數,由以上提到的最優演算法提出
l是支援向量點的個數
對於任何測試(要歸類)的例項,代入以上公式,由得出的符號是正還是負決定
例子:
假設已知三個點的座標,先找到兩個點求出weight vector,把兩點座標分別代入g(x,y)方程,解方程組,可以求出引數,則可以求出超平面解析式
深度學習基礎03 支援向量機SVM(下)
前面兩篇文章介紹了支援了向量機針對線性可分的情況,這節課來介紹一下支援向量機支援線性不可分的情況 svm有以下幾個特性 1 訓練好的模型的演算法複雜度是由支援向量的個數決定的,而不是由資料的緯度決定的,所以svm不太容易產生overfitting 2 svm訓練出來的模型完全依賴於支援向量 supp...
機器學習基礎課程學習筆記 3 支援向量機 SVM
1.1 最早是由 vladimir n.vapnik 和 alexey ya.chervonenkis 在1963年提出 1.2 目前的版本 soft margin 是由corinna cortes 和 vapnik在1993年提出,並在1995年發表 1.3 深度學習 2012 出現之前,svm ...
深度學習筆記整理 1 2 2 支援向量機
1.支援向量機的目的 獲取乙個分類邊界,這個邊界可以最大化距離不同類別的最近點。這樣的邊界可以擁有更好的抗雜訊干擾性。2.限制 分類正確 margin min類別到邊界距離 於是,我們將這個問題轉化為了乙個maxmin的問題,並且我們的限制出現了不等式,於是需要kkt等演算法,將原問題轉化為其對偶問...