1. 程式人生 > >機器學習筆記之核函式

機器學習筆記之核函式

基本概念

核函式定義:
這裡寫圖片描述
核函式:是對映關係的內積,對映函式本身僅僅是一種對映關係,並沒有增加維度的特性,不過可以利用核函式的特性,構造可以增加維度的核函式,這通常是我們希望的。
例如這樣一個圖,資料集不是線性可分的:
這裡寫圖片描述
該資料集在二維空間中,每個資料點都可用一個二維向量(x1,x2)’來表示(單引號’表示轉置)。我們可以用一個橢圓形狀的超平面在該2維空間中對資料集進行分類,我們寫出橢圓的一般方程:
這裡寫圖片描述
如果我們令:
這裡寫圖片描述
你會發現,2維向量x被對映成另一個5維向量z後,分類超平面是一個線性超平面,資料點變得線性可分!也即是下面的變換:
這裡寫圖片描述
也就是說,資料集在二維空間中線性不可分,若想實現線性可分,須把該資料集對映到一個5維空間中。
下圖為效果圖
這裡寫圖片描述


結論:

在SVM的應用中,如果資料點在原空間中不是線性可分的,理想的做法是找到一個對映函式把資料對映到高維空間中,然後再進行分類。但是,對映後的目標空間往往是很高維甚至是無限維的,我們需要找到一個函式來代替求高維空間中向量內積的運算,我們命名它為核函式。一般的做法都是選擇常用的核函式來使用,當然,你也可以自己構造核函式,前提是要滿足Mercer條件

舉例理解核函式

用一個具體文字分類的例子來看看這種向高維空間對映從而分類的方法如何運作,想象一下,我們文字分類問題的原始空間是1000維的(即每個要被分類的文件被表示為一個1000維的向量),在這個維度上問題是線性不可分的。現在我們有一個2000維空間裡的線性函式:
這裡寫圖片描述


注意向量的右上角有個 ’ 哦。它能夠將原問題變得可分。式中的 w’和x’都是2000維的向量,只不過w’是定值,而x’是變數(好吧,嚴格說來這個函式是2001維的,哈哈),現在我們的輸入呢,是一個1000維的向量x,分類的過程是先把x變換為2000維的向量x’,然後求這個變換後的向量x’與向量w’的內積,再把這個內積的值和b相加,就得到了結果,看結果大於閾值還是小於閾值就得到了分類結果。

你發現了什麼?我們其實只關心那個高維空間裡內積的值,那個值算出來了,分類結果就算出來了。而從理論上說, x’是經由x變換來的,因此廣義上可以把它叫做x的函式(有一個x,就確定了一個x’,對吧,確定不出第二個),而w’是常量,它是一個低維空間裡的常量w經過變換得到的,所以給了一個w 和x的值,就有一個確定的f(x’)值與其對應。這讓我們幻想,是否能有這樣一種函式K(w,x),他接受低維空間的輸入值,卻能算出高維空間的內積值<w’,x’>


如果有這樣的函式,那麼當給了一個低維空間的輸入x以後,
這裡寫圖片描述
這兩個函式的計算結果就完全一樣,我們也就用不著費力找那個對映關係,直接拿低維的輸入往g(x)裡面代就可以了(再次提醒,這回的g(x)就不是線性函式啦,因為你不能保證K(w,x)這個表示式裡的x次數不高於1哦)。

萬幸的是,這樣的K(w,x)確實存在(發現凡是我們人類能解決的問題,大都是巧得不能再巧,特殊得不能再特殊的問題,總是恰好有些能投機取巧的地方才能解決,由此感到人類的渺小),它被稱作核函式(核,kernel),而且還不止一個,事實上,只要是滿足了Mercer條件的函式,都可以作為核函式。

常用的核函式

核函式的基本作用就是接受兩個低維空間裡的向量,能夠計算出經過某個變換後在高維空間裡的向量內積值。
什麼樣的函式才可以叫核函式?
這裡寫圖片描述

線性核函式

這裡寫圖片描述
線性核,主要用於線性可分的情況,但線性核心的適用場景很多,很多線性可分,甚至線性不可分的資料集,使用線性的效果往往比非線性的要好。尤其是在資料集很大,且特徵很多,或是特徵遠大於資料集時,線性核心便往往能夠取得很不錯的效果。且其相對於其他非線性核心,訓練時要快的多。

多項式核函式

這裡寫圖片描述
多項式核函式可以實現將低維的輸入空間對映到高緯的特徵空間,但是多項式核函式的引數多,當多項式的階數比較高的時候,核矩陣的元素值將趨於無窮大或者無窮小,計算複雜度會大到無法計算。通常d=2的多項式核心在用來特徵選擇的時候非常有用。

高斯核函式(RBF)

這裡寫圖片描述
高斯徑向基函式是一種區域性性強的核函式,其可以將一個樣本對映到一個更高維的空間內,該核函式是應用最廣的一個,無論大樣本還是小樣本都有比較好的效能,而且其相對於多項式核函式引數要少,因此大多數情況下在不知道用什麼核函式的時候,優先使用高斯核函式。

sigmoid核函式

這裡寫圖片描述
α可以視為一個scaling 引數,常數C則是shifting引數。sigmoid核心起源於神經網路,activation函式使用的也是sigmoid function,而每個節點的資料向量也是線性權重組合。使用sigmoid核心的SVM模型等價於一個兩層感知機。

核函式的選取原則

在選用核函式的時候,如果我們對我們的資料有一定的先驗知識,就利用先驗來選擇符合資料分佈的核函式;如果不知道的話,通常使用交叉驗證的方法,來試用不同的核函式,誤差最下的即為效果最好的核函式,或者也可以將多個核函式結合起來,形成混合核函式。在吳恩達的課上,也曾經給出過一系列的選擇核函式的方法:

  • 如果特徵的數量大到和樣本數量差不多,則選用LR或者線性核的SVM;
  • 如果特徵的數量小,樣本的數量正常,則選用SVM+高斯核函式;
  • 如果特徵的數量小,而樣本的數量很大,則需要手工新增一些特徵從而變成第一種情況。