線性可分支持向量機
回顧
前面總結了線性可分支持向量機,知道了支持向量機的最終目的就是通過“間隔最大化” 得到最優分類器,能夠使最難區分的樣本點得到最大的分類確信度,而這些難區分的樣本就是支持向量。
還是如下圖所示,超平面H1 和 H2 支撐着中間的決策邊界,且到達決策邊界的距離相等,都是最大幾何間隔。而這兩個超平面H1 和 H2 必定會有一些樣本點,不然中間的間隔還可以繼續擴大,得到的就不是最大間隔了。這些在超平面H1 和 H2 的樣本點就是支持向量,從直觀上我們也可看出,這些支持向量是離決策邊界最近的點,也就是最難被分類的樣本。
優化
上一節中我們介紹了得到上述線性可分支持向量機的方法,即最優化以下目標函數:
minw,bs.t.12||w||2yi(wT⋅xi+b)≥1,i=1,2,…,N
觀察可知,這是一個明顯的
凸二次規劃問題。將其作爲原始問題,應用
拉格朗日對偶性,通過求解對偶問題得到原始問題的最優解。這樣求解有兩個好處:一方面是對偶問題往往更容易求解(優化效率高);二是自然引入了核函數,進而能夠推廣到非線性分類問題。首先,通過上式我們可以定義拉格朗日函數爲:
L(w,b,α)=12||w||2−∑i=1Nαi[yi(wT⋅xi+b)−1]
其中,拉格朗日乘子
αi≥0 ,現在我們令:
θp(w)=maxαi≥0L(w,b,α)
則
θp(w) 就是與原目標函數等同的優化問題。之所以可以這麼等同,是因爲如果出現
yi(wT⋅xi+b)<1 則
θp(w)=∞ (只需要令
αi=∞ ),此時沒有最小解。而當所有約束條件都滿足時,即
yi(wT⋅xi+b)≥1,i=1,2,…,N ,則
θp(w)=12||w||2 ,也就是我們最初要優化的目標函數。因此,我們現在的目標函數可以改寫爲:
minwθp(w)=minwmaxαi≥0L(w,b,α)
我們令
p∗ 爲該目標函數的最優化結果,直接求解的效率沒有對偶問題求解高效(具體優化效率比較還沒弄懂)。我們不妨考慮另外一個問題:
θD(α)=minw,bL(w,b,α)
D 表示對偶,
θD(α) 將問題轉化爲先求拉格朗日關於
w 和
b 的最小值,將
α 看着固定值,然後求關於
α 的極大值, 則優化問題轉化爲:
maxαθD(α)=maxαminw,bL(w,b,α)=d∗
對偶問題與原始問題並不完全等價,因此我們用
d∗ 來表示對偶問題的最優值。兩者滿足
d∗≤p∗ ,從直觀上比較好理解,一個函數的最大值中的最小值總是比其最小值中的最大值要大,具體可以參考凸優化中的相關知識。當滿足
KKT條件時,兩者取等號,其中的對偶互補條件
αigi(w)=0,i=1,2,…,N 有助於理解支持向量概念,後續介紹。由於這裏的原始問題滿足KKT條件,因此我們將優化問題轉化爲對偶問題,即:
maxαminw,bL(w,b,α)
我們先求內層的最小值:
∂∂wL(w,b,α)=w−∑i=1Nαiyixi=0⟹w=∑i=1Nαiyixi∂∂bL(w,b,α)=∑i=1Nαiyi=0⟹∑i=1Nαiyi=0
將其帶回原式
L 中,有:
L(w,b,α)=12||w||2−∑i=1Nαi[yi(wT⋅xi+b)−1]=12wTw−∑i=1NαiyiwTxi−b∑i=1Naiyi+∑i=1Nαi=−12wT∑i=1Nαiyixi+∑i=1Nαi=−12∑i=1N∑j=1Nαiαjyiyj(xTixj)+∑i=1Nαi
則對偶問題轉化爲:
minαs.t.12∑i=1N∑j=1Nαiαjyiyj(xTixj)−∑i=1Nαi∑i=1Nαiyi=0αi≥0,i=1,2,…,N
該問題的優化有更高效的算法,我們假設優化出的解爲
α∗=(α∗1,α∗2,…,α∗N)T 。則原始問題的解爲:
w∗=∑i=1Nα∗iyixib∗=yj−∑i=1Nα∗iyi(xTi⋅xj)
考慮到前面提到的KKT互補條件可知:
α∗i(yi(w∗T⋅xi+b∗)−1)=0
對所有使得
w∗ 有意義的
α∗i 都有
α∗i>0 ,此時必有
w∗T⋅xi+b∗=±1 , 即有效樣本點一定在間隔邊界上,這些樣本點就是
支持向量。這與前面介紹的
支持向量也相符,即在間隔邊界上的點與決策邊界有最小函數間隔,分類確信度最低,最難被區分。支持向量機的
“最大化間隔”就是最大化這些樣本點的間隔。另一方面,原始問題求出的分類決策函數爲:
f(x)=sign(∑i=1Nα∗iyi⟨xi,x⟩+b∗)
中間的內積
⟨xi,x⟩ (此處
xi 表示第
i 個樣本,而不是樣本中的第
i 個特徵) 與核函數形式相同,下面將進行具體介紹。
非線性支持向量機
線性不可分情況
前面推導了線性可分支持向量機的部分理論,它的目的就是通過間隔最大化構造線性的超平面來進行數據分類。但是這種分類器對於非線性數據就沒有辦法,如下圖所示(類似截圖源自coursera課程),對於該非線性數據,不管是硬間隔支持向量機還是軟間隔向量機(後面介紹)都無法處理。
在前面的介紹中,我們知道,對於邏輯斯特迴歸分類器,可以通過構建更高階的項來對非線性數據進行分類。這種方法對於線性支持向量機也是適用的,這時的超平面就已經不是線性的,而是曲線(或曲面)。如上圖所述的類似圓形邊界,我們可以通過構建如圖所示的多項式:
θ0+θ1x1+θ2x2+θ3x1x2+θ4x21+θ5x22=0
既然可以通過構建多項式進行非線性數據的分類,
那爲什麼還需要通過核技巧進行轉換呢?一方面是因爲有些樣本本身包含大量特徵(圖像處理),難以直接構建多項式,也可能導致多項式構建不合理;另一方面是非線性優化問題往往不好求解,我們還是希望能夠將非線性問題轉化爲線性分類問題,用線性問題的求解方法來求解非線性問題。
如果我們令
Z1=x1,Z2=x2,Z3=x1x2,Z4=x21,Z5=x22 ,那麼以新的變量
Zi 爲變量建立座標系,則在新的座標系中,該最優分類平面爲:
∑i=15θiZi+θ0=0
這顯然是一個線性超平面,原始空間的非線性問題就變成了新空間的線性可分問題,這樣我們就可以用前面的線性可分學習方法來進行該問題的學習了。這就是核技巧的基本思想了。總結來說,
就是通過一個非線性變換將輸入空間的特徵映射到更高維空間,使原本線性不可分問題在新的特徵空間變成線性可分問題。
核技巧
下面,先通過coursera上的兩幅圖直觀感受核函數具體怎麼實現特徵提取的。簡單的說,對於上面的非線性分類問題,我們分別選取正樣本的點(紅色)l(1),l(2) 和負樣本點(藍色圈)l(3) ,然後通過高斯核函數來求相應的特徵:
f1=similarity(x,l(1))=exp[−||x−l(1)||22σ2]f2=similarity(x,l(2))=exp[−||x−l(2)||22σ2]f3=similarity(x,l(3))=exp[−||x−l(3)||22σ2]
假定我們的通過高斯變換得到的決策邊界爲
θ0+θ1f1+θ2f2+θ3f3 ,其中
θ0=−0.5,θ1=1,θ2=1,θ3=0 ,如果一個點比較接近
l(1) , 通過高斯變換我們可以知道
f1≈1,f2≈0,f3≈0 ,則
θ0+θ1f1+θ2f2+θ3f3=−0.5+1+1∗0+0=0.5≥0 ,預測爲正樣本1。而樣本遠離
l(1),l(2) 時,有
f1≈0,f2≈0,f3 ,則
−0.5+1∗0+1∗0+0=−0.5≤0 ,預測爲負樣本-1。由此我們就可以看出,通過高斯核函數,我們將樣本特徵映射爲樣本之間的距離的度量,並由此得到如圖所示的決策邊界。靠近
l(1),l(2) 在決策邊界內,爲正樣本,這也符合直觀認識。
上述是核變換的一個感性認識,可以通過簡單的樣例讓我們明白核函數究竟做了什麼。下面我們通過理論推導來看核函數爲什麼適用於支持向量機。首先,通過前面推導,我們知道最終得到的分類函數爲:
f(x)=sign(∑i=1Nα∗iyi⟨xi,x⟩+b∗)
通過構建多項式進行高維映射得到如下結果:
f(x)=sign(∑i=1Nα∗iyi⟨ϕ(xi),ϕ(x)⟩+b∗)
通過這樣的映射函數,我們似乎也能夠繼續用線性可分支持向量機目標優化的方法來進行優化。但是,如上圖所示的二維空間的樣本
(x1,x2) ,映射後變成5維空間的特徵。如果是3維的,則會是19維的。這種直接映射會導致需要優化的參數成指數形式增長,帶來極大的計算量,何況映射的特徵空間甚至可能是無窮維的。下面我們來看核函數和映射函數的關係:
κ(x,z)=(xTz)2=(x1z1+x2z2)2=(x1z1)2+2x1x2z1z2+(x2z2)2=(x21,2√x1x2,x22)(z21,2√z1z2,z22)T=ϕ(x)Tϕ(z)
其中,
ϕ(x)=(x21,2√x1x2,x22)T 就是映射函數。由此可見,
核函數最終得到的結果與映射函數最終得到結果一樣,即核函數本身就實現了特徵從低維到高維的映射。
但是兩者卻有明顯的區別:映射函數先是映射到高維空間,然後進行內積,對於多特徵的樣本來說,映射到高維空間再進行內積運算將是爆炸性的計算量;而核函數卻一直在本身的低維空間中進行計算,並沒有顯示地寫出映射後的結果,這將大大節省計算效率。因此,我們可以用核函數來代替映射函數,實現非線性問題的求解,此時,分類決策函數可以改寫爲:
f(x)=sign(∑i=1Nα∗iyiκ(xi,x)+b∗)
對應的優化問題可以定義爲:
minαs.t.12∑i=1N∑j=1Nαiαjyiyjκ(xi,x)−∑i=1Nαi∑i=1Nαiyi=0αi≥0,i=1,2,…,N
這樣一來,我們既解決了低維空間線性不可分的問題,又通過核函數巧妙的避開了直接在高維空間中直接進行計算帶來的計算量問題。至於哪些函數可以作爲核函數,在此就不做證明,我們簡單介紹幾種常用核函數:
- 多項式核函數:κ(x,z)=(xT⋅z+R)p 。
- 高斯核:κ(x,z)=exp[−||x−z||22σ2] 。高斯核比較靈活的核函數,能夠將原始空間映射到無窮維(通過泰勒展開式可以觀察)。另外,它還可以通過調節 σ 來決定分類函數的效果。具體調節將在後面模型應用中進行對比介紹。
- 線性核:κ(x,z)=⟨x,z⟩ 。線性覈實際就是原始空間中的內積。
最後,通過上述介紹,我們知道通過SVM的優化問題,得到最終的分類決策函數,並通過內積自然過渡到核技巧。通過核技巧,我們能夠實現低維映射到高維的目的,解決了原始低維空間中線性不可分的問題,同時核技巧又是在原始空間進行計算,避免了高維映射之後的計算複雜度。核技巧本來也可以用於邏輯斯特迴歸和神經網絡,但是其優化效率並沒有SVM這麼明顯,也正是因爲SVM能夠通過核技巧高效解決大量問題,使其能夠廣泛用於各種分類任務。
PS:本文理論推導主要學習了李航的《統計學習方法》,加入了部分coursera上Andrew Ng的直觀介紹,同時參考了plusid 的博客(他的很多內容真心說的很不錯)。主要是通過寫看自己究竟理解的多深,如有錯誤,還望指正,相互學習。