我正在使用在 scikit-learn 中实现的一类 SVM来进行我的研究工作。但我对此没有很好的理解。
任何人都可以对一类 SVM给出一个简单、好的解释吗?
我正在使用在 scikit-learn 中实现的一类 SVM来进行我的研究工作。但我对此没有很好的理解。
任何人都可以对一类 SVM给出一个简单、好的解释吗?
正如文档所说,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 处理如前所述的最大边距方法,您可以将这些边距区域视为某些特定类的边界并执行重新标记。