我有一组图片。我想学习一个类SVM(OC-SVM)来模拟特定类(正面)的分布,因为我没有足够的例子来表示其他类(负面)。我对OC-SVM的理解是,它试图将数据与原点分开,换句话说,它试图学习超球以适应一类数据。
我的问题是,
如果我想使用OC-SVM的输出作为概率估计,我该怎么办?
OC-SVM和任何聚类算法(例如k-means)有什么区别?
答案 0 :(得分:6)
如果您想要概率估算,请不要使用单类SVM。这不是他们的设计目标。您需要kernel density estimation之类的东西,它提供了非参数密度估计,给出了一些正面的例子。
单类SVM和聚类之间的区别在于,在聚类中,您从几个类中获得了分数,但是您不知道哪些分数对应于哪个类:这是推理的目标(并且您也可能最终得到了类的密度估计和所有特征空间的边际密度。一类SVM仅从一个类中获得分数,并且期望学习该类成员与其他任何东西之间的分离。
编辑:聚类与密度估计不同。聚类涉及确定哪些实例属于哪些类(聚类),何时未给出赋值,并且不一定导致所提供的示例与输入空间中的任何点之间的相似性得分。
如果目标是说,这个新实例与我见过的积极训练样例有多相似,那么你所做的是将概率分布拟合到你的训练样例中,然后评估新点处的密度函数。如果此密度低于阈值,则表示新点超出了所提供示例定义的类。
如果你愿意,你可以建立一个类的参数模型,但这通常很棘手,除非你要么对问题有所了解,要么愿意采用标准分布(多变量正态或朴素贝叶斯是两个明显的分布) )。因此,替代方案是使用非参数密度估计。这是我提到的核密度估计。