【機器學習基礎】支持向量機超參數(shù)的可視化解釋
作者 | Soner Y?ld?r?m?
編譯 | VK?
來源 | Towards Datas Science

支持向量機(SVM)是一種應用廣泛的有監(jiān)督機器學習算法。它主要用于分類任務,但也適用于回歸任務。
在這篇文章中,我們將深入探討支持向量機的兩個重要超參數(shù)C和gamma,并通過可視化解釋它們的影響。所以我假設你對算法有一個基本的理解,并把重點放在這些超參數(shù)上。
支持向量機用一個決策邊界來分離屬于不同類別的數(shù)據(jù)點。在確定決策邊界時,軟間隔支持向量機(soft margin是指允許某些數(shù)據(jù)點被錯誤分類)試圖解決一個優(yōu)化問題,目標如下:
增加決策邊界到類(或支持向量)的距離
使訓練集中正確分類的點數(shù)最大化

顯然,這兩個目標之間有一個折衷,它是由C控制的,它為每一個錯誤分類的數(shù)據(jù)點增加一個懲罰。
如果C很小,對誤分類點的懲罰很低,因此選擇一個具有較大間隔的決策邊界是以犧牲更多的錯誤分類為代價的。
當C值較大時,支持向量機會盡量減少誤分類樣本的數(shù)量,因為懲罰會導致決策邊界具有較小的間隔。對于所有錯誤分類的例子,懲罰是不一樣的。它與到?jīng)Q策邊界的距離成正比。
在這些例子之后會更加清楚。讓我們首先導入庫并創(chuàng)建一個合成數(shù)據(jù)集。
import?numpy?as?np
import?pandas?as?pd
import?matplotlib.pyplot?as?plt
%matplotlib?inline
from?sklearn.svm?import?SVC
from?sklearn.datasets?import?make_classification
X,?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的線性支持向量機,然后實現(xiàn)一個RBF核的支持向量機,同時調整gamma參數(shù)。
為了繪制決策邊界,我們將使用Jake VanderPlas編寫的Python數(shù)據(jù)科學手冊中SVM一章中的函數(shù):https://jakevdp.github.io/PythonDataScienceHandbook/
我們現(xiàn)在可以創(chuàng)建兩個不同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值的模型更具普遍性。隨著數(shù)據(jù)集的增大,這種差異變得更加明顯。
線性核的超參數(shù)只達到一定程度上的影響。在非線性內核中,超參數(shù)的影響更加明顯。
Gamma是用于非線性支持向量機的超參數(shù)。最常用的非線性核函數(shù)之一是徑向基函數(shù)(RBF)。RBF的Gamma參數(shù)控制單個訓練點的影響距離。
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值的增加,模型變得過擬合。數(shù)據(jù)點需要非常接近才能組合在一起,因為相似半徑隨著gamma值的增加而減小。
在gamma值為0.01、1和5時,RBF核函數(shù)的精度分別為0.89、0.92和0.93。這些值表明隨著gamma值的增加,模型對訓練集的擬合度逐漸增加。
gamma與C參數(shù)
對于線性核,我們只需要優(yōu)化c參數(shù)。然而,如果要使用RBF核函數(shù),則c參數(shù)和gamma參數(shù)都需要同時優(yōu)化。如果gamma很大,c的影響可以忽略不計。如果gamma很小,c對模型的影響就像它對線性模型的影響一樣。c和gamma的典型值如下。但是,根據(jù)具體應用,可能存在特定的最佳值:
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
往期精彩回顧
獲取一折本站知識星球優(yōu)惠券,復制鏈接直接打開:
https://t.zsxq.com/y7uvZF6
本站qq群704220115。
加入微信群請掃碼:
