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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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