共计 2289 个字符,预计需要花费 6 分钟才能阅读完成。
作者 |Soner Yıldırım
编译 |VK
起源 |Towards Datas Science
反对向量机(SVM)是一种利用宽泛的有监督机器学习算法。它次要用于分类工作,但也实用于回归工作。
在这篇文章中,咱们将深入探讨反对向量机的两个重要超参数 C 和 gamma,并通过可视化解释它们的影响。所以我假如你对算法有一个根本的了解,并把重点放在这些超参数上。
反对向量机用一个决策边界来拆散属于不同类别的数据点。在确定决策边界时,软距离反对向量机(soft margin 是指容许某些数据点被谬误分类)试图解决一个优化问题,指标如下:
- 减少决策边界到类(或反对向量)的间隔
- 使训练集中正确分类的点数最大化
显然,这两个指标之间有一个折衷,它是由 C 管制的,它为每一个谬误分类的数据点减少一个惩办。
如果 C 很小,对误分类点的惩办很低,因而抉择一个具备较大距离的决策边界是以就义更多的谬误分类为代价的。
当 C 值较大时,反对向量机会尽量减少误分类样本的数量,因为惩办会导致决策边界具备较小的距离。对于所有谬误分类的例子,惩办是不一样的。它与到决策边界的间隔成正比。
在这些例子之后会更加分明。让咱们首先导入库并创立一个合成数据集。
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 的线性反对向量机,而后实现一个 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/