機器學習(六)支持向量機

語言: CN / TW / HK

以下內容是在學習過程中的一些筆記,難免會有錯誤和紕漏的地方。如果造成任何困擾,很抱歉。

前言

支持向量機(Support Vector Machine,SVM),是一類按監督學習(supervised learning)方式對數據進行二元分類的廣義線性分類器(generalized linear classifier),其決策邊界是對學習樣本求解的最大邊距超平面(maximum-margin hyperplane) ,也被稱為最大間隔分類器。

SVM使用鉸鏈損失函數(hinge loss)計算經驗風險(empirical risk)並在求解系統中加入了正則化項以優化結構風險(structural risk),是一個具有稀疏性和穩健性的分類器。SVM可以通過核方法(kernel method)進行非線性分類,是常見的核學習(kernel learning)方法之一。

在線性可分時,在原空間尋找兩類樣本的最優分類超平面。在線性不可分時,加入鬆弛變量並通過使用非線性映射將低維度輸入空間的樣本映射到高維度空間使其變為線性可分,這樣就可以在該特徵空間中尋找最優分類超平面。

SVM的優點:

  • 採用核函數方法克服了維數災難和非線性可分的問題,所以向高維空間映射時沒有增加計算的複雜性。
  • 解決小樣本情況下的機器學習問題,簡化了通常的分類和迴歸等問題。

SVM的缺點:

  • 支持向量機算法對大規模訓練樣本難以實施。這是因為支持向量機算法藉助二次規劃求解支持向量,這其中會涉及m階矩陣的計算,所以矩陣階數很大時將耗費大量的機器內存和運算時間。
  • 經典的支持向量機算法只給出了二分類的算法,支持向量機對於多分類問題解決效果並不理想。

一、線性分類問題

描述:這裏可以添加本文要記錄的大概內容

什麼是線性可分?

在二維空間上,兩個類可以輕鬆地被一條直線(它們是線性可分離的)分開,圖中的實線代表SVM分類器的決策邊界,這條線不僅分離了兩個類,並且儘可能遠離了最近的訓練實例。你可以將SVM分類器視為在類之間擬合可能的最寬的街道(平行的虛線所示)。因此這也叫作大間隔分類

從二維擴展到多維空間中時,將 D0 和 D1 完全正確地劃分開的 wx+b=0 就成了一個超平面。

樣本中距離超平面最近的一些點,這些點叫做支持向量,SVM想要的就是找到各類樣本點到超平面的距離最遠,也就是找到最大間隔超平面。

二、軟間隔/硬間隔

描述:這裏可以添加本文要記錄的大概內容

如果我們嚴格地讓所有實例都不在街道上,並且位於正確的一邊,這就是硬間隔分類。硬間隔分類有兩個主要問題。首先,它只在數據是線性可分離的時候才有效;其次,它對異常值非常敏感。

要避免這些問題,最好使用更靈活的模型。目標是儘可能在保持街道寬闊和限制間隔違例(即位於街道之上,甚至在錯誤的一邊的實例)之間找到良好的平衡,同時也可以叫它容忍度,這就是軟間隔分類

通過指定合適的超參數的值,也可以解決過擬合問題。

```python import numpy as np from sklearn import datasets from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from sklearn.svm import LinearSVC

加載鳶尾花數據集

iris = datasets.load_iris() X = iris["data"][:, (2, 3)] # petal length, petal width y = (iris["target"] == 2).astype(np.float64) # Iris virginica

模型構建

svm_clf = Pipeline([ ("scaler", StandardScaler()), # 如果你的SVM模型過擬合 可以嘗試通過降低C來對其進行正則化 # c代表軟間隔的超參數 ("linear_svc", LinearSVC(C=1, loss="hinge")), ])

模型訓練

svm_clf.fit(X, y)

預測

res = svm_clf.predict([[5.5, 1.7]]) print("預測:", res) ```

三、非線性分類問題

描述:這裏可以添加本文要記錄的大概內容

雖然在許多情況下,線性SVM分類器是有效的,並且通常出人意料的好,但是,有很多數據集遠不是線性可分離的。處理非線性數據集的方法之一是添加更多特徵。

四、常用核函數

描述:這裏可以添加本文要記錄的大概內容

| 名稱 | 解析式 | | ------------------------------ | ------------------------------------------------------------ | | 多項式核(polynomial kernel) | img | | 徑向基函數核(RBF kernel) | img | | 拉普拉斯核(Laplacian kernel) | img | | Sigmoid核(Sigmoid kernel) | img |

五、SVM迴歸

描述:這裏可以添加本文要記錄的大概內容

1

1

六、應用場景

描述:這裏可以添加本文要記錄的大概內容

支持向量機(SVM)算法比較適合圖像和文本等樣本特徵較多的應用場合。基於結構風險最小化原理,對樣本集進行壓縮,解決了以往需要大樣本數量進行訓練的問題,它將文本通過計算抽象成向量化的訓練數據,提高了分類的精確率。

1

1