<source : Sefik Ilkin Serengil>


一、什麼是支持向量機

回顧一下神經網路的發展歷史。1990年代,各式各樣的淺層機器學習方法被提出,在深度學習大行其道之前,SVM是最主流的算法,其在工程效率和預測準確率上都具有較大的優勢。所以SVM一定有他的過人之處。所以讓我們一起來認識 SVM。

<source : Sefik Ilkin Serengil>


Support Vector Machine ( 支持向量機 ),簡稱SVM,是一種用來進行資料分類的機器學習演算法。SVM在學習的過程中,會試著找出 " 決策邊界 (在二維平面是一條線,在三維空間是一個平面,在多維空間是一個超平面 )",將資料點進行完美分類。

SVM的最佳化目標是 "邊界 (margin) 最大化"。

邊界被定義為 Separating Hyperplane (分離超平面),如下圖所示,即決策邊界和最近該平面的訓練樣本之間的距離,即 "支持向量"。

<source : Support Vector Machine — Introduction to Machine Learning Algorithms>

二、支持向量機的數學原理

整理中。


三、SVM的優缺點 與 使用場景

(一)、 優點 vs 缺點

優點

  • SVM在高維度空間中進行資料分類上是有效的。
  • 節省記憶體空間,因為SVM只使用支持向量去尋找最佳的決策邊界。
  • 當資料點是可分,有明顯的分類邊界的,SVM是最佳的分類器。
  • SVM不受 Outliers(離群值) 影響。

缺點

  • 在訓練大量、甚至巨量資料集上,SVM會耗費許多時間,且訓練成效不佳。
  • 當不同類別的資料重疊時,SVM的表現較差。


關於SVM不受 Outliers(離群值) 影響,補充說明如下:

因為SVM是要找出決策邊界,因此決策邊界會由各類別中離決策邊界最近的資料點決定,而非離群值。換言之,SVM在訓練過程中,會忽略離群值,在模型表現上是Robust(強健)。

<source : Understanding Support Vector Machine(SVM) algorithm from examples>


(二)、SVM的適用場景

歸納SVM的優缺點,SVM適用於資料是明顯可分的情況下。若你知道資料有重疊的現象,那麼SVM的表現可能就不會這麼好。


四、SVM參數調整技巧

(一)、SVM範例寫法

sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma=0.0, coef0=0.0, shrinking=True, probability=False,tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, random_state=None)


(二)、關鍵參數說明

1.kernel

(1) linear:

適用於線性可分的二維平面。
<source : Support Vector Machine — Introduction to Machine Learning Algorithms>


(2) rbf:

系統預設是使用 rbf kernel,可用於 linear separable dataset(線性可分的資料集) 和 non-linear separable dataset(非線性可分的資料集)。但在知道資料集是線性可分的前提下,建議使用 linear kernel,因為使用 linear kernel 的計算速度會比 rbf kernel 快。
<source : Support Vector Machine — Introduction to Machine Learning Algorithms>


(3) poly :

適用於non-linear separable dataset(非線性可分的資料集)。



結論:在維度過高或數據海量的情況中,大家會更傾向使用 linear kernel。因為在效果相當的前提下,在速度和模型大小中, linear kernel 的表現會更好。關於更多 kernel 的選擇介紹,可參考此篇文章 Kernel Functions-Introduction to SVM Kernel & Examples

2.gamma

核函數的系數,伴隨著 "rbf" 而出現,可被理解成對高斯球截斷參數(cut-off parameter)。gamma值越大,會增加訓練樣本的影響性,導致產生一個較緊、顛簸的決策邊界。預設值是 1/k (k為特徵數)。

<source : Support Vector Machine — Introduction to Machine Learning Algorithms>


3.C

懲罰系數,作為控制錯誤分類的懲罰,也就是控制邊界的寬度。當C越大,對應越大的錯誤分類懲罰,邊界寬度越小,越容易overfitting(過擬合)。

<source : Support Vector Machine Errors>


範例程式碼 >> Github


---

參考資料:

#SVM #支援向量機 #支持向量機 #分離超平面 

0 留言