相關文章:
機器學習 | 目錄
機器學習 | 網絡搜索及可視化
監督學習 | SVM 之線性支持向量機原理
監督學習 | SVM 之支持向量機Sklearn實現
1. 非線性支持向量機
對解線性分類問題,線性分類支持向量機是一種非常有效的方法。但是,有時分類問題是非線性的,這時可以使用非線性支持向量機
(non-linear support vector machine)。
非線性分類問題是指通過利用非線性模型才能很好地進行分類的問題。如下圖所示,這是一個分類問題,無法用直線(線性模型)將正負實例正確分開,但可以用一條橢圓(非線性模型)將它們正確分開。[1]
圖1 非線性分類問題與核技巧示例
再看一個“異或”問題,同樣也不是線性可分的:
圖2 異或問題與非線性映射
對這樣的問題,可將樣本從原始空間映射到一個更高維的特徵空間,使得樣本在這個特徵空間內線性可分。如圖 2 所示,若將原始的二維空間映射到一個合適的三維空間,就可以找到一個合適的劃分超平面。當原始空間是有限維(即屬性數是有限的),那麼一定存在一個高維特徵空間使樣本可分。
令 ϕ(x) 表示將 x 映射後的特徵向量,於是,在特徵空間中劃分超平面模型可表示爲:
f(x)=wTϕ(x)+b(1)
線性可分支持向量機的原始問題變爲:
w,bmin s.t. 21∥w∥2yi(wTϕ(xi)+b)−1⩾0,i=1,2,⋯,N(2)
其對偶問題爲:
αmax s.t. ∑i=1Nαi−21∑i=1N∑j=1Nαiαjyiyjϕ(xi)Tϕ(xj)∑i=1Nαiyi=0αi⩾0,i=1,2,⋯,N(3)
1.1 核技巧
求解 (2) 涉及到計算 ϕ(xi)Tϕ(xj),這是樣本 xi 與 xj 映射到特徵空間之後的內積。由於特徵空間維數可能很高,設置可能是無窮維,因此直接計算 ϕ(xi)Tϕ(xj) 通常是困難的。爲了避開這個障礙,可以設想這樣一個函數:
k(xi,xj)=ϕ(xi)Tϕ(xj)(4)
核技巧
:xi 與 xj 在特徵空間的內積等於它們在原始樣本空間中通過函數 k(⋅,⋅) 計算的結果,於是 (3)可以重寫爲:
αmax s.t. ∑i=1Nαi−21∑i=1N∑j=1Nαiαjyiyjk(⋅,⋅)∑i=1Nαiyi=0αi⩾0,i=1,2,⋯,N(5)
求解後即可得到:
f(x)=wTϕ(x)+b=∑i=1Nαiyiϕ(xi)Tϕ(x)+b=∑i=1Nαiyik(x,xi)+b(6)
這裏的函數 k(⋅,⋅) 就是“核函數
”(kernel function)。上式顯示出模型最優解可以通過訓練樣本的核函數展開,這一展開式又稱爲支持向量展式
(support vector expansion)。
1.2 核函數
定理(核函數):令 X 爲輸入空間,k(⋅,⋅) 是定義在 X×X 上的對稱函數,則 k 是核函數當且僅當對於任意數據 D={x1,x2,⋯xm},“核矩陣”(kernel matrix)K 總是半正定的:[2]
K=⎣⎢⎢⎢⎢⎢⎢⎡κ(x1,x1)⋮κ(xi,x1)⋮κ(xm,x1)⋯⋱⋯⋱⋯κ(x1,xj)⋮κ(xi,xj)⋮κ(xm,xj)⋯⋱⋯⋱⋯κ(x1,xm)⋮κ(xi,xm)⋮κ(xm,xm)⎦⎥⎥⎥⎥⎥⎥⎤(7)
這個定理表明,只要一個對稱函數所對應的核矩陣半正定,它就能作爲核函數使用。事實上,對於一個半正定核矩陣,總能找到一個與之對應的映射 ϕ 。換言之,任何一個核函數都隱式地定義了一個稱爲“再生核希爾伯特空間”(RKHS, Reproducing Kernel Hilbert Space)的特徵空間。
1.2.1 核函數選擇
通過前面討論我們知道,我們希望樣本在特徵空間內線性可分,因此特徵空間的好壞對支持向量機的性能直觀重要。需要注意的是,在不知道特徵映射的形式時,我們並不知道什麼樣的核函數時合適的,而核函數也僅是隱式地定義了這個特徵空間。於是,“核函數選擇”稱爲支持向量機的最大變數。若核函數選擇不合適,則意味着將樣本映射到了一個不合適的特徵空間,很可能導致性能不佳。
表1 常用核函數
對文本數據通常採用線性核;情況不明時可先嚐試高斯核(RBF 核)
此外,還可以通過函數組合得到,例如:
- 若 k1 和 k1 爲核函數,則對於任意正數 γ1,γ2,其線性組合:
γ1k1+γ2k2(8)
也是核函數;
- 若 k1 和 k1 爲核函數,則核函數的直積:
k1⊗k2(x,z)=k1(x,z)k2(x,z)(9)
也是核函數;
- 若 k1 爲核函數,則對於任意函數 g(x):
k(x,z)=g(x)k1(x,z)g(z)(10)
也是核函數。
1.2.2 RBF 函數
首先來看一個例子,假設我們要將一組直線上的數據進行分類,但由於它們是非線性的,因此需要利用核函數將數據變換爲線性可分的數據。
圖3 非線性數據
我們通過一條曲線將直線上的數據投射到一個平面上,可以看見,所有的正實例都被投射到了曲線的頂端,而所有的負實例都被投射到了曲線的低端,因此這時我們就可以利用線性可分支持向量機找出分類超平面。
圖4 高斯核函數變換後的線性可分數據
那麼這條曲線是怎麼構造出來的呢,這裏就要介紹一個函數:徑向基函數
(RBF Radial Basis Function)。
所謂徑向基函數,就是某種沿徑向對稱的標量函數。通常定義爲空間中任一點 x 到某中心 xc 之間歐式距離的單調函數,可以記爲 k(x,xc),其作用往往是局部的,即當 x 原理 xc 時函數取值很小。
最常用的徑向基函數是高斯徑向基函數
:
k(x,xc)=exp(−2σ2∥x−xc∥2)(11)
當我們使用高斯徑向基函數作爲核函數時,就稱之爲高斯核函數
。
它的圖像與高斯分佈 y=σ2π1e−2σ2(x−μ)2 相似,在高斯分佈中,其分佈被參數 σ 和 μ 唯一確定,當 σ 越大時,圖像越矮胖;當 σ 越小時,圖像越高瘦。
圖5 正態分佈圖
類似地,我們在高斯徑向基函數中使用 gamma 參數來決定圖像的高瘦或矮胖:
γ=2σ21(12)
當 γ 越大時,圖像越高瘦;當 γ 越小時,圖像越矮瘦:
圖6 參數 gamma 的大小對圖像的影響
在高維數據中也相似:
圖7 高維度下參數 gamma 的大小對圖像的影響
此時超平面的截面即爲分類數據的邊界:
圖8 參數 gamma 的大小對擬合程度的影響
當我們使用高斯核函數時,此時的非線性支持向量機則由參數 γ 和懲罰參數 C 所確定:
當 γ 越大時,越有可能過擬合;當 γ 越小時,越有可能欠擬合;
當 C 越大時,對誤分類的懲罰越大;當 C 越小時,對誤分類的懲罰越小。
由於 SVM 模型沒有先驗信息,所以可以使用網絡搜索來確定參數大小。
現在我們可以回答開頭的例子中曲線時怎麼擬合出來的了,我們通過在每一個數據點上使用一個高斯核函數,可以將數據分爲兩類,接着用一個連續平滑的曲線將這些圖形連接起來,就得到了曲線:
圖8 利用高斯核函數將數據線性化
圖9 數據投射的曲線
參考資料
[1] 李航. 統計學習方法[M]. 北京: 清華大學出版社, 2012: 115-116.
[2] 周志華. 機器學習[M]. 北京: 清華大學出版社, 2016: 127-129.