作者|Soner Yıldırım
编译|VK
起源|Towards Datas Science
反对向量机(SVM)是一种利用宽泛的有监督机器学习算法。它次要用于分类工作,但也实用于回归工作。
在这篇文章中,咱们将深入探讨反对向量机的两个重要超参数C和gamma,并通过可视化解释它们的影响。所以我假如你对算法有一个根本的了解,并把重点放在这些超参数上。
反对向量机用一个决策边界来拆散属于不同类别的数据点。在确定决策边界时,软距离反对向量机(soft margin是指容许某些数据点被谬误分类)试图解决一个优化问题,指标如下:
- 减少决策边界到类(或反对向量)的间隔
- 使训练集中正确分类的点数最大化
显然,这两个指标之间有一个折衷,它是由C管制的,它为每一个谬误分类的数据点减少一个惩办。
如果C很小,对误分类点的惩办很低,因而抉择一个具备较大距离的决策边界是以就义更多的谬误分类为代价的。
当C值较大时,反对向量机会尽量减少误分类样本的数量,因为惩办会导致决策边界具备较小的距离。对于所有谬误分类的例子,惩办是不一样的。它与到决策边界的间隔成正比。
在这些例子之后会更加分明。让咱们首先导入库并创立一个合成数据集。
import numpy as npimport pandas as pdimport matplotlib.pyplot as plt%matplotlib inlinefrom sklearn.svm import SVCfrom 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/Pyt...
咱们当初能够创立两个不同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/pyt...
原文链接:https://towardsdatascience.co...
欢送关注磐创AI博客站:
http://panchuang.net/
sklearn机器学习中文官网文档:
http://sklearn123.com/
欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/