优秀的编程知识分享平台

网站首页 > 技术文章 正文

一文读懂支持向量分类器(SVC)(一文看懂支持向量机)

nanyue 2024-11-10 10:17:24 技术文章 1 ℃

支持向量分类器 (SVC) 是一种可用于分类任务的机器学习算法。它们基于找到一个超平面的想法,该超平面将数据分为两个具有最大余量的类。SVC 广泛用于各种应用,包括图像分类、文本分类和垃圾邮件过滤。它们以其准确性和对噪声的鲁棒性而闻名。

SVC 的工作原理

支持向量机 (SVM) 通过识别最大化两个类之间的裕量的超平面来发挥作用。此边距表示超平面与每个类中最近的数据点之间的距离。SVM 采用二次规划,这是一种数学技术,旨在优化二次目标函数和线性约束的问题,以确定具有最大裕量的超平面。边距使用以下公式计算:

在这里,“w”表示权重向量,测量超平面与属于每个类的最近数据点(支持向量)之间的距离。

建立超平面后,SVM 能够通过预测最接近超平面的数据点的类别来对新数据点进行分类。对于线性支持向量机,预测函数表示为:

在这里,'f(x)' 表示预测的类标签,'x' 是输入特征向量,'w' 表示权重向量,'b' 是偏差项。

权重向量“w”和偏差项“b”是通过训练过程学习的。“w”表示分隔两个类的超平面的方向,而“b”表示超平面与原点的位移。

对于预测,线性 SVM 计算输入特征向量“x”和权重向量“w”的点积。如果结果为正,则预测的类标签为 1;如果为负数,则为 0。

Hinge损失函数:

这里:
- “y”表示真实标签(+1 或 -1)。
- 'f(x)' 表示预测标签 (sgn(w^T * x + b))。

优化目标:
最小化正则化原始损失:

这里:
- 'C'代表正则化参数,控制边距和损失之间的权衡。

SVC的类型

SVC 主要有两种类型:线性 SVC 和非线性 SVC

线性 SVC

线性 SVC 找到一个分隔两个类的线性超平面。线性 SVC 计算高效且易于解释。但是,它们不如非线性 SVC 灵活,可能无法学习输入特征之间的复杂关系。

非线性 SVC

非线性 SVC 找到一个将两个类分开的非线性超平面。非线性 SVC 比线性 SVC 更灵活,可以学习输入特征之间的复杂关系。但是,它们在计算上更昂贵,并且更难解释。

有几种不同的方法可以实现非线性 SVC。一种常见的方法是使用内核函数。内核函数将输入数据转换为更高维的空间,在那里可以找到分隔两个类的线性超平面。

一些流行的内核函数包括:

线性内核

此核函数仅返回输入向量的点积。

多项式核

此核函数将输入向量提升到幂,然后返回点积。

RBF 内核

此核函数返回输入向量之间的高斯相似度。

内核功能的选择会对 SVC 的性能产生重大影响。重要的是要尝试不同的内核函数,以找到最适合手头特定数据集和分类任务的内核函数。

其他类型的 SVC

除了线性和非线性 SVC 之外,还开发了其他几种类型的 SVC。其中一些其他类型的 SVC 包括:

  • 软边距 SVC:软边距 SVC 允许某些数据点落在超平面的错误一侧。这有助于提高 SVC 的泛化性能,但也可能导致更复杂的模型。
  • Nu-SVC:Nu-SVCs控制模型中支持向量的比例。这对于具有大量异常值的数据集非常有用。
  • One-class SVC:一类 SVC 可用于检测数据中的异常。

使用 SVC 的好处

使用 SVC 有几个好处,包括:

  • 准确性:SVC 以其在各种分类任务中的高准确性而闻名。
  • 对噪声的鲁棒性:SVC 对数据中的噪声相对鲁棒。
  • 可解释性:SVC 是相对可解释的机器学习算法。这意味着可以理解为什么 SVC 会做出这样的预测。

SVC的陷阱

SVC 是一种强大的机器学习算法,但它们也存在一些缺陷。以下是使用 SVC 时需要注意的几点:

  • 过拟合:SVC 容易出现过拟合,这意味着它们可以很好地学习训练数据,无法泛化到新数据。为了防止过拟合,使用正则化参数并规范化数据非常重要。如果 SVC 对训练数据过度拟合,它可能会学习区分各个训练点,而不是学习数据中的基本模式。这可能会导致新数据的性能不佳,因为 SVC 将无法泛化到以前从未见过的数据。
  • 计算成本:训练 SVC 的计算成本可能很高,尤其是对于大型数据集。您可以采取一些措施来加快训练速度,例如使用较小的数据集或使用分布式计算框架。SVC 的训练时间可以与训练点的数量呈二次方关系。这可能会使 SVC 在大型数据集上使用不切实际。
  • 对异常值的敏感度:SVC 可能对数据中的异常值敏感。异常值可能导致 SVC 学习错误的超平面并做出错误的预测。为了缓解这种情况,您可以从数据中删除异常值或使用强大的 SVC 变体。如果 SVC 在包含异常值的数据集上进行训练,它可能会学习偏向异常值的超平面。这可能会导致对新数据的错误预测,因为如果数据点与训练数据中的异常值相似,则 SVC 更有可能将数据点归类为异常值。

尽管存在这些缺陷,但 SVC 是一种强大的机器学习算法,可用于在各种分类任务中取得良好的结果。通过了解陷阱并采取措施来缓解这些陷阱,可以使用 SVC 来构建准确且强大的机器学习模型。

SVC的应用

SVC 用于多种应用,包括:

  • 图像分类:SVC 可用于将图像分类为不同的类别,例如猫和狗、汽车和卡车以及花草树木。
  • 文本分类:SVC 可用于将文本文档分类为不同的类别,例如垃圾邮件和非垃圾邮件、正面和负面情绪以及新闻文章和博客文章。
  • 垃圾邮件筛选:SVC 可用于过滤掉传入邮箱中的垃圾邮件。

使用 SVC 的提示

以下是使用 SVC 的一些提示:

  • 使用正则化参数。正则化参数有助于防止过拟合。一个好的起点是使用正则化参数 0.1。
  • 规范化数据。对数据进行归一化有助于提高 SVC 的性能。
  • 使用交叉验证技术。交叉验证有助于评估 SVC 在看不见的数据上的性能。一个很好的交叉验证技术是 5 倍交叉验证。

Tags:

最近发表
标签列表