【西瓜書筆記】——支持向量機(SVM)

【引言】
支持向量機可作迴歸也可作分類,其主要思想是旨在建立一個WX+b的超平面,對高維樣本空間進行數據擬合或劃分。支持向量機的核心內容爲核函數凸優化問題,意在尋找合適的參數矩陣W位移項b從而找到最合適的支持向量機。


1、間隔與支持向量

分類學習最基本的想法是基於訓練集D在樣本空間中找到一個劃分超平面,將不同類別的樣本分開。但是同一個樣本空間中劃分超平面有許多,而支持向量機就是旨在尋找最優的劃分超平面。

我們需要尋找“容忍性”最好的超平面,即類別分界點與之距離最遠的超平面,該超平面的結果一定是最魯棒的,即對未見示例的泛化能力最強。

劃分超平面的線性方程如下:
WTx+b=0W^Tx + b =0
其中W=(w1; w2; …; wd)爲法向量,決定了超平面的方向;而b則是位移項,決定了超平面和遠點之間的距離。顯然,超平面的方程由w和b共同決定,那我們的目標便得以確定:找到最合適的法向量w和最合適的位移項b就可以找到最合適的劃分超平面(SVM)


樣本空間中任意一點到超平面的距離可以寫爲:
r=wTx+bwr = \frac{|w^Tx +b|}{||w||}
對於普通的二分類問題,類別1則y1=1y_1=1,類別2則y2=1y_2 = -1,那麼就有判別函數:
{wTxi+b1wTxi+b1\{^{w^Tx_i +b≥1}_{w^Tx_i+b≤-1}
而在兩個分類區域中距離劃分超平面最近的幾個訓練樣本點就被稱爲支持向量。整個可劃分區域被稱爲間隔
γ=2wγ=\frac{2}{||w||}
所以我們的目標其實也可以轉化爲尋找最大的間隔


有了目標函數,那麼就可以尋找相關的約束,來實現目標最大化:
maxw,b2wmax_{w,b}\frac{2}{||w||}
s.t.yi(wTxi+b)1,i=1,2,.....ms.t.—— y_i(w^Tx_i + b) ≥1, i=1,2,.....m
由上式可以轉化爲求最小的minw,b12w2min_{w,b}\frac{1}{2}||w||^2,這邊是SVM的基本型。


2、對偶問題

有了目標函數和約束條件,那麼我們就要想方設法求解最優的w和b。可以觀察,參數模型本身是一個凸二次規劃問題,因此可以先引入拉格朗日乘子,再求解其對偶問題
L(w,b,α)=12w2+i=1mαi(1yi(wTxi+b))L(w,b,α)=\frac{1}{2}||w||^2+\sum_{i=1}^{m}α_i(1-y_i(w^Tx_i+b))
分別對w和b求偏導用以化簡方程後,可得到w=i=1mαiyixiw = \sum_{i=1}^{m}α_iy_ix_i0=i=1mαiyi0=\sum_{i=1}^{m}α_iy_i。代回上述方程後,可以將原問題化簡得到對偶問題:
maxαi=1mαi12i=1mj=1mαiαjyiyjxiTxjmax_α\sum_{i=1}^{m}α_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}α_iα_jy_iy_jx^T_ix_j
s.ti=1mαiyis.t——\sum_{i=1}^{m}α_iy_i
這裏之所以對轉置是因爲x作爲樣本空間,做矩陣乘法需要保持格式一致

爲了滿足KKT條件,即對於不同的α值,y的結果會落在不同的劃分區域,因此SMO算法利用了啓發式的思想,先固定αi之外的所有參數,再求αi上的極值,最終得到使用所有支持向量求解平均值的方法:
b=1SsS(1ysiSαiyixiTxs)b = \frac{1}{|S|}\sum_{s∈S}(\frac{1}{y_s}-\sum_{i∈S}α_iy_ix_i^Tx_s)
顯然,整個過程從引入拉格朗日乘子、引入凸優化、KKT準則和SMO法的目的都是爲了以更加精確、合適的方式得到最合適的w和b值,從而確定最優的劃分平面

這個過程只是對SVM算法的線性方程做出的優化策略,而針對樣本空間X,也有相應的優化策略——核函數


3、核函數

不難發現,在整個優化過程中,關於目標函數中總存在以下式子:
XiTXjX_i^TX_j
在現實問題中,往往不僅只有二分類問題,樣本的規模也很龐大,因此利用了這樣的思想將低維空間的樣本集映射到高維空間中,映射的過程就是核函數的處理過程。

例如對於f(x)=wTx+bf(x) = w^Tx+b,經過處理後變爲f(x)=wTϕ(x)+bf(x) = w^T\phi(x) +b,函數ϕ\phi就是核函數,用於將x映射到高維空間中。

ϕ(xi)Tϕ(xj)=k(xi,xj)\phi(x_i)^T\phi(x_j)=k(x_i,x_j)
k()就是我們常說的核函數映射(kernel)。而核函數的選取方法也有很多種,針對不同的樣本空間,效果也各不相同。

常用的核函數有:

核函數名稱 表達式 參數
線性核函數 k(xi,xj)=xiTxjk(x_i,x_j)=x_i^Tx_j
徑向基核函數(多項式核) k(xi,xj)=(xiTxj)dk(x_i,x_j)=(x_i^Tx_j)^d 顯然當d=1時,退化爲線性核函數
高斯核函數(RBF) exixj22σ2e^{-\frac{\|x_i-x_j\|^2}{2\sigma^2}} σ\sigma爲帶寬
拉普拉斯核函數 exixjσe^{-\frac{\|x_i-x_j\|}{\sigma}} 同上
Sigmoid核函數 k(xi,xj)=tanh(βxiTxj+θ)k(x_i,x_j)=tanh(βx_i^Tx_j+θ) tanh爲雙曲正切函數,其中β>0而θ<0

【*注】通俗的說,核函數就是對xiTxjx_i^Tx_j進行處理的函數,只要是一個對稱函數所對應的核矩陣半正定,那這個矩陣就能作爲核函數,這也定義了“再生希爾伯特空間”的特徵空間。

而對於任意兩個核函數,有以下幾個特點:
1、其直積也是核函數,即核函數乘核函數還是核函數
2、如果滿足k1(x,z)=g(x)k2(x,z)g(z)k_1(x,z) = g(x)k_2(x,z)g(z)那麼依然是核函數;
3、對於兩個核函數k1k2k_1和k_2,若有任意正數δ1和δ2,那麼k1和k2的線性組合δ1k1+δ2k2δ_1k_1+δ_2k_2也是核函數。


4、軟間隔和正則化

使用SVM的目的是尋找超平面對不同分類的樣本進行劃分,但是再現實任務中很難找到合適的核函數使訓練樣本線性可分。即使找到了核函數,也無法判定該線性劃分結果是否是因爲過擬合。因此,爲了允許SVM在樣本上出錯,引入了軟間隔的概念

硬間隔:支持向量機明確劃分樣本,嚴格約束樣本空間
軟間隔:允許出現錯誤劃分,非嚴格約束,可以放寬劃分條件或省略部分條件避免過擬合。在最大化間隔的同時,使不滿足約束的樣本儘可能少。

於是,軟間隔支持向量機的優化目標函數變爲:
maxa,b12w2+Ci=1ml0/1(yi(wTxi+b)1)max_{a,b}\frac{1}{2}||w||^2+C\sum_{i=1}^{m}l_{0/1}(y_i(w^Tx_i+b)-1)
其中,l0/1(z)l_{0/1}(z)是0/1損失函數,當z<0時,取值爲1;否則爲0。關於常數C,其取無窮大時,約束條件就相當於原SVM條件;而C有取值時,就存在允許出現不滿足約束樣本的情況


5、支持向量迴歸(SVR)

我們計算f(x)=wTx+bf(x)=w^Tx +b表示預測函數,而y是樣本本身的標籤類別。對於SVR而言,就是允許在f(x)yϵ|f(x)-y|≤\epsilon範圍內存在一定的偏差,顯然這就形成了一個以f(x)爲中心的間隔帶,帶寬爲2ϵ\epsilon,落在間隔帶內的樣本被視爲預測正確。與軟間隔類似的,這裏依舊引入了正則化常數C和損失函數來改寫約束條件:
minw,b12w2+Ci=1mlϵ(f(xi)yi)min_{w,b}\frac{1}{2}||w||^2+C\sum_{i=1}^{m}l_\epsilon(f(x_i)-y_i)
其中ϵ\epsilon叫做不敏感損失函數:
lϵ(z)={zϵ0l_{\epsilon}(z)={\{_{|z|-\epsilon}^{0}}
即當|z|≤ϵ\epsilon時,l爲0。同樣也引入鬆弛變量後可以得到相應的拉格朗日函數,最後轉化爲對偶問題,過程不再贅述。

【注:】對於非線性可分問題,可以用核方法將線性判別式處理爲非線性問題,引入類間散度矩陣和類內散度矩陣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章