前言
支持向量機基本思想就是 間隔最大化,看上去很簡單,可是要想理解它並非很容易。本篇將由基本概念出發,對公式進行推導,而後經過一些案例加以展現來介紹支持向量機。本篇篇幅比較長,需耐心仔細看完,適當動手跟着推導及代碼實現。html
因爲博主也在學習中,因此本篇中不免會有些理解錯誤的地方,還望你們賜教,共同窗習。git
本篇的代碼可見:Githubgithub
1、SVM
涉及的概念
支持向量機(support vector machines,SVM)是一種二類分類模型。它的 基本模型 是定義在特徵空間上的間隔最大的線性分類器,支持向量機的學習策略就是間隔最大化,可形式化爲求解凸二次規劃的問題。web
一、分類任務
分類任務就是肯定對象屬於哪一個預約義的目標類。分類任務的輸入數據是記錄的集合,每條記錄也稱爲實例或樣例,用元祖
(x,y) 表示,其中
x 是屬性的集合,
y 是類標記(也稱目標屬性)。在迴歸模型中,目標屬性值是連續的;而在分類模型中,目標屬性時離散的。算法
考慮二分類任務,其目標屬性爲
y∈{0,1},而線性迴歸模型參數的預測值
z=wTx+b 是實值,因而咱們須要將實值
z 轉換爲目標屬性值 0 或 1 。固然最理想的就是單位階躍函數,可是單位階躍函數不連續,因而使用 sigmoid函數
做爲替代函數。緩存
![在這裏插入圖片描述](http://static.javashuo.com/static/loading.gif)
sigmoid函數
表達式以下:
g(z)=1+e−z1app
Logistic迴歸
目的是從特徵中學習出一個 0/1 分類模型,而這個分類模型是將特徵的線性組合做爲自變量,因爲自變量的取值範圍是
(−∞,+∞) 。所以,使用 sigmoid函數
將自變量映射到
(0,1) 上,映射後的值被認爲是屬於
y=1的機率。dom
假設函數爲:
hθ(x)=g(θTx)=1+e−θTx1ide
根據 sigmoid函數
的特性,假設:
p(y=1∣x;θ)=hθ(x)
p(y=0∣x;θ)=1−hθ(x)svg
上式表示,已知樣本
x 和參數
θ 的狀況下,樣本
x 屬於正樣本 (
y=1)和負樣本(
y=0)的條件機率。若
hθ(x)>0.5 則屬於正樣本,反之屬於負樣本。
進一步的,
hθ(x) 只和
θTx 有關,
θTx>0 ,那麼
hθ(x)>0.5 ,而
g(z) 只是用來映射的,真實的類別決定權在於
θTx 。當
θTx≫0 時,
hθ(x)趨於1,反之趨於0。若是咱們只從
θTx 出發,那麼模型應該儘量的讓訓練數據中
y=1 的特徵
θTx≫0 ,而
y=0 的特徵
θTx≪0 。
Logistic迴歸
就是要學習獲得參數
θ,使得正例的特徵遠遠大於0,負例的特徵遠遠小於0,並且要在所有訓練數據上達到這個目標。
接下來,嘗試把 Logistic迴歸
作個變形:
- 首先將目標屬性
y∈{0,1} 替換爲
y∈{−1,1} ;
- 將
θTx=θ0+θ1x1+θ2x2+...+θnxn 中
θ0 替換爲
b;
- 最後將
θ1x1+θ2x2+...+θnxn 替換爲
wTx=θ1x1+θ2x2+...+θnxn;
- 獲得
θTx=wTx+b。
就是說,除了
y 由 0 變爲 -1,線性分類函數跟 Logistic迴歸
的形式化表示
hθ(x)=g(θTx)=g(wTx+b) 沒區別。
將假設函數
hw,b(x)=g(wTx+b) 中的
g(z) 作一個簡化,將其映射到
y=−1 和
y=1 上,映射以下:
g(z)={1,−1,z⩾0z<0
二、線性分類器
線性可分數據集:存在某個超平面S可以將數據集的正實例和負實例徹底劃分到超平面的兩側,則稱爲線性可分數據集;不然,線性不可分。
![在這裏插入圖片描述](http://static.javashuo.com/static/loading.gif)
如上圖,這些數據就是線性可分的,因此能夠用一條直線將這兩類數據分開,二維中是一條直線,在多維中就是一個超平面。
這個超平面能夠用分類函數
f(x)=wTx+b 表示,在進行分類時,將
x 代入
f(x) 中,若是
f(x)=0 表示數據點在超平面上;
f(x)>0 對應
y=1的數據點;
f(x)<0 對應
y=−1的數據點。
三、SVM
在作什麼?
![在這裏插入圖片描述](http://static.javashuo.com/static/loading.gif)
假定給定數據如上圖,圓的爲正類,方的爲負類,要想經過一個劃分超平面(這裏是二維,因此是條直線)將不一樣類別的樣本分開。從圖中咱們就能夠看出,能將訓練樣本分開的劃分超平面可能有不少,可是咱們應該去選擇哪個呢?
直觀上,咱們應該選擇中間紅色的那個,由於它對於訓練樣本局部擾動的「容忍」性最好,好比,訓練集外的樣本可能比圖中的樣本更接近兩類的劃分超平面,這將使許多劃分超平面出現錯誤,而紅色的超平面受到的影響是最小的,也就是說,這個劃分超平面的分類結果是最魯棒的,對未知示例的泛化能力最強。
找出這個劃分超平面就成了關鍵,以前咱們介紹的 感知機(點擊連接) 也是尋找這個超平面,將訓練集劃分開,可是感知機利用誤分類最小的策略,求得劃分超平面,並且解有無窮多個;在全部的劃分超平面中,有一個平面是最好的,它能夠儘量地讓全部的樣本點都離該劃分超平面最遠,這就是 SVM
要作的。
四、函數間隔
![在這裏插入圖片描述](http://static.javashuo.com/static/loading.gif)
如圖,有三個實例
A、B、C 均在劃分超平面的正類一側,預測它們的類,點
A 距離超平面較遠,若預測爲正類,就比較確信預測是正確的;點
C 距離超平面較近,若預測爲正類就不那麼確信了;點
B 介於
A、C 之間,預測其爲正類的確信度也在
A、C 之間。
通常來講,一個點距離超平面的遠近能夠相對地表示分類預測的確信程度。
咱們注意到:當一個點
x 被正確預測時,那麼
wx+b 的符合與類標記
y 的符號相同。
因此可用
y(w⋅x+b) 來表示分類的正確性及確信度。
對於給定的訓練數據集
T 和超平面
(w,b):
(1)定義超平面
(w,b) 關於樣本點
(xi,yi) 的 函數間隔 爲:
δi=yi(w⋅xi+b)
(2)定義超平面
(w,b) 關於訓練數據集
T 的函數間隔爲超平面 $(w,b) $關於
T 中全部樣本點
(xi,yi) 的函數間隔之最小值,即:
δ=i=1,2,...,Nminδi
函數間隔能夠表示分類預測的正確性和確信度
五、幾何間隔(點到超平面距離)
樣本空間中任意點
x 到超平面
(w,b) 的距離可寫爲:
r=∣∣w∣∣∣wTx+b∣
補充:
點
x0 到超平面
S:wx+b=0 的距離
d :
-
設
x0在
S上面的投影爲
x1,則
wx1+b=0;
-
由向量
x0x1
與
S平面的法向量平行:
∣w⋅x0x1
∣=(w1)2+(w2)2+...+(wN)2
d=∣∣w∣∣d
-
∣∣w∣∣爲L2範數
-
又:
w⋅x0x1
=w1(x01−x11)+w2(x02−x12)+...+wN(x0N−x1N)
=w1x01+w2x02+...+wNx0N−(w1x11+w2x12+...+wNx1N)
-
又有:
w⋅x+b=0
=w1x01+w2x02+...+wNx0N−(−b)
-
故:
∣∣w∣∣d=∣w⋅x0+b∣
d=∣∣w∣∣∣w⋅x0+b∣
對於給定的訓練數據集
T和超平面
(w,b):
(1)定義超平面
(w,b)關於樣本點
(xi,yi)的幾何間隔爲:
γi=yi(∣∣w∣∣w⋅xi+∣∣w∣∣b)
(2)定義超平面
(w,b)關於訓練數據集
T的幾何間隔爲超平面
(w,b)關於
T中全部樣本點
(xi,yi)的幾何間隔之最小值,即:
γ=i=1,2,...,Nminγi
幾何間隔與函數間隔的關係:
γ=∣∣w∣∣δ
以上內容可參考:點到直線的距離
六、支持向量
訓練數據集的樣本點中與分離超平面距離最近的樣本點的實例稱爲支持向量,即圖中在黑色線上的實例點。
![在這裏插入圖片描述](http://static.javashuo.com/static/loading.gif)
七、拉格朗日對偶性
在約束最優化問題中,經常利用拉格朗日對偶性將原始問題轉化爲對偶問題。經過求解對偶問題而獲得原始問題的解。
支持向量機和最大熵模型都用用到,下面咱們來簡單介紹下拉格朗日對偶性的主要概念和結果。
1.原始問題:
假設
f(x),ci(x),hj(x)是定義在
Rn上的連續可微函數,考慮約束最優化問題:
x∈Rnminf(x)
s.t.ci(x)⩽0,i=1,2,...,k
hj(x)=0,j=1,2,...,l
稱此約束最優化問題爲原始最優化問題或原始問題。
首先,引進廣義拉格朗日函數:
L(x,α,β)=f(x)+i=1∑kαici(x)+j=1∑kβjhj(x)
這裏,
x=(x(1),x(2),。。。,x(n))T∈Rn,αi,βj是拉格朗日乘子,
αi⩾0。
那麼原始問題就是:
θp(x)=α,β:αi⩾0maxL(x,α,β)
假設給定某個
x,若是
x違反了約束條件,即存在某個
i使得
ci(w)>0或者存在某個
j使得
hj(w)̸=0,那麼就有:
θp(x)=α,β:αi⩾0maxL(x,α,β)=+∞
由於若某個
i使得
ci(w)>0,則可令
αi→+∞,若某個
j使得
hj(w)̸=0,則可令
βj使
βjhj(x)→+∞,而其他各
αi,βj均爲0
相反地,若是知足約束條件,則
∑i=1kαici(x)⩽0,∑j=1kβjhj(x)=0,因爲
f(x) 加上一個小於等於的數,最大值就是加上0,因此
θp(x)=f(x)
綜上:
θp(x)={f(x),+∞,x滿足原始問題約束其他
因此,若是考慮極小化問題
xminθp(x)=xminα,β:αi⩾0maxL(x,α,β)
它與原始問題最優化問題等價的,即他們有相同的解。這也稱爲廣義拉格朗日 函數的極小極大問題。
2.對偶問題:
定義:
θD(α,β)=xminL(x,α,β)
再考慮極大化上式,即
α,β:αi⩾0maxθD(α,β)=α,β:αi⩾0maxxminL(x,α,β)
此稱爲廣義拉格朗日函數的極大極小問題。
能夠將廣義拉格朗日函數的極大極小問題表示爲約束最優化問題:
α,βmaxθD(α,β)=α,βmaxxminL(x,α,β)
s.t.αi⩾0,i=1,2,...,k
稱爲原始問題的對偶問題。
補充:
若原始問題和對偶問題都有最優解,則:
d∗=α,β;αi⩾0maxxminL(x,α,β)⩽xminα,β;αi⩾0maxL(x,α,β)=p∗
對任意的
α,β 和
x ,有:
θD(α,β)=xminL(x,α,β)⩽L(x,α,β)⩽α,β:αi⩾0maxL(x,α,β)=θp(x)
即:
θD(α,β)⩽θp(x)
因爲原始問題和對偶問題都有最優解,因此:
α,β:αi⩾0maxθD(α,β)⩽xminθp(x)
即:
d∗⩽p∗
在知足某些條件下,原始問題和對偶問題的最優解相等,即
d∗=p∗,這是能夠經過解對偶問題替代求原始問題,每每原始問題求解最優解比較困難,可是求它的對偶問題比較容易。
假設函數
f(x) 和
ci(x)是凸函數,
hj(x)是仿射函數,而且不等式約束
ci(x)是嚴格可行的,則
x∗和
α∗,β∗分別是原始問題和對偶問題的解的充分必要條件是
x∗,α∗,β∗知足 KTT
條件:
∇xL(x∗,α∗,β∗)=0
αi∗ci(x∗)=0,i=1,2,...,k
ci(x∗)⩽0,i=1,2,...,k
αi∗⩾0,i=1,2,...,k
hj(x∗)=0,j=1,2,...,l
以上介紹了理解支持向量機須要的基本概念,接下來咱們將分別介紹線性可分支持向量機、線性支持向量機和線性不可分支持向量機。
3.拉格朗日乘子法幫助理解
待優化目標:
y=0.6∗(θ1+θ2)2−θ1∗θ2
約束條件:
x2−x+1=0x∈[−4,4]
![在這裏插入圖片描述](http://static.javashuo.com/static/loading.gif)
上圖中曲面爲待優化目標,紅點造成的曲線即是約束條件,表示要在約束條件下找到目標函數的最優解(最小值)
代碼可見:01_拉格朗日乘子法.py
2、線性可分支持向量機
咱們知道,支持向量機的學習目標是在特徵空間找到一個分離超平面,能將實例分到不一樣的類。
當訓練數據集線性可分時,存在無窮個分離超平面將兩類數據正確分開。感知機利用誤分類最小化的策略,求得分離超平面,不過這時的解有無窮多個。線性可分支持向量機利用間隔最大化求最優分離超平面,而且解是惟一的。
那麼咱們如何使得間隔最大化並求得分離超平面呢?
一、間隔最大化(硬間隔)
間隔最大化的直觀解釋是:對訓練數據集找到 幾何間隔最大 的超平面意味着以充分大的確信度對訓練數據進行分類。也就是說,不只將正負實例點分開,而求對最難分的實例點(離超平面最近的點)也有足夠大的確信度將它們分開,這樣的超平面對於未知的新實例有很好的分類預測能力。
下面咱們考慮如何求得一個幾何間隔最大的分離超平面,即最大間隔分離超平面。咱們能夠將這個問題表示爲下面的約束最優化問題:
w,bmaxγs.t.yi(∣∣w∣∣w⋅xi+∣∣w∣∣b)⩾γ,i=1,2,...,N
即咱們但願最大化超平面
(w,b)關於訓練數據集的幾何間隔
γ;
約束條件表示:超平面關於每一個樣本點的幾何間隔至少是
γ
進一步地,咱們考慮幾何間隔和函數間隔的關係。
γ=∣∣w∣∣δ
此處:
δ爲函數間隔
yi(w⋅xi+b)
這是可將上面的約束問題改成:
w,bmax∣∣w∣∣δs.t.yi(w⋅xi+b)⩾δ,i=1,2,...,N
這是咱們須要注意到,函數間隔
δ 的取值並不影響最優化問題的解。
這裏,假設咱們將
w,b按比例改成
λw,λb,這是函數間隔變爲
yi(λw⋅xi+λb)=λδ;
此時,函數間隔的改變並無改變上面的約束,對目標函數的優化也沒用影響,也就是說,它產生一個等價的最優化問題;
這樣,咱們就能夠把函數間隔
δ 特殊化,取
δ=1
將上面
δ=1,帶入原來最優化問題中,注意到最大化
∣∣w∣∣1和最小化
21∣∣w∣∣2是等價的。
咱們將獲得線性支持向量機學習的最優化問題:
w,bmin21∣∣w∣∣2s.t.yi(w⋅xi+b)−1⩾0,i=1,2,...,N
上面這個約束最優化問題是一個凸二次規劃的問題。
若是求出了約束最優化問題的解
(w∗,b∗),那麼就能夠獲得最大間隔分離超平面
w∗⋅x+b∗=0及分類決策函數
f(x)=sign(w∗⋅x+b∗),即線性可分支持向量機。
二、線性可分支持向量機學習算法——最大間隔法以下:
輸入:線性可分訓練數據集
T={(x1,y1),(x2,y2),...,(xN,yN)},其中,
xi∈X=Rn,yi∈Y={−1,+1},i=1,2,...,N;
輸出:最大間隔分離超平面和分類決策函數。
(1)構造並求解約束最優化問題:
w,bmin21∣∣w∣∣2s.t.yi(w⋅xi+b)−1⩾0,i=1,2,...,N
求得最優解
w∗,b∗;
(2)由此獲得分離超平面:
w∗⋅x+b∗=0
分類決策函數:
f(x)=sign(w∗⋅x+b∗)
若訓練數據集線性可分,則可將訓練數據集中的樣本點徹底正確分開的最大間隔分離超平面存在且惟一。
咱們知道 支持向量 就是距離分離超平面最近的實例點。注意到上面約束問題,支持向量即是使約束條件等號成立的點,即:
yi(w⋅x+b)−1=0
在決定分離超平面時只有支持向量起做用,而其餘實例點並不起做用,若是移動支持向量將改變所求的解;可是若是在間隔邊界之外移動其餘實例點,甚至去掉這些點,則解是不會改變的。
三、對偶算法
爲了求解線性可分支持向量機的最優化問題,將原來的約束最優化問題做爲原始問題,應用拉格朗日對偶性,經過求解對偶問題獲得原始問題的最優解。
這樣作的有點:
對偶問題每每更容易求解
天然引入核函數,進而推廣到非線性分類問題(這在後面會介紹)
如今咱們就開始構建原始問題的對偶問題:
(1)首先構建拉格朗日函數
L(w,b,α)=21∣∣w∣∣2−i=1∑Nαi[yi(w⋅x+b)−1]
其中,
αi⩾0,α=(α1,α2,...,αN)T爲拉格朗日乘子向量。
根據拉格朗日對偶性,原始問題的對偶問題是極大極小問題。
αmaxw,bminL(w,b,α)
即,須要先求
L(w,b,α) 對
w,b 的極小,再求對
α 的極大。
(2)求
minw,bL(w,b,α)
將拉格朗日函數
L(w,b,α) 分別對
w,b 求偏導並令其等於0
∇wL(w,b,α)=w−i=1∑Nαiyixi=0∇bL(w,b,α)=0
得:
w=i=1∑Nαiyixii=1∑Nαiyi=0
代入拉格朗日函數中,即得:
L(w,b,α)=21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαiyi((j=1∑Nαjyjxj)⋅xi+b)+i=1∑Nαi=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
即:
w,bminL(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
(3)求
minw,bL(w,b,α)對
α的極大,便是對偶問題:
αmax−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαis.t.i=1∑Nαiyi=0αi⩾0,i=1,2,...,N
將上式的目標函數由求極大轉換爲求極小,獲得等價的對偶最優化問題:
αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=0αi⩾0,i=1,2,...,N
對於線性可分訓練數據集,假設對偶最優化問題對
α的解爲
α∗=(α1∗,α2∗,...,αN∗)T,能夠由
α∗ 求得原始最優化問題對
(w,b) 的解
w∗,b∗
存在如下定理:
假設
α∗=(α1∗,α2∗,...,αN∗)T 是對偶最優化問題的解,則存在下標
j ,使得
αj∗>0,並可求得原始最優化問題的解
w∗,b∗:
w∗=i=1∑Nαi∗yixib∗=yj−i=1∑Nαi∗yi(xi⋅xj)
至此,分離超平面能夠寫成:
i=1∑Nαi∗yi(x⋅xi)+b∗=0
分類決策函數能夠寫爲:
f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)
這就是說,分類決策函數只依賴於輸入
x 和訓練數據集樣本輸入的內積。
四、線性可分支持向量機學習算法——對偶算法:
輸入:線性可分訓練數據集
T={(x1,y1),(x2,y2),...,(xN,yN)},其中,
xi∈X=Rn,yi∈Y={−1,+1},i=1,2,...,N;
輸出:最大間隔分離超平面和分類決策函數。
(1)構造並求解約束最優化問題:
αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=0αi⩾0,i=1,2,...,N
求得最優解
α∗=(α1∗,α2∗,...,αN∗)T;
(2)計算:
w∗=i=1∑Nαi∗yixi
並選擇
α∗ 的一個正份量
αj∗>0,計算:
b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
(3)求得分離超平面:
i=1∑Nαi∗yi(x⋅xi)+b∗=0
分類決策函數:
f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)
五、下面經過具體的數據,比較兩個算法的計算:
數據以下圖:正例點是
x1=(3,3)T,x2=(4,3)T,負例點是x3=(1,1)T
![在這裏插入圖片描述](http://static.javashuo.com/static/loading.gif)
問題:試求最大間隔分離超平面?
1.最大間隔法求解:
解:按照最大間隔法,根據訓練數據集構造約束最優化問題:
w,bmin21(w12+w22)s.t.3w1+3w2+b⩾0 4w1+3w2+b⩾0 −1w1−1w2−b⩾0
求得此最優化問題的解爲:
w1=w2=21,b=−2。因而最大間隔分離超平面爲:
21x(1)+21x(2)−2=0
其中,
x1=(3,3)T與x3=(1,1)T是支持向量。
2.對偶算法求解:
解:根據所給數據,對偶問題是:
αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαi=21(18α12+25α22+2α32+42α1α2−12α1α3−14α2α3)−α1−α2−α3s.t.α1+α2−α3=0αi⩾0,i=1,2,3
解這一最優化問題,將
α3=α1+α2代入目標函數並記爲:
s(α1,α2)=4α12+213α22+10α1α2−2α1−2α2
對
α1,α2求偏導數並令其爲0,易知
s(α1,α2)在點
(23,−1)T取極值,但該點不知足約束條件
α2⩾0,因此極小值應在邊界上達到。
當
α1=0時,最小值
s(0,132)=−132;當
α2=0時,最小值
s(41,0)=−41。因而,
s(α1,α2)在
α1=41,α2=0達到最小,此時
α3=α1+α2=41
這樣,
α1∗=α3∗=41對應的實例點
x1,x3是支持向量,根據:
w∗=i=1∑Nαi∗yixi
b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
計算得:
w∗=41(1)(3,3)+41(−1)(1,1)=(21,21)w1∗=w2∗=21
取點
x1=(3,3)T求b∗,此時j=1,yj=1
b∗=1−[41(1)(x1⋅x1)+41(−1)(x3⋅x1)]=1−(41∗18−41∗6)=−2
因而分離超平面爲:
21x(1)+21x(2)−2=0
分類決策函數爲:
f(x)=sign(21x(1)+21x(2)−2)
由上面兩種方法可見,兩種方法獲得的超平面是同樣的,也驗證了對偶方法的有效性。
至此,咱們獲得目標函數:
αi⩾0maxL(w,b,α)=αi⩾0max21∣∣w∣∣2−i=1∑Nαi[yi(w⋅x+b)−1]
注意到,若是
xi 是支持向量的話,上式中
yi(w⋅x+b)−1=0 (由於至此向量的函數間隔爲1),而對於非支持向量來講,函數間隔會大於1,所以
yi(w⋅x+b)−1>0 ,而
αi⩾0,爲了知足最大化,
αi必須等於0。
到目前爲止,線性可分支持向量機只能處理線性可分數據集,不過,在獲得了對偶問題形式以後,經過核函數(Kernel
)推廣到非線性的狀況就變成了一個很是容易的事情了。
3、核函數 Kernel
在現實任務中,咱們獲得的通常都不是線性可分的,這時線性可分支持向量機就不適用了。由於這時咱們以前所提到的不等式約束並不能都成立。那麼對於非線性的數據 SVM
是如何處理的呢?
對於非線性的狀況,SVM
的處理方法是選擇一個核函數
k(⋅,⋅),經過將數據映射到高維空間,來解決在原始空間中線性不可分的問題。
具體來講,在線性不可分的狀況下,支持向量機首先在低維空間中完成計算,而後經過核函數將輸入空間映射到高維特徵空間,最終在高維特徵空間中構造出最優的分離超平面,從而把平面上自己很差分的非線性數據分開。如圖所示,一維數據在二維空間沒法劃分,從而映射到三維空間裏劃分:
![在這裏插入圖片描述](http://static.javashuo.com/static/loading.gif)
所以,在沒有核函數以前,當咱們但願用前面線性分類問題的方法來解決這個問題,就須要選擇一個非線性特徵集,並將數據改寫成新的表達方式,這等價於應用一個固定的非線性映射,將數據映射到特徵空間,在特徵空間中使用線性分類器。
f(x)=i=1∑Nwiϕi(x)+b
其中,
ϕ:表示從輸入空間到某個特徵空間的映射,這意味着線性分類方法求解非線性分類問題通常分爲兩步:
- 使用一個變換將原空間的數據映射到新空間;
- 在新空間裏使用線性分類學習方法從訓練數據中學習分類模型。
一、核函數:如何處理非線性數據
假設咱們有以下圖所示的兩類數據,分別爲兩個圓圈的形狀,很明顯這樣的數據是線性不可分的,那麼咱們如何把這兩類數據分開呢?
![在這裏插入圖片描述](http://static.javashuo.com/static/loading.gif)
事實上,上圖數據集使用兩個不一樣半徑的圓圈加上少許噪聲生成獲得的,因此,一個理想的分類應該是一個「圓圈」而不是一條直線(超平面),若是用
X1 和
X2 來表示這個二維平面的兩個座標,咱們知道一個二次曲線的方程能夠寫成以下形式:
a1X1+a2X12+a3X2+a4X22+a5X1X2+a6=0
注意上面的形式,若是咱們構造另外一個五維的空間,其中五個座標的值分別爲:
Z1=X1,Z2=X12,Z3=X2,Z4=X22,Z5=X1X2
那麼,上面的方程就能夠寫成:
i=1∑5aiZi+a6=0
關於新的座標
Z ,若是咱們作一個映射
ϕ:R2→R5,將
X 按照上面的規則映射爲
Z ,那麼在的新的空間中原來的數據將變成線性可分的,從而使用以前咱們推導的線性分類算法就能夠進行處理了,這正是 Kernel
方法處理非線性問題的基本思想。
再進一步描述 Kernel
的細節以前,不妨再來看看上述例子在映射事後的直觀形態。固然,咱們沒法把五維空間畫出來,不過因爲咱們生成數據的時候用了特殊的情形,因此這裏的超平面實際的方程是這個樣子的(圓心在
X2軸上的一個正圓):
i=1∑5aiZi+a6=0
所以我只須要把它映射到
Z1=X12,Z2=X22,Z3=X2,這樣一個三維空間中便可,下圖便是映射以後的結果,將座標通過適當的旋轉,就能夠很明顯地看出,數據是能夠經過的一個平面來分開的,以下圖:
![在這裏插入圖片描述](http://static.javashuo.com/static/loading.gif)
核函數至關於把原來的分類函數:
f(x)=i=1∑nαiyi⟨xi,x⟩+b
映射成:
f(x)=i=1∑nαiyi⟨ϕ(xi),ϕ(x)⟩+b
而其中的
α 能夠經過求解以下對偶問題獲得:
αmaxi=1∑nαi−21i,j=1∑nαiαjyiyj⟨ϕ(xi),ϕ(x)⟩
s.t.αi⩾0i=1,2,...,n
i=1∑nαiyi=0
獲得以上對偶問題,彷佛咱們就能夠解決非線性問題,咱們只須要找到一個映射
ϕ(⋅),而後將非線性數據映射到新空間中,再作線性 SVM
便可,然而事實上並無這麼簡單。
- 在最初的例子裏,咱們對一個二維空間最映射,選擇的新空間是原始空間的全部一階和二階的組合,獲得五維空間;
- 若是原始空間是三維的,那麼咱們就會獲得:3個一次項+3個二次交叉項+3個平方項+1個三次交叉項+6個一次和二次交叉項=19維的空間,這個數目層指數級爆炸增加,從而一定給
ϕ(⋅) 的計算帶來困難,並且若是遇到無窮維的狀況,就根本沒法計算了。
這時候,Kernel
核函數就派上用場了。
咱們還使用前面的二維原始空間,設兩個向量
x1=(η1,η2)T 和
x