前面兩篇文章介紹了支援了向量機針對線性可分的情況,這節課來介紹一下支援向量機支援線性不可分的情況
svm有以下幾個特性:
(1)訓練好的模型的演算法複雜度是由支援向量的個數決定的,而不是由資料的緯度決定的,所以svm不太容易產生overfitting
(2)svm訓練出來的模型完全依賴於支援向量(support vectors),即使訓練集裡面所有非支援向量的點都被去除,重複訓練過程,結果仍然會得到完全一樣的模型
(3)乙個svm如果訓練得出的支援向量個數比較少,svm訓練出的模型比較容易泛化
接下來討論一下線性不可分的情況(linearly inseparable case)
如上圖所示,無論我們怎樣畫超平面,均不能將黑白點完全分開,這就是線性不可分的情況:
資料集在空間中對應的向量不可被乙個超平面區分開
那麼我們如何區分線性不可分的情況呢:
步驟:(1)利用乙個非線性的對映把原資料集中的向量點轉化到乙個更高維度的空間中
(2)在這個高緯度的空間中找乙個線性的超平面來根據線性可分的情況處理
比如上圖中,原始紅點和綠小方塊資料是線性不可分的,我們通過一定的對映,把兩組資料對映到更高維度的空間中,使它們變為可分的。
現在的關鍵點在於我們如何找乙個對映,將線性不可分的資料對映到高維空間中。
3維輸入向量:
轉換到6維空間z中去:
新的決策超平面;
其中w和z是向量,這個超平面是線性的。
解出w和b之後,並且帶回原方程:
所以我們將原資料對映到高維空間中了
現在新的問題又出現了:
(1)如何選擇合理的非線性轉化把資料轉到高緯度中?
(2)如何解決計算內積時演算法複雜度非常高的問題?
我們可以使用核方法(kernel trick),下面簡單介紹一下核方法
h度多項式核函式(polynomial kernel of degree h):
高斯徑向基核函式(gaussian radial basis function kernel):
s型核函式(sigmoid function kernel):
那麼我們如何選擇使用哪個kernel?
這個問題沒有標準的答案,需要根據先驗知識來考慮,比如影象分類,通常使用rbf,文字不使用rbf,也可以嘗試不同的kernel,根據結果準確度而定
下面舉個例子來深入理解一下核函式
假設定義兩個向量:x=(x1,x2,x3),y=(y1,y2,y3)
定義方程:f(x)=(x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3)
k(x,y)=()^2
假設x=(1,2,3);y=(4,5,6)
f(x)=(1,2,3,2,4,6,3,6,9)
f(y)=(16,20,24,20,25,36,24,30,36)
=116+220+324+220+425+636+324+630+9*36=1024
k(x,y)=(4+10+18)^2 =32
32^2=1024
同樣的結果,我們使用kernel的方法計算容易很多
那麼svm只能解決二分類問題嗎,目前為止svm只能解決二分類問題,但是經過一定擴充套件可以進行多分類問題求解
****
對於每個類,有乙個當前類和其他類的二類分類器(one-vs-rest)
比如五分類問題,對於每一類可以把它分為兩類,對於1,可以分為當前類1和其他剩餘類
對於2可以分為當前類2和其他剩餘類
ok,暫時到這裡啦~
深度學習基礎03 支援向量機SVM(上)
支援向量機 support vector machine,svm 是一類按監督學習 supervised learning 方式對資料進行二元分類的廣義線性分類器 generalized linear classifier 其決策邊界是對學習樣本求解的最大邊距超平面 maximum margin h...
機器學習基礎課程學習筆記 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等演算法,將原問題轉化為其對偶問...