下面這張圖位於第一、二象限內。我們關注紅色的門,以及“北京四合院”這幾個字下面的紫色的字母。我們把紅色的門上的點看成是“+”數據,紫色字母上的點看成是“-”數據,它們的橫、縱座標是兩個特徵。顯然,在這個二維空間內,“+”“-”兩類數據不是線性可分的。
這裏面是二維空間中的兩個點。
這個核函數對應着一個二維空間到三維空間的映射,它的表達式是:
可以驗證,
在P這個映射下,原來二維空間中的圖在三維空間中的像是這個樣子:
<img src="https://pic2.zhimg.com/c5a7b1b83b844fc5fff033c9a0d5d601_b.jpg" data-rawwidth="720" data-rawheight="342" class="origin_image zh-lightbox-thumb" width="720" data-original="https://pic2.zhimg.com/c5a7b1b83b844fc5fff033c9a0d5d601_r.jpg">(前後軸爲x軸,左右軸爲y軸,上下軸爲z軸)(前後軸爲x軸,左右軸爲y軸,上下軸爲z軸)
注意到綠色的平面可以完美地分割紅色和紫色,也就是說,兩類數據在三維空間中變成線性可分的了。
而三維中的這個判決邊界,再映射回二維空間中是這樣的:
<img src="https://pic3.zhimg.com/8f4a0d456fd9daf934c373024bf15a32_b.jpg" data-rawwidth="720" data-rawheight="329" class="origin_image zh-lightbox-thumb" width="720" data-original="https://pic3.zhimg.com/8f4a0d456fd9daf934c373024bf15a32_r.jpg">這是一條雙曲線,它不是線性的。這是一條雙曲線,它不是線性的。
================================================
如上面的例子所說,核函數的作用就是隱含着一個從低維空間到高維空間的映射,而這個映射可以把低維空間中線性不可分的兩類點變成線性可分的。
當然,我舉的這個具體例子強烈地依賴於數據在原始空間中的位置。
事實中使用的核函數往往比這個例子複雜得多。它們對應的映射並不一定能夠顯式地表達出來;它們映射到的高維空間的維數也比我舉的例子(三維)高得多,甚至是無窮維的。這樣,就可以期待原來並不線性可分的兩類點變成線性可分的了。
================================================
在機器學習中常用的核函數,一般有這麼幾類,也就是LibSVM中自帶的這幾類:
1) 線性:
2) 多項式:
3) Radial basis function:
4) Sigmoid:
我舉的例子是多項式核函數中的情況。
在實用中,很多使用者都是盲目地試驗各種核函數,並掃描其中的參數,選擇效果最好的。至於什麼樣的核函數適用於什麼樣的問題,大多數人都不懂。很不幸,我也屬於這大多數人,所以如果有人對這個問題有理論性的理解,還請指教。
================================================
核函數要滿足的條件稱爲Mercer's condition。
由於我以應用SVM爲主,對它的理論並不很瞭解,就不闡述什麼了。
使用SVM的很多人甚至都不知道這個條件,也不關心它;有些不滿足該條件的函數也被拿來當核函數用。