作者 | Soner Yıldırım

编译 | VK

来源 | Towards Datas Science

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

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

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

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

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

显然,这两个目标之间有一个折衷,它是由C控制的,它为每一个错误分类的数据点增加一个惩罚。

如果C很小,对误分类点的惩罚很低,因此选择一个具有较大间隔的决策边界是以牺牲更多的错误分类为代价的。

当C值较大时,支持向量机会尽量减少误分类样本的数量,因为惩罚会导致决策边界具有较小的间隔。对于所有错误分类的例子,惩罚是不一样的。它与到决策边界的距离成正比。

在这些例子之后会更加清楚。让我们首先导入库并创建一个合成数据集。

import numpy as np
import pandas as pdimport matplotlib.pyplot as plt
%matplotlib inlinefrom sklearn.svm import SVC
from 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/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.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/pythondastaciencemanual/05.07-support-vector-machines.html

原文链接:https://towardsdatascience.com/svm-hyperparameters-explained-with-visualizations-143e48cb701b

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑

获取一折本站知识星球优惠券,复制链接直接打开:

https://t.zsxq.com/y7uvZF6

本站qq群704220115。

加入微信群请扫码:

【机器学习基础】支持向量机超参数的可视化解释相关推荐

  1. 机器学习模型的超参数优化 | 原力计划

    作者 | deephub 责编 | 王晓曼 出品 | CSDN博客 头图 | CSDN付费下载自东方IC 引言 模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模 ...

  2. 机器学习模型定点化_机器学习模型的超参数优化

    引言 模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模型的优化. 机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数.超参数与一般 ...

  3. tensorflow超参数优化_机器学习模型的超参数优化

    引言 模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模型的优化. 机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数.超参数与一般 ...

  4. 模型效果差?我建议你掌握这些机器学习模型的超参数优化方法

    模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模型的优化. 机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数.超参数与一般模型参 ...

  5. 机器学习模型的超参数优化用于分子性质预测

    在<预测化学分子的nlogP--基于sklearn, deepchem, DGL, Rdkit的图卷积网络模型>中简单介绍了sklearn模型的使用方法. 现在来介绍一下,如何对sklea ...

  6. 【机器学习基础】超全汇总!机器学习常用术语词汇表(建议收藏)

    刚接触机器学习框架 TensorFlow 的新手们,这篇由 Google 官方出品的常用术语词汇表,一定是你必不可少的入门资料!本术语表列出了基本的机器学习术语和 TensorFlow 专用术语的定义 ...

  7. R语言机器学习mlr3:超参数调优

    获取更多R语言和生信知识,请关注公众号:医学和生信笔记. 公众号后台回复R语言,即可获得海量学习资料! 目录 模型调优 调整超参数 方法一:通过`tuninginstancesinglecrite`和 ...

  8. 【深度学习基础】超参数介绍

    深度学习基础: 性能评估指标 超参数介绍 损失函数 在深度神经网络中,超参数的调整是一项必备技能,通过观察在训练过程中的监测指标如损失loss和准确率来判断当前模型处于什么样的训练状态,及时调整超参数 ...

  9. 机器学习基础——支持向量机

    前言    最开始接触SVM是在吴恩达的课程上,展示了一个例子:用SVM将人声从环境声中单独剥离出来.后来,在吴教授的Coursera机器学习课程中监督学习部分的末尾,讲述了SVM.但是他所讲述的SV ...

最新文章

  1. cocos2dx小游戏数据签名算法破解
  2. Linux环境下使用Mysql连接外部机器
  3. 深入理解 Kotlin Coroutine (一)
  4. 模板 字段_Anki学习之路(08)|什么是Anki模板类型?什么是字段?
  5. 从源码构建 MyBatis Generator(MBG)
  6. 使用内置函数操作数据库
  7. 事物Spring boot @Transactional
  8. android 特效绘图,Android绘图机制与处理技巧——Android图像处理之图形特效处理...
  9. 微软应提前发布专用于ARM处理器的Windows 8平板电脑系统
  10. java 图像 截取正方形_响应但是作为img元素的正方形的图像
  11. B/S、C/S双客户类型系统研究
  12. 基于Android的小巫新闻客户端开发系列教程
  13. 【工具推荐】下载你在博客园的文章原稿
  14. 计算机及数码产品营销课后题,职业教育课程改革创新系列教材:计算机及数码产品营销...
  15. 亚马逊云服务(AWS)机器学习服务Amazon SageMaker发力中国
  16. 李佩:阿里本地生活线上线下融合场景中的图像检测技术
  17. 字体在ppt中可以整体替换吗_在ppt中怎么批量替换字体和图片呢?
  18. BZOJ4987 Tree
  19. 国家专精特新小巨人申报条件及培育措施
  20. CentOS的下载与安装图文教程 (2020)

热门文章

  1. PDF文件上载图标,与启用浏览器浏览允许后依然无法在浏览器打开PDF文件的解决方案...
  2. 10774: matrix
  3. Core官方DI解析(2)-ServiceProvider
  4. codevs 4768 跳石头
  5. Execution Plan 执行计划介绍
  6. android 去锯齿
  7. windowbuilder点击按钮出现新界面_MIUI 10 负一屏,新界面新体验
  8. Cytology: Diagnostic Principles and Clinical Correlates 细胞学: 诊断原则与临床相关性 PDF
  9. 学习笔记:linuxsocket通信基础
  10. php 获取请求,php获取http请求的头信息的方法