支持向量机超参数的可视化解释

做者|Soner Yıldırım
编译|VK
来源|Towards Datas Sciencehtml

支持向量机(SVM)是一种应用普遍的有监督机器学习算法。它主要用于分类任务,但也适用于回归任务。python

在这篇文章中,咱们将深刻探讨支持向量机的两个重要超参数C和gamma,并经过可视化解释它们的影响。因此我假设你对算法有一个基本的理解,并把重点放在这些超参数上。git

支持向量机用一个决策边界来分离属于不一样类别的数据点。在肯定决策边界时,软间隔支持向量机(soft margin是指容许某些数据点被错误分类)试图解决一个优化问题,目标以下:github

  • 增长决策边界到类(或支持向量)的距离算法

  • 使训练集中正确分类的点数最大化dom

显然,这两个目标之间有一个折衷,它是由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/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.0一、1和5时,RBF核函数的精度分别为0.8九、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博客站:
http://panchuang.net/

sklearn机器学习中文官方文档:
http://sklearn123.com/

欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/

相关文章
相关标签/搜索