【机器学习基础】支持向量机超参数的可视化解释
作者 | Soner Y?ld?r?m?
編譯 | VK?
來源 | Towards Datas Science
支持向量機(SVM)是一種應用廣泛的有監督機器學習算法。它主要用于分類任務,但也適用于回歸任務。
在這篇文章中,我們將深入探討支持向量機的兩個重要超參數C和gamma,并通過可視化解釋它們的影響。所以我假設你對算法有一個基本的理解,并把重點放在這些超參數上。
支持向量機用一個決策邊界來分離屬于不同類別的數據點。在確定決策邊界時,軟間隔支持向量機(soft margin是指允許某些數據點被錯誤分類)試圖解決一個優化問題,目標如下:
增加決策邊界到類(或支持向量)的距離
使訓練集中正確分類的點數最大化
顯然,這兩個目標之間有一個折衷,它是由C控制的,它為每一個錯誤分類的數據點增加一個懲罰。
如果C很小,對誤分類點的懲罰很低,因此選擇一個具有較大間隔的決策邊界是以犧牲更多的錯誤分類為代價的。
當C值較大時,支持向量機會盡量減少誤分類樣本的數量,因為懲罰會導致決策邊界具有較小的間隔。對于所有錯誤分類的例子,懲罰是不一樣的。它與到決策邊界的距離成正比。
在這些例子之后會更加清楚。讓我們首先導入庫并創建一個合成數據集。
import?numpy?as?np import?pandas?as?pdimport?matplotlib.pyplot?as?plt %matplotlib?inlinefrom?sklearn.svm?import?SVC from?sklearn.datasets?import?make_classificationX,?y?=?make_classification(n_samples=200,?n_features=2, n_informative=2,?n_redundant=0,?n_repeated=0,?n_classes=2,random_state=42)plt.figure(figsize=(10,6)) plt.title("Synthetic?Binary?Classification?Dataset",?fontsize=18) plt.scatter(X[:,0],?X[:,1],?c=y,?cmap='cool')我們先訓練一個只需調整C的線性支持向量機,然后實現一個RBF核的支持向量機,同時調整gamma參數。
為了繪制決策邊界,我們將使用Jake VanderPlas編寫的Python數據科學手冊中SVM一章中的函數:https://jakevdp.github.io/PythonDataScienceHandbook/
我們現在可以創建兩個不同C值的線性SVM分類器。
clf?=?SVC(C=0.1,?kernel='linear').fit(X,?y)plt.figure(figsize=(10,6)) plt.title("Linear?kernel?with?C=0.1",?fontsize=18) plt.scatter(X[:,?0],?X[:,?1],?c=y,?s=50,?cmap='cool') plot_svc_decision_function(clf)只需將C值更改為100即可生成以下繪圖。
當我們增加C值時,間隔會變小。因此,低C值的模型更具普遍性。隨著數據集的增大,這種差異變得更加明顯。
線性核的超參數只達到一定程度上的影響。在非線性內核中,超參數的影響更加明顯。
Gamma是用于非線性支持向量機的超參數。最常用的非線性核函數之一是徑向基函數(RBF)。RBF的Gamma參數控制單個訓練點的影響距離。
gamma值較低表示相似半徑較大,這會導致將更多的點組合在一起。對于gamma值較高的情況,點之間必須非常接近,才能將其視為同一組(或類)。因此,具有非常大gamma值的模型往往過擬合。
讓我們繪制三個不同gamma值的支持向量機的預測圖。
clf?=?SVC(C=1,?kernel='rbf',?gamma=0.01).fit(X,?y) y_pred?=?clf.predict(X)plt.figure(figsize=(10,6)) plt.title("Predictions?of?RBF?kernel?with?C=1?and?Gamma=0.01",?fontsize=18) plt.scatter(X[:,?0],?X[:,?1],?c=y_pred,?s=50,?cmap='cool') plot_svc_decision_function(clf)只需更改gamma值即可生成以下繪圖。
隨著gamma值的增加,模型變得過擬合。數據點需要非常接近才能組合在一起,因為相似半徑隨著gamma值的增加而減小。
在gamma值為0.01、1和5時,RBF核函數的精度分別為0.89、0.92和0.93。這些值表明隨著gamma值的增加,模型對訓練集的擬合度逐漸增加。
gamma與C參數
對于線性核,我們只需要優化c參數。然而,如果要使用RBF核函數,則c參數和gamma參數都需要同時優化。如果gamma很大,c的影響可以忽略不計。如果gamma很小,c對模型的影響就像它對線性模型的影響一樣。c和gamma的典型值如下。但是,根據具體應用,可能存在特定的最佳值:
0.0001 < gamma < 10
0.1 < c < 100
參考引用
https://jakevdp.github.io/pythondastaciencemanual/05.07-support-vector-machines.html
原文鏈接:https://towardsdatascience.com/svm-hyperparameters-explained-with-visualizations-143e48cb701b
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:
https://t.zsxq.com/y7uvZF6
本站qq群704220115。
加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【机器学习基础】支持向量机超参数的可视化解释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python基础】Matplotlib
- 下一篇: 【深度学习】神经网络知识专题总结