背景 函數
上一講從對偶問題的角度描述了SVM問題,可是始終須要計算原始數據feature轉換後的數據。這一講,經過一個kernel(核函數)技巧,能夠省去feature轉換計算,可是仍然能夠利用feature轉換的特性。 spa
什麼是kernel 調試
Kernel的其實就是將向量feature轉換與點積運算合併後的運算,以下, blog
概念上很簡單,可是並非全部的feature轉換函數都有kernel的特性。 io
Kernel化的SVM 效率
在對偶化的SVM解中,有三個地方會使用到kernel 技巧
使用了kernel,w的具體值都無需計算,由於沒有地方會直接使用w。這也是爲何上一講花了那麼大的精力描述對偶化的SVM解。 im
常見kernel d3
常見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還能夠自定義,可是須要知足一些條件,具體能夠參考講義相關部分。