什么是一类 SVM,它是如何工作的?

机器算法验证 机器学习 支持向量机 数据挖掘 新奇检测
2022-02-13 01:55:28

我正在使用在 scikit-learn 中实现的一类 SVM来进行我的研究工作。但我对此没有很好的理解。

任何人都可以对一类 SVM给出一个简单、好的解释吗?

4个回答

正如文档所说,One Class SVM 解决的问题是新颖性检测描述如何将 SVM 用于此任务的原始论文是“ Support Vector Method for Novelty Detection ”。

新颖性检测的想法是检测稀有事件,即很少发生的事件,因此您只有很少的样本。那么问题是,训练分类器的常用方法将不起作用。

那么你如何决定什么是新颖的模式呢?许多方法都是基于对数据概率密度的估计。新颖性对应于概率密度“非常低”的那些样本。多低取决于应用程序。

现在,SVM 是最大边距方法,即它们不对概率分布建模。这里的想法是找到一个函数,该函数对高密度点的区域为正,而对低密度的区域为负。

论文中给出了具体细节。;) 如果您真的打算阅读本文,请确保您首先了解分类的基本 SVM 算法的设置。这将使理解算法的界限和动机变得更加容易。

我假设您了解标准 SVM 的工作原理。总而言之,它使用具有最大可能边距的超平面将两个类分开。

一类 SVM 类似,但它不是使用超平面来分隔两类实例,而是使用超球面来包含所有实例。现在将“边距”视为指超球面的外部——所以“最大可能的边距”是指“最小的可能超球面”。

就是这样。请注意以下事实,适用于 SVM,仍然适用于一类 SVM:

  • 如果我们坚持不违反边距,通过寻找最小的超球面,边距最终会触及少数实例。这些是“支持向量”,它们完全决定了模型。只要它们在超球面内,所有其他实例都可以在不影响模型的情况下进行更改。

  • 如果我们不希望模型对噪声过于敏感,我们可以允许一些边距违规。

  • 我们可以在原始空间或扩大的特征空间(隐含地,使用核技巧)中执行此操作,这可能会导致原始空间中具有复杂形状的边界。

注意:这是我对此处描述的模型的描述我相信这是 Tax 和 Duin 提出的 One-Class SVM 的版本。还有其他方法,例如 Schölkopf 等人的方法,类似,但不是使用小超球面,而是使用远离原点的超平面;这是 LIBSVM 实现的版本,因此是 scikit-learn。

1.传统的SVM

  • 项目指向高维空间以分离两个类(最初在低维空间中不可分离)
  • 查找支持向量(在特征空间中每个类的边缘)
  • 允许一些点在支持向量之间的区域内有一些软边距(这是为了避免过度拟合)
  • 最终目标是最大化利润

2.一类SVM

一种。根据Schölkopf 等人的说法。

  • 项目指向更高维度的空间
  • 使用超平面将特征空间中的所有数据点与原点分离
  • 与传统的支持向量机(svm)不同,我们使用软边距来保证平滑度,我们使用一个参数来修复数据中异常值的一部分
  • 最大化超平面和原点之间的距离
  • 位于超平面下方且更靠近原点的点是异常值

湾。根据税务等人。

  • 项目指向更高维度的空间
  • 使用超球体将特征空间中的所有数据点与原点分离
  • 像传统的 svm 一样,我们使用软边距来实现平滑
  • 最小化超球体的体积
  • 位于超球面之外的点是异常值。

您可以以某种半监督的方式将 One Class SVM 用于一些用于主动学习的管道。

例如:由于 SVM 处理如前所述的最大边距方法,您可以将这些边距区域视为某些特定类的边界并执行重新标记。