機器學習中的核函式與核方法(是什麼?為什麼?怎麼做?)
我們在學習機器學習的時候,總是會看到一個概念——核,然後看到一堆公式。但是為什麼要核呢?核到底是啥玩意?雲裡霧裡。接下來,我們將要把“核”這個東西的神祕面紗一點點揭開。
一、什麼是“核函式”
我們都知道,機器學習(神經網路)的一個很重要的目的,就是將資料分類。我們想象下面這個資料(圖1),在二維空間(特徵表示為和)中隨機分佈的兩類資料(用圓圈和叉叉表示)。
如果我們想要將這兩類資料進行分類,那麼分類的邊界將會是一個橢圓:
但是如果我們可以通過一個對映,將資料的特徵通過某個非線性對映對映到三維空間,其特徵表示為,並且對映關係為,那麼我們是不是就可以用一個平面來將其分類,也即是將上述橢圓的x特徵換成z特徵:
其實這個對映,就是將一個空間中的特徵轉換到另外一個空間,這就是空間轉換(對映)的意義,即可以將原來線性不好分的資料轉換到另外一個空間,在這個空間中可以用一個超平面線性可分。
在機器學習中,我們要用到內積運算。而在對映後的高維空間中,內積往往是很不好求解的。所以,我們能不能找到在低維空間中的某個運算,恰好等於高維空間中的內積運算呢?
設在原空間中有兩個點和,對映到高維空間中變成和,我們來看這個例子中的高維空間的內積運算:
我們就將低維空間中的這個對於內積的運算定義為核函式。換句話說,核函式就是低維空間中的內積的某個函式,或者寫成,因為在別的例子中,有可能不是內積的平方。即核函式就等於就是高維空間的內積。
二、為什麼要用核函式
因為在機器學習中,我們求解的過程要用到內積,而變換後的高維空間的內積我們不好求,所以我們定義了這個核函式,可以把高維空間的內積運算轉化成內為空間的某些運算,這樣求起來不是很簡單嗎?
換句話說,如果我們有了核函式,我們就不再需要知道那個對映到底是個什麼鬼,我們就可以直接通過核函式,就可以求導高維空間的內積了,從而可以計算出高維空間中兩個資料點之間的距離和角度。
三、怎麼用?(一個簡單的分類例子)
現在我們假設,有N個數據{},其中是第i個數據的p維特徵,是第i個數據的分類標籤,現將其對映到高維空間變成,而在這個空間中,有兩個類別,所以標籤可以假定為+和-,其中每一類的樣本個數為和。正樣本的中心點,負樣本的中心點,從到有一條差向量,而w的中心點為C,所以在C點垂直於w的超平面就是兩類的分類邊界。
而想要把某個資料分類為+的依據為:從C點到樣本點的向量差與w向量的夾角應該小於90°,也即:;反之,。即,當內積為正,那就說明在分類1,內積為負,就說明在分類2。即:
於是我們來的表示式:
(PS:說到這,你應該知道為什麼分類需要內積了吧?因為內積的正負代表了資料點是位於分類邊界的正方向還是負方向,從而實現分類。)
其中:
後面的就不繼續寫了,化簡形式都一樣,即:我們就可以把高維空間的內積,改寫成低維空間的核函式的形式,這樣在不知道對映是個什麼鬼的情況下嗎,也可以輕鬆地進行分類工作了。
四、補充一點
1. 有限半正半定:給定任意有限 n個點(x1~xn),求解其矩陣是正定的:
五. 核函式與機器學習的關係
我們在機器學習中,經常看到,而我們看上面的公式,是不是感覺到很熟悉?