SVM分类是否仅用于具有两个标签的数据集分类?

我刚开始学习SVM,并且一直在寻找合适的SVM使用。从我看到的所有SVM中,训练标签向量基本上是由1和-1组成的向量。我不明白为什么会这样。我原本以为训练向量的每一行应该是一个独特的数字,用来标记其相应的训练实例。

假设我有一个包含m个标签和n个实例的数据集,每个实例是一个d维向量。使用仅包含-1和1的标签向量似乎很奇怪。但我真的不知道如何在超平面上区分这m个标签。能有人解释一下吗?


回答:

SVM在内部是一个二元分类器。这意味着它只能区分两个标签。因此,它非常适合那些问题可以表述为“给定向量是否具有属性X?”并且答案是“是”(+1)或“不是”(-1)的问题。

但现实生活中有很多问题需要更多标签,该怎么办呢?为了解决具有m个标签的问题,比如“图片上的动物是什么类型:猫、狗还是马?”,你基本上会创建一个SVM的集合,它们会为特定的标签投票。有很多可能性,但其中两种最流行:

  • 一对所有方法。给定m个标签,你创建m个模型,第i个SVM被训练来识别对象是否具有标签“i”,因此你将标签“i”训练为+1,其余所有样本训练为-1。然后,在分类时,你询问每个SVM是否识别该样本——如果有平局——你使用SVM的决策函数(到超平面的距离)来打破平局(距离最远的获胜)
  • 一对一方法。现在你创建m(m-1)/2个SVM。每个SVM回答问题“这个样本是更倾向于i标签还是j标签”,对于每一对(i, j)标签(在m个标签中选择两个标签有m(m-1)/2种方式)。因此,在分类过程中,你询问每个这样的SVM,它们“投票”,你总结票数,得票最多的标签获胜(同样在平局情况下,你可以使用决策函数)。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注