1. 程式人生 > >機器學習之支持向量機(三):核函數和KKT條件的理解

機器學習之支持向量機(三):核函數和KKT條件的理解

麻煩 ron 現在 調整 所有 核函數 多項式 err ges

註:關於支持向量機系列文章是借鑒大神的神作,加以自己的理解寫成的;若對原作者有損請告知,我會及時處理。轉載請標明來源。

序:

我在支持向量機系列中主要講支持向量機的公式推導,第一部分講到推出拉格朗日對偶函數的對偶因子α;第二部分是SMO算法對於對偶因子的求解;第三部分是核函數的原理與應用,講核函數的推理及常用的核函數有哪些;第四部分是支持向量機的應用,按照機器學習實戰的代碼詳細解讀。

1 核函數

1.1 核函數的定義

設χ是輸入空間(歐氏空間或離散集合),Η為特征空間(希爾伯特空間),如果存在一個從χ到Η的映射

φ(x): χ→Η

使得對所有的x,z∈χ,函數Κ(x,z)=φ(x)?φ(z)

, 則稱Κ(x,z)為核函數,φ(x)為映射函數,φ(x)?φ(z)為x,z映射到特征空間上的內積。

由於映射函數十分復雜難以計算,在實際中,通常都是使用核函數來求解內積,計算復雜度並沒有增加,映射函數僅僅作為一種邏輯映射,表征著輸入空間到特征空間的映射關系。至於為什麽需要映射後的特征而不是最初的特征來參與計算,為了更好地擬合是其中一個原因,另外的一個重要原因是樣例可能存在線性不可分的情況,而將特征映射到高維空間後,往往就可分了。

1.2 核函數的計算原理

將核函數形式化定義,如果原始特征內積是技術分享圖片,映射後為技術分享圖片,那麽定義核函數(Kernel)為

技術分享圖片

到這裏,我們可以得出結論,如果要實現該節開頭的效果,只需先計算技術分享圖片

,然後計算技術分享圖片即可,然而這種計算方式是非常低效的。比如最初的特征是n維的,我們將其映射到技術分享圖片維,然後再計算,這樣需要技術分享圖片的時間。那麽我們能不能想辦法減少計算時間呢?

先看一個例子,假設x和z都是n維的,

技術分享圖片

展開後,得:

技術分享圖片

這個時候發現我們可以只計算原始特征x和z內積的平方(時間復雜度是O(n)),就等價與計算映射後特征的內積。也就是說我們不需要花技術分享圖片時間了。

現在看一下映射函數(n=3時),根據上面的公式,得到

技術分享圖片

也就是說核函數技術分享圖片只能在選擇這樣的技術分享圖片作為映射函數時才能夠等價於映射後特征的內積。

再看另外一個核函數,高斯核函數:

技術分享圖片

這時,如果x和z很相近(技術分享圖片),那麽核函數值為1,如果x和z相差很大(技術分享圖片),那麽核函數值約等於0。由於這個函數類似於高斯分布,因此稱為高斯核函數,也叫做徑向基函數(Radial Basis Function 簡稱RBF)。它能夠把原始特征映射到無窮維。

下面有張圖說明在低維線性不可分時,映射到高維後就可分了,使用高斯核函數。

技術分享圖片

註意,使用核函數後,怎麽分類新來的樣本呢?線性的時候我們使用SVM學習出w和b,新來樣本x的話,我們使用技術分享圖片來判斷,如果值大於等於1,那麽是正類,小於等於是負類。在兩者之間,認為無法確定。如果使用了核函數後,技術分享圖片就變成了技術分享圖片,是否先要找到技術分享圖片,然後再預測?答案肯定不是了,找技術分享圖片很麻煩,回想我們之前說過的。

技術分享圖片

只需將技術分享圖片替換成技術分享圖片,然後值的判斷同上。

1.3 核函數有效性的判定

問題:給定一個函數K,我們能否使用K來替代計算技術分享圖片,也就說,是否能夠找出一個技術分享圖片,使得對於所有的x和z,都有技術分享圖片?即比如給出了技術分享圖片,是否能夠認為K是一個有效的核函數。

下面來解決這個問題,給定m個訓練樣本技術分享圖片,每一個技術分享圖片對應一個特征向量。那麽,我們可以將任意兩個技術分享圖片技術分享圖片帶入K中,計算得到技術分享圖片。i 可以從1到m,j 可以從1到m,這樣可以計算出m*m的核函數矩陣(Kernel Matrix)。為了方便,我們將核函數矩陣和技術分享圖片都使用K來表示。如果假設K是有效地核函數,那麽根據核函數定義:

技術分享圖片

可見,矩陣K應該是個對稱陣。讓我們得出一個更強的結論,首先使用符號技術分享圖片來表示映射函數技術分享圖片的第k維屬性值。那麽對於任意向量z,得:

技術分享圖片

最後一步和前面計算技術分享圖片時類似。從這個公式我們可以看出,如果K是個有效的核函數(即技術分享圖片技術分享圖片等價),那麽,在訓練集上得到的核函數矩陣K應該是半正定的(技術分享圖片)。這樣我們得到一個核函數的必要條件:K是有效的核函數 ==> 核函數矩陣K是對稱半正定的。

技術分享圖片

Mercer定理表明為了證明K是有效的核函數,那麽我們不用去尋找技術分享圖片,而只需要在訓練集上求出各個技術分享圖片,然後判斷矩陣K是否是半正定(使用左上角主子式大於等於零等方法)即可。

1.4 常見的核函數

1 線性核函數

線性內核是最簡單的內核函數。 它由內積<x,y>加上可選的常數c給出。 使用線性內核的內核算法通常等於它們的非內核對應物,即具有線性內核的KPCA與標準PCA相同。

表達式 :技術分享圖片

2 多項式核函數

多項式核是非固定內核。 多項式內核非常適合於所有訓練數據都歸一化的問題。

表達式:k(x,y)=(αx T y + c)d

可調參數是斜率α,常數項c和多項式度d。

3 高斯核函數

高斯核是徑向基函數核的一個例子。

技術分享圖片

或者,它也可以使用來實現

技術分享圖片

可調參數sigma在內核的性能中起著主要作用,並且應該仔細地調整到手頭的問題。 如果過高估計,指數將幾乎呈線性,高維投影將開始失去其非線性功率。 另一方面,如果低估,該函數將缺乏正則化,並且決策邊界將對訓練數據中的噪聲高度敏感。

4 指數的內核

指數核與高斯核密切相關,只有正態的平方被忽略。 它也是一個徑向基函數內核。

表達式:技術分享圖片

5 拉普拉斯算子核

拉普拉斯核心完全等同於指數內核,除了對sigma參數的變化不那麽敏感。 作為等價的,它也是一個徑向基函數內核。

表達式:技術分享圖片

重要的是註意,關於高斯內核的σ參數的觀察也適用於指數和拉普拉斯內核。

2 KKT 條件

KKT條件是解決最優化問題的時用到的一種方法。我們這裏提到的最優化問題通常是指對於給定的某一函數,求其在指定作用域上的全局最小值。提到KKT條件一般會附帶的提一下拉格朗日乘子。對學過高等數學的人來說比較拉格朗日乘子應該會有些印象。二者均是求解最優化問題的方法,不同之處在於應用的情形不同。有三種情況:無約束條件,等式約束條件,不等式約束條件。

2.1 無約束條件

這是最簡單的情況,解決方法通常是函數對變量求導,令求導函數等於0的點可能是極值點。將結果帶回原函數進行驗證即可。

2.2 等式約束條件

設目標函數為f(x),約束條件為hk(x),l 表示有 l 個約束條件,如:

技術分享圖片

則解決方法是消元法或者拉格朗日法。消元法比較簡單不在贅述,拉格朗日法這裏在提一下,因為後面提到的KKT條件是對拉格朗日乘子法的一種泛化。

定義拉格朗日函數F(x) :

技術分享圖片

其中λk是各個約束條件的待定系數。

然後解變量的偏導方程:

技術分享圖片

2.3 不等式約束條件

設目標函數f(x),不等式約束為g(x),添加上等式約束條件h(x)。此時的約束優化問題描述如下:

技術分享圖片

則我們定義不等式約束下的拉格朗日函數L,則L表達式為:

技術分享圖片

其中 f(x) 是原目標函數,hj(x) 是第j個等式約束條件,λj 是對應的約束系數,gk 是不等式約束,uk 是對應的約束系數。

此時若要求解上述優化問題,必須滿足下述條件(也是我們的求解條件):

技術分享圖片

這些求解條件就是KKT條件。(1)是對拉格朗日函數取極值時候帶來的一個必要條件,(2)是拉格朗日系數約束(同等式情況),(3)是不等式約束情況,(4)是互補松弛條件,(5)、(6)是原約束條件。

對於一般的任意問題而言,KKT條件是使一組解成為最優解的必要條件,當原問題是凸問題的時候,KKT條件也是充分條件。

2.4 舉例說明

現有如下不等式約束優化問題:

技術分享圖片

此時引入松弛變量可以將不等式約束變成等式約束。設a1和b1為兩個松弛變量,則上述的不等式約束可寫為:

技術分享圖片

則該問題的拉格朗日函數為:

技術分享圖片

根據拉格朗日乘子法,求解方程組:

技術分享圖片

同樣 μ2b1=0,來分析g2(x)起作用和不起作用約束。

於是推出條件:

技術分享圖片

搞了一天把支持向量機的前三篇寫完了,肯定是寫的不足,鑒於SVM難度大和本人的水平有限,只能做到這樣了。不足的地方請各位博友多多指教,第四部分的支持向量機的應用,是根據機器學習實戰一步步實現,會給出詳細的代碼介紹。

參考:

1 支持向量機(三)核函數 https://www.cnblogs.com/jerrylead/archive/2011/03/18/1988406.html

2 機器學習---核函數 https://www.cnblogs.com/xiaohuahua108/p/6146118.html

3 理解支持向量機(二)核函數 http://blog.csdn.net/shijing_0214/article/details/51000845

4 KKT條件介紹 http://blog.csdn.net/johnnyconstantine/article/details/46335763

機器學習之支持向量機(三):核函數和KKT條件的理解