Support Vector Machine

Overview

SVM (Support Vector Machine) 是一種監督式的分類,應用在無法做線性分類的時候,下圖的紅、藍點是線性不可分的,無法找到直線區分出2種類別。

(圖片來源: [資料分析&機器學習] 第3.4講:支援向量機(Support Vector Machine)介紹)

為此我們可以改用找超平面的方式,在多維空間上尋找平面切分出2種類別,如下圖所示。

(圖片來源: [資料分析&機器學習] 第3.4講:支援向量機(Support Vector Machine)介紹)

找到的超平面切割出2種類別後,原本的2D圖形變成下方這樣。

(圖片來源: [資料分析&機器學習] 第3.4講:支援向量機(Support Vector Machine)介紹)

詳細說明 SVM 的目的是尋找一個超平面 hyperplane(wTx+b=0) 完美分割兩類資料並找參數(w、b)讓兩類資料之間的距離(margin)最大化。margin 最大化的好處在於不用因為新的資料出現,要常常去計算出新的平面,而可以繼續保持資料完美分割。

(圖片來源: [資料分析&機器學習] 第3.4講:支援向量機(Support Vector Machine)介紹)

wT 是超平面法向量的轉置矩陣,像是 [w1 w2 w3]。

下圖假設分割出兩類資料的平面是 wT*x = 0,相對上方的就是 wT*x > 0,下方的則是 wT*x < 0,我們的目的是使紅線到虛線的距離最大,也就是找到 max margin。

在找 max margin 的過程中,我們需要利用 support vector 支援向量來計算,支援向量就是虛線上或虛線到紅線間的點

(圖片來源: [資料分析&機器學習] 第3.4講:支援向量機(Support Vector Machine)介紹)

我們可以從上面的圖推導到下面這張圖。

(圖片來源: [資料分析&機器學習] 第3.4講:支援向量機(Support Vector Machine)介紹)

有 Support Vector 後要如何計算 margin? 將 X1-X2 投影到 w 平面上,再利用高中學過的計算向量投影長度即可。

(圖片來源: [資料分析&機器學習] 第3.4講:支援向量機(Support Vector Machine)介紹)

公式如下圖 :
(目標是找到最大margin)

(圖片來源: [資料分析&機器學習] 第3.4講:支援向量機(Support Vector Machine)介紹)

Feature Mapping

前面我們還少提一個東西,就是資料是在二維平面上,要找到可以完美分割資料類別的平面,就勢必要將資料映射到高維平面上,在轉換過程中需要一個叫做 kernel function 的東西,而 kernel function 又有好幾種。

(圖片來源: 中央大學資管系 林熙禎教授 電子商務技術課程教材)

常用的 kernel function :

(圖片來源: 機器學習: Kernel 函數)

用比較簡單的 kernel function 來解釋映射到高維空間 :

推導過程 :
計算完後,可以看到原本在二維空間上的點被映射到三維空間上。

寫得有點雜,這篇算是 SVM 的基礎吧~


參考資料&延伸閱讀

機器學習: Kernel 函數
機器學習-支撐向量機(support vector machine, SVM)詳細推導
[資料分析&機器學習] 第3.4講:支援向量機(Support Vector Machine)介紹
向量投影

分享到