[ Machine Learning Model 篇 ] Support Vector Machine (支持向量機) 的使用技巧
<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:
(2) rbf:
(3) poly :
2.gamma
3.C
懲罰系數,作為控制錯誤分類的懲罰,也就是控制邊界的寬度。當C越大,對應越大的錯誤分類懲罰,邊界寬度越小,越容易overfitting(過擬合)。
<source : Support Vector Machine Errors>範例程式碼 >> Github
---
參考資料:
- Support Vector Machine — Introduction to Machine Learning Algorithms
- Understanding Support Vector Machine(SVM) algorithm from examples
- Linear Support Vector Machines
- Kernel Functions-Introduction to SVM Kernel & Examples
- SVM理解(一)
- sklearn中SVM调参说明及经验总结
- SVM 的核函数选择和调参
- 25道SVM題目,測一側你的基礎如何?
#SVM #支援向量機 #支持向量機 #分離超平面
0 留言