第六章 支持向量機

給定一個數據集D={(x1,y1),(x2,y2),……,(xm,ym)},yi∈{-1,+1}。對于分類學習來說,最基本的想法就是找出一個超平面,能夠把不同類別的樣本分開。

數據集

對于上圖的分類,我們會想用一個超平面劃分兩類。

超平面劃分兩類

可以看出,劃分兩類的超平面有多種,那我們應該選擇哪一種呢?

直覺上,我們會選擇超平面1(紅色線)。因為該超平面對訓練樣本局部擾動的"容忍性"好。如果選擇超平面3,當有一個正例在超平面3的上方之外的話,那么就會分類錯誤,超平面3就不容忍這個正例,所以說超平面1的容忍性好。換句話說,就是超平面1所產生的分類結果是最魯棒的,就是對新樣例的泛化能力強。

在樣本空間中,超平面的線性方程如下:

超平面線性方程

其中w = (w1,w2,……,wd)為法向量,決定了超平面的方向;b為位移項(截距),決定了超平面與原點之間的距離。劃分超平面最終由w和b確定,記為(w,b)。

樣本空間中樣本點到超平面的距離如下:

點到平面的距離公式

假設超平面(w,b)能將訓練樣本正確分類,則對于(xi,yi)∈D,

若yi=1,則wTxi+b>0;若yi= -1,則有wTxi+b < 0,令

由于上面這個轉換詳解過于復雜,可以看視頻詳解,這里不作說明。對于距離超平面最近的樣本點,我們稱為"支持向量"。兩個異類支持向量到超平面的距離之和稱為間隔,如下

間隔
支持向量與間隔

為了盡可能劃分類別正確,我們可以轉化為找到具有"最大間隔"的超平面,即找到w和b,使得γ最大,即:

而最大化間隔,就需要最大化||w||-1,相當于最小化||w||2,則目標可以重寫為:

這就是支持向量機(SVM)的基本模型。

6.2 對偶問題

原始問題與對偶問題以及KKT條件的關系解釋https://blog.csdn.net/fkyyly/article/details/86488582

原始問題與對偶問題的視頻講解:https://www.bilibili.com/video/av77638697?p=11

原始問題轉化為對偶問題:https://www.bilibili.com/video/av77638697?p=12

上面這三個鏈接對于對偶問題有較好的解釋。

原始問題

對于上式,是一個凸函數二次規劃的問題。我們可以對上式使用拉格朗日乘子法得到原始問題的對偶問題。

對每個約束條件添加拉格朗日乘子αi,且αi≥0,則該問題的優化函數為:

先求優化函數對于w和b的極小值即,對w和b求偏導,令偏導為0,有:

對w和b求偏導

接著將w代入優化函數得到:

可以看出,對w和b求偏導之后代入,再考慮對b求偏導得到的約束,就得到了對偶問題:

得到對偶問題

得到優化函數只剩下α作為參數,只要求優化函數的極大值,就可以求出α,進而求出w和b,再代入我們的模型,就可以了,假設我們的模型是f(x) = wTx + b,則:

上述過程要滿足KKT條件:

KKT條件

對于對偶問題,我們該如何求解α呢?我們用的就是SMO算法

SMO基本思路:先固定αi之外的所有參數,然后求αi上的極值。

SMO步驟:每次選擇兩個變量αi和αj,并固定其他參數,分別對αi和αj求偏導為0,得到αi和αj,若符合約束條件就不用算,若不符合約束條件,再更新αi和αj,代入對偶問題的目標函數,直到符合條件。

SMO步驟

可以看出,SMO固定了其他的參數,僅僅考慮αi和αj,因此對偶問題中的約束條件可以重寫為:

約束條件重寫


其中的c:

c的含義

通過重寫之后的約束條件,我們可以將對偶問題中的目標函數的αj消去,只剩下αi一個變量,這時我們的約束只有KKT里面的αi≥0,對αi求導為0,得到αi,再求出aj,通過這樣子我們可以更高效的求出ai和aj。求出α之后,代入:

就可以計算出w了。

那么b該如何計算呢?

使用所有支持向量求解的平均值

設支持向量表示為(xs,ys)

設S= { i | αi>0,i = 1,2,3……,m}為所有支持向量的下標集。

b的求解公式

支持向量機的代碼實現:

https://blog.csdn.net/qq_43608884/article/details/88658216

6.3 核函數

在前面的討論中,我們假設訓練樣本都是線性可分的,上述SVM也只是在處理線性可分的數據。事實上,我們很多數據都是非線性可分的。

對于非線性的情況,SVM 的處理方法是選擇一個核函數 κ(?,?),通過將數據映射φ到高維空間,來解決在原始空間中線性不可分的問題。

具體來說,在線性不可分的情況下,支持向量機首先在低維空間中完成計算,然后通過核函數將輸入空間映射到高維特征空間,最終在高維特征空間中構造出最優分離超平面,從而把平面上本身不好分的非線性數據分開。

如圖所示,一堆數據在二維空間無法劃分,從而映射到三維空間里劃分:

類似,原始問題為:

原始問題

對偶問題為:

對偶問題

其中,紅色方框里面的式子,表示的是樣本xi和xj映射到特征空間之后的內積,當屬性空間的維數很大時,直接計算內積是很困難的,因此,有:

即xi和xj在屬性空間中的內積等于在原始樣本空間中通過函數K(·,·)計算的結果。

這里的函數K(·,·),就是核函數

于是,對偶問題可以重寫為:

對偶問題重寫

最終可以得到:

常用的核函數K(·,·)有以下幾種:

常用核函數

關于核函數,有下面三個關系:

若k1和k2為核函數,則對于任意正數γ1和γ2,其線性組合γ1k1+γ2k2也為核函數

若k1和k2為核函數,則核函數的直積也為核函數:

核函數的直積

若k1和k2為核函數,則對于任意函數g(x):

也是核函數

對文本數據通常采用線性核,情況不明時可先嘗試高斯核。

高斯核函數

支持向量機的非線性代碼實現

https://blog.csdn.net/kt513226724/article/details/80413018

6.4 軟間隔與正則化

在上述中的支持向量機中,我們要求所有樣本都要滿足約束,即都被劃分正確,這叫做"硬間隔"。可實際上,很難確定合適的核函數使得樣本在特種空間中線性可分,不允許分類錯誤的樣本。

緩解這一個問題的辦法就是允許支持向量機在一些樣本上出錯,

為此,引入"軟間隔"

軟間隔

軟間隔允許某些樣本不滿足約束條件,也要讓這些樣本很少。則優化目標可以寫為:

其中C是一個常數,可以理解為問題正則化時加入的參數。當C趨于無窮大時,所有樣本均滿足原來硬間隔的約束條件;當C取有限值時,允許一些樣本不滿足約束。

而式子中的

損失函數

然而"0/1損失函數"的不可微、不連續,數學性質較差,于是我們可以用其他函數替代損失函數,稱為"替代損失函數",通常數學性質較好,通常有以下三種替代損失函數:

替代損失函數

下面我們使用hinge損失函數來優化目標。

首先對訓練集的每個樣本(xi,yi)引入一個松弛變量ξi≥0,使函數間隔加上松弛變量大于等于1,也就是說,約束條件變為:

加入松弛變量之后的約束條件

對比硬間隔最大化,可以看到我們對樣本到超平面的函數距離的要求放松了,之前是一定要大于等于1,現在只需要加上一個大于等于0的松弛變量能大于等于1就可以了。當引入了ξ之后,也是需要成本的,所以硬間隔到軟間隔的優化目標變為:

硬間隔到軟間隔

接著我們對軟間隔支持向量機進行目標函數的優化。通過拉格朗日乘子法得到:

軟間隔的拉格朗日函數

對w、b和ξ求偏導為0,得到:

將他們代入拉格朗日函數:

代入過程

此時我們就得到了,原始問題的對偶問題:

對偶問題

接著用SMO算法算出α,就可以得到w,然后再計算b,與硬間隔類似。

對于上述過程,也需要滿足KKT條件:

軟間隔支持向量機的KKT條件

對于訓練樣本(xi,yi),有

1)若α=0,那么yi(wTxi+b)-1≥0,即樣本在間隔邊界之外,即被正確分類。

2)若0<α

3)若α=C,則μi=0,該樣本點是有可能正確分類、也有可能分類錯誤,此時考試ξi。

① 如果0≤ξi≤1,那么樣本點在超平面和間隔邊界之間,但是被正確分類。

② 如果ξi=1,那么樣本點在超平面上,無法被正確分類。

③ 如果ξi>1,樣本點被分類錯誤。

對于,允許誤差的優化目標函數,我們可以寫為更加一般的形式:

Ω(f)稱為"結構風險",用于描述模型f的某些性質;

第二項的Σml(f(xi),yi)稱為"經驗風險",用于描述模型與訓練數據的契合度。

C稱為正則化常數,用于對結構風險和經驗風險進行折中。

上式被稱為"正則化問題",Ω(f)稱為正則化項,C為正則化常數。

6.5 支持向量回歸(SVR)

上面講到的SVM是用于分類任務的,而對于回歸任務,我們使用SVR。

SVM分類,就是找到一個平面,讓兩個分類集合的支持向量或者所有的數據離分類平面最遠;

SVR回歸,就是找到一個回歸平面,讓一個集合的所有數據到該平面的距離最近。

SVR假設f(x)與y之間最多有ε的偏差,即以f(x)為中心,允許f(x)+ε和f(x)-ε的誤差,構建一個2ε的間隔。

SVR

SVR的形式如下

SVR原始問題
不敏感損失函數

由于間隔帶的兩側松弛程度有所不同,所有引入松弛變量ξi和ξ^i,則原始問題重寫為:

接著我們要求對偶問題。首先引入拉格朗日乘子,可以得到拉格朗日函數:

令L對w、b、ξi、ξ^i的偏導為0,可得到:

將它們代入L,可以得到對偶問題:

SVR的對偶問題

上述過程中,要滿足KKT條件:

KKT條件

將上面求得的w代入我們原來的模型f(x) = wTx + b,得到SVR的解:

由KKT可以看出,對每個樣本(xi,yi)有:

1)(C - αi)ξi=0 ,2)αi(f(xi) - yi- ε - ξi)=0。

于是通過SMO算法得到αi之后,若0<αi

b

實際上,我們更常用的是:選取所有滿足0 < ai< C的樣本求解b之后取平均值。

若考慮映射到高維空間則有:

最終通過上述類似的求解過程,我們得到SVR可以表示為:

SVR映射形式

6.6 核方法

對于SVM和SVR,它們的優化問題都是類似下面的式子:

而SVR和SVM學得的模型總能表示為核函數K(x,xi)的線性組合,所以上式的模型也可以寫成為核函數的線性組合:

上式模型的解

對于上面這個結論,就是"表示定理"

表示定理

人們基于核函數的學習方法,稱為"核方法"。最常見的,是通過引入核函數來將線性學習擴展為非線性。

下面以"核線性判別分析"(KLDA)為例,演示如何引入核函數進行非線性擴展。

我們難以直到映射φ的具體形式,因此使用核函數K(x,xi) = φ(xi)Tφ(x)來表達映射和特征空間F。

把J(w)作為式子6.57中的損失函數,令Ω=0,有

由表示定理得,

再由式6.59得

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。