機器學習技法 Lecture 3

Kernel Support Vector Machine
講解如何用kernel將feature transform更有效率的做好。


從feature transform到kernel function

做了二維轉換後,擁有的feature向量變((1,x_1,x_2,…,x_d,x_1^2,x_1x_2,…,x_d^2))
在dual SVM裡要算的是兩個向量的內積,拆開來發現可以用原始向量來表現

因此,我們就能把transform變成用kernel function表示,這裡用二維轉換當例子。

有了kernel function,我們回去找第2章哪裡可以簡化。

  • QP裡Q矩陣的元素(這是最直覺的,上一章就是提到這裡維度依然很大)
  • 計算b時,看似無法用kernel,但其實把w展開也是可以用。
  • 計算hypothesis也能用

到這裡,我們已經把kernel發揮到極致,只要用原始的維度就能計算高維。


將kernel加入參數,讓我們可以操作kernel。

首先,把上面的kernel加上一些係數,整理成比較好算的樣子,下面以二維當例子。

這裡我們就多了gamma可以調整。雖然都是二次轉換,hypothesis的power是一樣的,但不同的gamma代表不同的幾何意義,因此得到的結果會不一樣。(老實說,我不太能理解這部份,因為即使加了gamma,算出來的w只要放縮,就能算出一樣的結果阿…我還在理解這部份,目前給自己的解釋是,可能再算最佳化的過程中(例如QP),並沒有辦法算出真正最好的答案,而是近似值)。


更多的kernel

更方便的地方來了,想做更高維的轉換不需要把高維向量展開,只要用kernel就好。


無限維的kernel

既然只要用kernel就可以做到高維轉換,那能不能到無限多維呢?答案是yes!用泰勒展開式,這個kernel代表下面向量的內積
這是Gaussian kernel,也叫作Radial Basis Function(RBF) kernel。這個kernel等於是將以N個資料點為中心的N個高斯分佈,乘上alpha的線性組合。(個人覺得這邊好抽象…其實有點不太懂到底做了什麼,只知道無限多維的轉換一定很powerful)這張圖很神奇,當係數愈大,高斯分佈就愈尖,而這個kernel會愈接近「非0即1」的函數,就變成右邊那種極端的樣子了。


整理目前所學的技巧,以及它們的優缺。

  • linear kernel:簡單、基本,所有的嘗試儘量從linear開始,不要一開始就做太複雜的。因為linear簡單,所以或許不需要用kernel,用最簡單的SVM就好了。
  • polynomail kernel:比較複雜,但也比較powerful,但多了比較多參數要調整,而且到高維,數字可能會變形(太大或太小)。低維時不需要用kernel,直接用dual SVM可能還比較快。
  • Gaussian kernel:很強大,只有一個參數(好調整),但神奇的是沒有w,算的很慢。

怎麼創一個valid kernel?

充份必要的條件Mercer’s condition:


這章節的概念很好理解,就是把特徵轉換的成本用kernel消除。較難理解的是幾何意義,還有高斯kernel。