機器學習 支援向量機3

2022-09-16 09:15:09 字數 2570 閱讀 2812

前面兩篇文章介紹了支援向量機svm的基本原理,並利用python實踐了分割超平面的求解過程。

本篇文章將介紹svm如何對非線性可分的資料進行分類。

svm處理線性不可分資料的關鍵在於把低維空間中線性不可分的資料對映到高維空間使其線性可分。然後再按線性可分資料進行處理。

就像下方展示的內容。有圓圈和星星兩種不同的資料,在左邊的一維空間中它們是無法線性分割的;而在右邊二維空間中卻可以用一條橫線進行分割。

基於這個原理,很直觀地,找到乙個對映函式把樣本向量x對映到高維空間的乙個向量z。例如:對$-\vec=(x_1, x_2)-$,可以有選擇類似$-\vec=(1,x_1,x_2,x_1^2, x_2^2, 2x_1x_2)-$的對映。利用這個對映,可以計算出每個資料點在高維空間中對應的向量。最後用這些向量求解$-\vec、\vec、b-$。

這裡需要思考乙個問題:這樣把每個資料都對映成另乙個向量,然後在進行計算,比線性可分模型的svm複雜了好多好多。還有要找到這樣的對映也不是一件容易的事。有沒有比較好的做法?答案肯定是有的,可以利用「核技巧」。

實際上我們不需要計算每個資料在高維空間的向量。因為無論是求解$-\vec-$,還是求解分割超平面的$-\vec-$和$-b-$,我們需要僅僅只有乙個高維空間下對應兩個向量的向量積。例如有資料點$-\vec,\vec-$,對應的對映後的結果為$-\vec,\vec-$,那麼我們要的僅僅是$-\vec^ \vec-$這個向量積。這種處理方式且稱為核技巧,用函式$-k(x_1,x_2)-$表示向量積$-\vec^ \vec-$。

首先,構造二次規劃函式只需要$-k(x_1,x_2)-$:

$$l(\vec) = \sum_^ - \frac\sum_^ \vec}}, \sum_^ = 0, \alpha_i,\alpha_j \ge 0, i,j = 1,2...n

$$得到$-\vec-$向量後,可以得到$-\vec-$:

$$w = \sum_^}

$$取其中乙個支援向量(假設下標為v),可計算b,也只需要$-k(x_1,x_2)-$:

$$b = \frac - \vec^\vec = \frac - \sum_^^}\vec = \frac - \sum_^,\vec)}

$$最後,對新資料的決策規則函式rule如下,也只需要$-k(x_1,x_2)-$:

$$rule: sign(\sum_^,\vec)} + b)

$$1. 線性核函式

$$k(\vec,\vec) = \vec^\vec

$$這是$-\vec^\vec-$本身,也算乙個線性核函式,同時它也是下面介紹的多項式核函式的特例。

2. 多項式核函式

$$k(\vec,\vec) = (\vec^\vec + c)^

$$這種核函式利用多項式展開可以了解它將把原向量對映到某個維度可數的空間內,維度數目與原向量的維度以及引數c、d有關。

3. 高斯核函式

$$k(\vec,\vec) = exp(-\gamma ||\vec - \vec||^) = e^ - \vec||^}

$$高斯核函式可以利用泰勒展開,它可以把原向量對映到近乎無窮維空間。

一般情況下我們不需要自己發明核函式,常用的核函式已經夠用,所以「關於多維z空間是否存在或者核函式是否有效」的證明可以忽略不管。

這裡依舊羅列判斷核函式是否有效的兩個條件:

核函式對輸入是對稱的,$-k(\vec, \vec) = k(\vec, \vec)-$。

$-\begin

k(\vec,\vec) & k(\vec,\vec) & \cdots & k(\vec,\vec) \\

\vdots & \vdots & \ddots & \vdots \\

k(\vec,\vec) & k(\vec,\vec) & \cdots & k(\vec,\vec) \\

\end -$矩陣是乙個正半定矩陣。

#

核函式: 多項式核函式c=0,d=2

#選擇依據與測試資料有關,這樣的對映應該可以把資料分隔開

#則kernel應該返回的內積如下:

defkernel(x1, x2):

return np.dot(x1, x2)**2

其次,在生成h矩陣的時候不是直接使用$-\vec^\vec-$,而是使用kernel函式,如下:

#

計算h矩陣,根據樣本數目應是乙個len(x)xlen(x)的矩陣

h =np.array(

[y[i] * y[j] * kernel(x[i], x[j]) for i in range(len(x)) for j in

range(len(x))]

).reshape(len(x), len(x))

其他的流程幾乎一樣,除了繪圖**。

執行結果如下:

本文原始碼

機器學習 支援向量機

線性可分支援向量機 1.回顧感知機模型 2.函式間隔與幾何間隔 3.支援向量 4.svm模型目標函式與優化 5.線性可分svm的演算法過程 線性可分支援向量機 1.軟間隔最大化 2.線性分類svm的軟間隔最大化目標函式的優化 3.軟間隔最大化時的支援向量 4.軟間隔最大化的線性可分svm的演算法過程...

機器學習 支援向量機

svm就是試圖把棍放在最佳位置,好讓在棍的兩邊有盡可能大的間隙。這個間隙就是球到棍的距離。這裡我們看到兩種不同顏色的小球 我們找到乙個棍子放在其中,把他們分割開來,但是僅僅是這麼簡單嘛,不不,我們還要考慮怎麼放這根棍子,能夠分開這兩種小球的棍子在中間有無數種方法哪種最好呢?保證決策面方向不變且不會出...

機器學習 支援向量機 SVM

svm 方法的基本思想是 定義最優線性超平面,並把尋找最優線性超平面的演算法歸結為求解乙個凸規劃問題。進而基於 mercer 核展開定理,通過非線性對映 把樣本空間對映到乙個高維乃至於無窮維的特徵空間 hilbert 空間 使在特徵空間中可以應用線性學習機的方法解決樣本空間中的高度非線性分類和回歸等...