作者|善意的人
编译| VK
来源|迈向数据科学
支持向量机(SVM)是一种广泛使用的监督型机器学习算法。主要用于分类任务,也适用于回归任务。
在本文中,我们将深入研究支持向量机的两个重要超参数C和gamma,并通过可视化解释它们的作用。因此,我假设您对算法有基本的了解,并专注于这些超参数。
支持向量机使用决策边界来分隔属于不同类别的数据点。当确定决策边界时,软裕度支持向量机(软裕度是指允许对某些数据点进行错误分类)试图解决优化问题。目标如下:
显然,这两个目标之间需要权衡。它由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的线性支持向量机yaboapp ,然后使用RBF内核实现支持向量机,并同时调整gamma参数。
为了绘制决策边界,我们将使用Jake VanderPlas撰写的《 Python数据科学手册》的SVM章节中的函数:
我们现在可以创建两个具有不同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值的模型更为通用。随着数据集的增加,这种差异变得更加明显。
线性核的超参数仅具有一定程度的影响。在非线性核中支持向量机 参数,超参数的影响更为明显。
伽玛是用于非线性支持向量机的超参数。径向基函数(RBF)是最常用的非线性核函数之一。 RBF的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)
只需更改伽玛值即可生成以下曲线图。
随着伽玛值的增加支持向量机 参数,模型变得过拟合。数据点必须非常接近才能分组在一起,因为相似度半径会随着伽玛值的增加而减小。
当伽玛值为0. 0 1、 1和5时,RBF核函数的精度分别为0. 8 9、 0. 92和0. 93。这些值表示随着gamma值的增加,模型对训练集的拟合逐渐增加。
伽玛和C参数
对于线性核,我们只需要优化c参数。但是,如果要使用RBF内核函数,则必须同时优化c参数和gamma参数。如果伽马值较大亚博电子竞技俱乐部 ,则可以忽略c的影响。如果伽玛很小,则c会影响模型,就像它会影响线性模型一样。 c和gamma的典型值如下。但是,根据特定的应用,可能会有一个特定的最佳值:
0. 0001
0. 1
参考
原始链接:
欢迎关注Panchuang AI博客网站:
sklearn官方机器学习中文文档:
欢迎关注Panchuang博客资源汇总站:
老王
最新评论