作者:CSDN @ _养乐多_

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

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

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

图1 Linearly separable data points

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

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

图2 Standard SVM

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

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

图3 Soft margin SVM

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

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

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

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

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

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


第一幅图表示低gamma值的情况。相似性半径较大,因此彩色区域中的所有点被视为属于同一类别。例如,如果我们有一个位于右下角的点,它被分类为“绿色”类别。另一方面,第二幅图是具有较大gamma值的情况。为了将数据点分组到同一类别中,它们必须位于一个紧密边界的区域内。因此,即使是很小的噪声也可能导致数据点落在类别之外。较大的gamma值很可能导致过拟合。

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

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

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

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

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

感谢阅读。如果您有任何反馈,请随时告诉我。