【问题标题】:One class SVM probability estimates and what is the different between one class SVM and clustering一类SVM概率估计以及一类SVM和聚类有什么区别
【发布时间】:2013-01-13 00:34:39
【问题描述】:

我有一组图像。我想学习一个类 SVM(OC-SVM)来模拟特定类(正)的分布,因为我没有足够的例子来表示其他类(负)。我对 OC-SVM 的理解是它试图将数据与原点分离,或者换句话说,它试图学习一个超球体来适应一类数据。

我的问题是,

  1. 如果我想使用 OC-SVM 的输出作为概率估计,我该怎么做?

  2. OC-SVM 与任何聚类算法(例如 k-means)有什么区别?

【问题讨论】:

  • OC-SVM 更常用于当您不能期望对负类有良好表示时,因此它会尝试对您拥有的大多数正数据进行建模,从而拒绝您所拥有的未知负样本没有。由于您从未提到过这些,因此您似乎在滥用 OC-SVM,您应该使用其他东西。有了这个,回答问题 2 应该很明显:集群包含不相交的示例;结合两个 OC-SVM 的结果并不能保证产生这样的东西。

标签: machine-learning computer-vision svm libsvm


【解决方案1】:

如果您需要概率估计,请不要使用一类 SVM。这不是他们的设计目的。您需要像 kernel density estimation 这样的东西,它在给出一些正例的情况下提供非参数密度估计。

一类 SVM 和聚类之间的区别在于,在聚类中,您从多个类别中获得点,但您不知道哪些点对应于哪些类别:这是推理的目标(您也可以最终得到类的密度估计和所有特征空间的边际密度)。一类 SVM 只从一类中获得分数,并期望学习该类成员与其他任何成员之间的分离。

编辑:聚类与密度估计不同。聚类涉及确定哪些实例属于哪些类(集群),当没有给出分配时,并不一定会导致提供的示例与输入空间中的任何点之间的相似性得分。

如果目标是说这个新实例与我见过的正训练样例有多相似,那么你要做的就是将概率分布拟合到你的训练样例中,然后评估新点的密度函数。如果此密度低于阈值,则表示新点超出了所提供示例定义的类别。

如果您愿意,您可以构建该类的参数模型,但这通常很棘手,除非您对问题有所了解或愿意采用标准分布(多变量正态分布或朴素贝叶斯是两个明显的分布) )。因此,替代方法是使用非参数密度估计。这就是我提到的核密度估计。

【讨论】:

  • 我们也可以只使用一个类来应用集群。在那种情况下,一类 SVM 和集群之间有什么区别。您认为获得一类案例的概率值的最佳方法是什么。 (我的意思是我需要使用该概率值将一类与其他类进行分类。我没有足够的来自其他类的代表性数据)
  • 正如我在回答中所说:聚类不一定能给你概率估计。您将聚类与密度估计混淆了,给出了一些示例,它为您提供了输入空间上的概率分布。如果您不想假设数据遵循某种分布,请使用非参数密度估计器。我会澄清答案。
猜你喜欢
  • 2015-07-29
  • 2011-11-11
  • 2013-03-14
  • 2016-11-02
  • 2014-03-28
  • 2021-09-01
  • 2012-11-11
  • 2013-01-13
  • 2015-04-25
相关资源
最近更新 更多