詳解SVM模型——核函數是怎麼回事

大家好,歡迎大家閱讀周二機器學習專題,今天的這篇文章依然會講SVM模型。

也許大家可能已經看膩了SVM模型了,覺得我是不是寫不出新花樣來,翻來覆去地炒冷飯。實際上也的確沒什麼新花樣了,不出意外的話這是本專題最後一篇文章了。下周我們就要開始深度學習之旅了,我相信很多同學期待這一天已經很久了,實際上我也一樣,因為這個專題里講的大部分內容已經只在面試環節會用到,而我已經很久沒有面試了。所以讓我們收拾一下激動的心情,來把SVM最後剩下的一點內容講完。

雖然只剩下最後一點內容了,但是今天的內容非常重要,可以說是SVM模型面試的核心終點。說到SVM可能對偶問題、拉格朗日面試官不一定會問你,可能他自己也不一定會,但是今天要講的核函數是一定會問的。因為它表面上看起來是SVM最重要的內容,實際上我當時在剛轉行準備面試的時候,SVM模型相關的內容一概不知,就知道核函數,所以我想大家應該能夠體會到這裏面的深意。

核函數究竟是什麼

首先我們來介紹一下核函數的概念,可能大家會很好奇,明明我們已經把SVM模型的原理完整推導完了,怎麼又冒出來一個核函數。實際上核函數非常精彩,它對於SVM也非常重要,因為它奠定了SVM的「江湖地位」,也可以說是SVM模型最大的特性。

在介紹核函數之前,我們先來看一個問題,這個問題在機器學習的歷史上非常有名,叫做亦或問題。我們都知道,在二進制當中有一個操作叫做亦或操作。亦或操作其實很簡單,就是如果兩個數相同返回的結果就是0,否則就返回1。如果我們的數據是類似亦或組成的,就會是這樣一個形狀:

我們觀察一下上面這個圖,會發現一個問題,就是我們無論如何也不可能找到一條線把上面這個分類完成。因為一條線只能分出兩個區域,但是上面這個圖明顯有四個區域。

那如果我們把上面的數據映射到更高的維度當中,上圖是二維的圖像,我們把它映射到三維當中,就可以使用一個平面將樣本區分開了。也就是說通過一個映射函數,將樣本從n維映射到n+1或者更高的維度,使得原本線性不可分的數據變成線性可分,這樣我們就解決了一些原本不能解決的問題。

所以核函數是什麼?是一系列函數的統稱,這些函數的輸入是樣本x,輸出是一個映射到更高維度的樣本。大部分能實現這一點的函數都可以認為是核函數(不完全準確,只是為了理解方便),當然一些稀奇古怪的函數雖然是核函數,但是對我們的價值可能並不大,所以我們也很少用,常用的核函數還是只有少數幾種。

使用方法

現在我們已經知道核函數是什麼了,那麼它又該如何使用呢?

這個問題也不難,數學上比較困難的是表示問題,一個問題被描述以及表示清楚可能是最難的,當表示出來了之後把它解出來可能就要簡單很多了。所以我們先來表示問題,用一個字母來表示核函數。前面已經說過了,核函數的輸入是樣本x,所以映射之後的樣本就是

還記得我們上次推導到最後的公式嗎?我們把它寫出來,大家回顧一下。

我們要做的就是把核函數代入進去,僅此而已,代入進去之後,就會得到:

這裡有一個小問題,我們前面說了函數會把x映射到更高的維度。比如x本身是10維的,我們用了函數之後給映射到1000維了,當然它的線性不可分的問題可能解決了,但是這會帶來另外一個問題,就是計算的複雜度增加了。因為原本本來只需要10次計算,但現在映射了之後,需要1000次計算才可以得到結果。這不符合我們想要白嫖不想花錢的心理,所以我們對核函數做了一些限制,只有可以白嫖的映射函數才被稱為核函數

我們把需要滿足的條件寫出來,其實很簡單。我們把滿足條件的核函數稱為K,那麼K應該滿足:

也就是說K對的結果進行計算等價於映射之後的結果再進行點乘操作,這樣就可以在計算複雜度不變的情況下完成映射。其實對於核函數是有數學上的定義的,這裡我沒放出來,一個是覺得表示太複雜用不到,另外一個是在面試的時候其實也不會問到這麼細,我們只需要知道它的性質就可以了。因為常見使用的核函數來來回回基本上也就那麼幾種,我們記住它們就OK了。

下面我們就來看一下常見的核函數,大概有這麼四種:

  1. 線性核函數,其實就是沒有核函數。我們表示出來就是
  2. 多項式核函數,它等價於一個多項式變換:,這裡的,b和d都是我們設置的參數
  3. 高斯核,這種核函數使用頻率很高,
  4. sigmoid核,它的公式是:

我們使用核函數的方法很簡單,就是用K這個函數計算的值來代替原本的結果,對於SVM模型的推演並不產生影響。這也是為什麼我們在上一篇文章當中用SMO算法來推導優化方法時候,要令的原因,其實就是在為後面講解核函數做鋪墊。

我個人覺得和前面硬間隔軟間隔以及對偶問題和SMO算法的推導比起來,核函數的原理應該算是其中最簡單的。即使你完全不理解SVM模型的原理,也可以搞得懂核函數。所以大家看這篇文章應該是沒有太大壓力的。

文章到這裡就結束了,如果喜歡的話,希望可以來一波三連支持,再次感謝大家的閱讀(關注、轉發、點贊)。

原文鏈接,求個關注

本文使用 mdnice 排版

– END –

{{uploading-image-326893.png(uploading…)}}