機器學習技法--學習筆記03--Kernel技巧


背景

上一講從對偶問題的角度描述了SVM問題,但是始終需要計算原始數據feature轉換后的數據。這一講,通過一個kernel(核函數)技巧,可以省去feature轉換計算,但是仍然可以利用feature轉換的特性。

 

什么是kernel

Kernel的其實就是將向量feature轉換與點積運算合並后的運算,如下,

概念上很簡單,但是並不是所有的feature轉換函數都有kernel的特性。

 

Kernel化的SVM

在對偶化的SVM解中,有三個地方會使用到kernel

  • 計算截距b
  • 計算QP中的Q矩陣
  • 預測分類

使用了kernel,w的具體值都無需計算,因為沒有地方會直接使用w。這也是為什么上一講花了那么大的精力描述對偶化的SVM解。

 

常見kernel

常見kernel有多項式,高斯和線性,各有利弊。

 

線性kernel

不做feature轉換,直接使用。不需要使用對偶技巧,直接使用linear hard SVM解。

優點:計算效率高;結果解釋性好。

缺點:需要數據線性可分

 

多項kernel

對x進行多項式展開,一般的形式為

其中a,b,Q為常量。

優點:相比線性kernel,對數據要求沒有那么嚴格

缺點:需要選擇的系數較多;Q太大會超出一些計算機的精度,一般Q<=3。

 

高斯Kernel

有些資料也稱為RBF(Radial Base Function),一般形式為

其中a(>0)是常量。高斯kernel厲害的地方是可以將原始數據x映射到無線維度空間中,x下面取a=1的例子

上面的變化采用了Taylor展開,接着

其中特征轉化為

這樣,就完成了向無線維度轉換,RBF是不是很厲害!

優點:調試的系數較少;比線性和多項式更強大,幾乎可以適應所有數據;不容易出現計算精度問題

缺點:無線維度無法解釋;太強大,容易過擬合;計算開銷大。

 

總結

個人感覺,核函數是SVM畫龍點睛之筆,真的很佩服發現kernel的科學家。在實際使用SVM的過程中,很大一部分精力可能就是選擇kernel和相關系數。Kernel還可以自定義,但是需要滿足一些條件,具體可以參考講義相關部分。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM