支持向量机(SVM)的超参数调整 C 和 Gamma 参数

这篇具有很好参考价值的文章主要介绍了支持向量机(SVM)的超参数调整 C 和 Gamma 参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:CSDN @ _养乐多_

支持向量机(Support Vector Machine,SVM)是一种广泛应用的监督式机器学习算法。它主要用于分类任务,但也适用于回归任务。在本文中,我们将深入探讨支持向量机的两个重要参数:C和gamma。在阅读本文前,我假设您对该算法有基本的了解,并专注于这些参数。

大多数机器学习和深度学习算法都有一些可以调整的参数,称为超参数。我们需要在训练模型之前设置超参数。超参数在构建健壮且准确的模型方面非常重要。它们帮助我们在偏差和方差之间找到平衡,从而防止模型过拟合或欠拟合。为了能够调整超参数,我们需要了解它们的含义以及它们如何改变模型。随机尝试一堆超参数值将是一项繁琐且永无止境的任务。

我们强调了超参数的重要性。让我们开始讨论C和gamma。SVM创建一个决策边界,用于区分两个或多个类别。如何绘制或确定决策边界是SVM算法中最关键的部分。当不同类别的数据点线性可分时,绘制决策边界是一项容易的任务。

svm的超参数,GEE,python,机器学习,支持向量机,算法,机器学习,线性回归,人工智能,数据挖掘,数据结构图1 Linearly separable data points

然而,实际数据通常是带有噪声且不是线性可分的。标准的支持向量机试图将所有正例和负例(即两个不同的类别)分开,并且不允许出现任何误分类点。这导致了一个过拟合的模型,或者在某些情况下,无法使用标准的支持向量机找到决策边界。

考虑下面二维空间中的数据点:

svm的超参数,GEE,python,机器学习,支持向量机,算法,机器学习,线性回归,人工智能,数据挖掘,数据结构图2 Standard SVM

标准的支持向量机会尝试使用黑色曲线线作为决策边界来分离蓝色和红色类别。然而,这是一个过于具体的分类,很可能导致过拟合。过拟合的支持向量机在训练集上可以达到很高的准确度,但在新的、之前未见过的示例上表现不佳。这个模型对噪声非常敏感,即使数据点的值发生很小的变化,也可能改变分类结果。将这条黑线作为决策边界的支持向量机在这个数据集上泛化能力不强。

为了解决这个问题,1995年,Cortes和Vapnik提出了“软间隔”支持向量机的概念,允许一些示例被错误分类或位于决策边界的错误一侧。软间隔支持向量机通常会得到更好的泛化模型。在我们的例子中,软间隔支持向量机的决策边界可能是下面的黑色直线:

svm的超参数,GEE,python,机器学习,支持向量机,算法,机器学习,线性回归,人工智能,数据挖掘,数据结构图3 Soft margin SVM

有一些被错误分类的点,但我们得到了一个更加泛化的模型。在确定决策边界时,软间隔支持向量机试图解决以下优化问题:

  • 增加决策边界与类别(或支持向量)之间的距离
  • 最大化在训练集中正确分类的点的数量

显然,在这两个目标之间存在权衡。为了正确标记训练集中的所有数据点,决策边界可能需要非常接近某个特定类别。然而,在这种情况下,测试数据集上的准确度可能较低,因为决策边界对噪声和自变量的微小变化过于敏感。另一方面,决策边界可能尽可能远离每个类别,代价是会有一些错误分类的异常情况。这个权衡由C参数控制。

C参数为每个错误分类的数据点增加了一个惩罚。如果C较小,对错误分类点的惩罚较低,因此会选择具有较大间隔的决策边界,代价是会有更多的错误分类。 如果C较大,由于较高的惩罚,SVM试图最小化错误分类的示例数量,这会导致具有较小间隔的决策边界。惩罚并不适用于所有错误分类的示例,它与决策边界的距离成正比。

在介绍gamma参数之前,我们需要讨论一下核技巧。在某些情况下,非线性可分的数据点使用核函数进行转换,使其变得线性可分。核函数是一种相似性度量。输入是原始特征,输出是新特征空间中的相似性度量。这里的相似性指的是接近程度。实际上将数据点转换为高维特征空间是一项昂贵的操作。算法实际上并不将数据点转换为新的高维特征空间。核化的支持向量机通过在高维特征空间中计算相似性度量来计算决策边界,而无需进行实际的转换。我认为这也是为什么它被称为核技巧的原因之一。

常用的核函数之一是径向基函数(RBF)。RBF的gamma参数控制单个训练点的影响距离。较低的gamma值表示较大的相似性半径,这导致更多的点被分组在一起。对于较高的gamma值,为了被视为同一组(或类别),点之间需要非常接近。因此,具有非常大gamma值的模型往往会过拟合。以下的可视化更好地解释了这个概念:

svm的超参数,GEE,python,机器学习,支持向量机,算法,机器学习,线性回归,人工智能,数据挖掘,数据结构

svm的超参数,GEE,python,机器学习,支持向量机,算法,机器学习,线性回归,人工智能,数据挖掘,数据结构
第一幅图表示低gamma值的情况。相似性半径较大,因此彩色区域中的所有点被视为属于同一类别。例如,如果我们有一个位于右下角的点,它被分类为“绿色”类别。另一方面,第二幅图是具有较大gamma值的情况。为了将数据点分组到同一类别中,它们必须位于一个紧密边界的区域内。因此,即使是很小的噪声也可能导致数据点落在类别之外。较大的gamma值很可能导致过拟合。

随着gamma的减小,分隔不同类别的区域变得更加泛化。非常大的gamma值会导致过于特定的类别区域(过拟合)。

Gamma与C参数
对于线性核函数,我们只需要优化C参数。然而,如果我们想使用RBF核函数,则需要同时优化C和gamma参数。如果gamma值较大,则C的影响变得可以忽略。如果gamma值较小,则C会像对线性模型的影响一样影响模型。C和gamma的典型取值范围如下。然而,具体的最佳取值可能因应用程序而异:

  • 0.0001 < g a m m a < 10 0.0001 < gamma < 10 0.0001<gamma<10

  • 0.1 < c < 100 0.1 < c < 100 0.1<c<100

对于SVM来说,非常重要的是记住需要对输入数据进行归一化,以使特征处于相同的尺度且兼容。

感谢阅读。如果您有任何反馈,请随时告诉我。文章来源地址https://www.toymoban.com/news/detail-597441.html

到了这里,关于支持向量机(SVM)的超参数调整 C 和 Gamma 参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python实现支持向量机(SVM)算法及源代码

    Python实现支持向量机(SVM)算法及源代码 支持向量机(SVM)是一种经典的分类算法,它在解决二分类问题的性能优秀。本文将介绍如何使用Python实现SVM算法,并提供完整的源代码。 通过安装必要的Python库,我们可以开始编写SVM代码。首先,导入必要的库: 然后,使用make_blobs函数

    2024年02月10日
    浏览(41)
  • 机器学习:Python中如何使用支持向量机(SVM)算法

    (简单介绍一下支持向量机,详细介绍尤其是算法过程可以查阅其他资) 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别、分类(异常值检测)以及回归分析。 其具有以下特征: (1)SVM可以表示为凸优化问题,因此可以利用已知的

    2024年02月04日
    浏览(32)
  • SVM(支持向量机)基于Python的简单可视化实现

    本篇内容参考了这篇博客且内容不涉及数学证明,只是自己学习SVM时记下的内容,方便回顾 什么是SVM?维基百科中对于SVM的定义是这样的: 支持向量机 (英语:support vector machine,常简称为SVM,又名支持向量网络)是在分类与回归分析中分析数据的监督式学习模型与相关的学

    2024年02月08日
    浏览(44)
  • 支持向量机(SVM)进行文本分类的Python简单示例实现

    支持向量机(Support Vector Machine,SVM)是一种常用的机器学习算法,主要用于分类和回归问题。它的基本思想是将数据映射到高维空间中,使得数据在该空间中线性可分,然后在该空间中寻找最优的超平面,将不同类别的数据分开。 SVM的优点在于可以处理高维数据,具有较好

    2024年01月25日
    浏览(43)
  • SVM(支持向量机)进行分类的原理和python代码----通俗易懂

    SVM(支持向量机,Support Vector Machine)是一种非常流行的机器学习算法,可用于二分类和多分类问题。其基本思想是通过在不同类别的样本之间构建最大化分类间隔的线性或非线性超平面来实现分类。 SVM分类的基本步骤如下: 根据训练集数据,选取最优的超平面(通常为线性

    2024年02月11日
    浏览(45)
  • 支持向量机svm分类、回归、网格搜索 基于sklearn(python)实现

    由于水平有限 支持向量机(support vector machine)的数学原理和证明就不讲了 想知道可以去看李航的机器学习或者西瓜书 1、读入数据,将数据调成该库能够识别的格式 2、 将数据标准化 ,防止样本中不同特征的数值差别较大,对分类结果产生较大影响 3、利用网格搜索和k折交

    2023年04月11日
    浏览(36)
  • 异常数据检测 | Python实现支持向量机(SVM)的异常数据检测

    文章概述 SVM通常应用于监督式学习,但OneClassSVM算法可用于将异常检测这样的无监督式学习,它学习一个用于异常检测的决策函数其主要功能将新数据分类为与训练集相似的正常值或不相似的异常值。 模型描述 OneClassSVM的思想来源于这篇论文,SVM使用大边距的方法,它用于异

    2024年02月08日
    浏览(29)
  • 使用SimpleMKL算法实现多核支持向量机(SVM)的Python代码详解

    在本文中,我们将详细介绍如何使用SimpleMKL算法实现多核支持向量机(SVM)的Python代码。我们将首先介绍SimpleMKL算法的基本原理,然后通过实例代码来演示如何在Python中实现该算法。最后,我们将讨论该算法的优缺点以及可能的改进方法。 1. SimpleMKL算法简介 多核学习(Mult

    2024年02月14日
    浏览(103)
  • 机器学习之支持向量机(SVM)对乳腺癌数据二分类python实现

    支持向量机(Support Vector Machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。 间隔最大化,就是所有样本点中,离我们分类界限超平面最近的样本点,尽可能的远离超平面。这种思想

    2024年02月03日
    浏览(89)
  • 机器学习实战:Python基于支持向量机SVM-RFE进行分类预测(三)

    1.1 支持向量机的介绍 支持向量机( Support Vector Machine,SVM )是一种监督学习的分类算法。它的基本思想是找到一个能够最好地将不同类别的数据分开的超平面,同时最大化分类器的边际(margin)。SVM的训练目标是最大化间隔(margin),即支持向量到超平面的距离。 具体地,

    2024年02月05日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包