在SVM中經常聽說核函數,關於各種核函數的推導公式寫得天花亂墜。SVM大概意思是說將低維不可分的樣本映射到高維空間中后就線性可分了,由於最后用訓練出來的模型進行分類預測 時需要求高維空間中映射特征間的內積,而核函數的功能就是我們計算時不需要考慮高維空間的具體形式,降低了其計算復雜度。
下面就簡單講講核函數的作用,當然這里是以2分類器為例。
首先我們需要了解我們的目的是用訓練樣本學習到一個線性的表達式,即下面的公式:
(1)
通過訓練數據可以學校到其中的權值向量w和閾值向量b,對於新來的特征向量x代入到上式中,求出y,如果y>0則為正例,y<0則為負例。
上面過程看起來很簡單,比較自然,且有核函數的相關理論可以知道,求出的w表達式為:
(2)代入到上面那個公式就可以得到
(3)
到目前為止,我們新來一個樣本,只需讓它與所有的訓練樣本做內積,然后線性相加等操作即可,比較幸運的是,只有當
為支持向量時才不為0,其它位置的都為0,所以只需要進行少數的線性組合計算即可。
現在還沒有必要使用核函數,那是因為用上面的方法進行預測時,樣本本身具有線性可分的特點。如果我們在樣本空間下不能夠線性可分呢?那么這樣求出的w和b用來預測就是錯誤的了。
如果低維線性不可分,但在高維中線性可分,這樣就需要將低維的x映射到高維的了,因此在公式(3)中的內積
映射為
。
我們把映射后的內積用一個函數表示K(x,z)表示,這個函數就是我們這里講的核函數了。即
(4)
因為公式(4)左邊的計算復雜度為核函數的計算復雜度,核函數是由為映射過的特征x和z構成的,所以復雜度比較低,不像公式(4)的右邊,由高維的特征向量構成,復雜度高。
因此我們的問題轉化成了,當來了一個新的向量x,對其分類時使用下面的公式:
(5)
公式(5)后面的內積我們就用核函數代替了,那么我們為什么這么有必要用核函數去代替呢?除了開始說的的為了減輕運算復雜度(也就是運算量)外,另外一個原因就是我們的映射函數很難確定,不好尋找。
到此為止,我們已經知道了核函數的部分作用了。
當然了,至於什么樣的核函數K能夠代替,這就是核函數的有效性另一套理論了,不是本次所講述的重點。
參考文獻:網友JerryLead的博客:http://www.cnblogs.com/jerrylead/