支持向量机用于多对象分类

我正在尝试使用线性SVM进行多类对象类别识别。到目前为止,我了解到主要有两种方法——一对所有(OVA)和一对一(OVO)。但我在理解其实现上遇到了困难。我认为使用的步骤是:

  • 首先,准备特征描述符,比如使用SIFT。因此,我有一个128XN的特征向量。
  • 接下来,为了为特定对象类别(比如汽车)准备SVM分类器模型,我使用50张汽车图片作为正训练集,并从其他类别中随机选取总共50张图片作为负训练集(这一部分正确吗?)。我为所有这些类别(假设有5个)准备这样的模型。
  • 接下来,当我有一个输入图像时,我是否需要将图像输入到所有5个模型中,然后检查这些模型的输出值(+1/-1)?我对这一部分感到困惑。

回答:

在一对所有方法中,你需要检查所有5个模型。然后,你可以根据最有信心的值做出决策。LIBSVM提供概率估计值。

在一对一方法中,你可以采用多数原则。例如,你测试1对2、1对3、1对4和1对5。如果在3个案例中分类为1,那么你就将其分类为1。你对其他4个类别也进行同样的操作。假设其他四个类别的值是[0, 1, 1, 2]。因此,类别1被选中的次数最多,成为最终的类别。在这种情况下,你也可以进行概率估计的总和。取最大值。这通常有效,除非在一对中分类结果极端错误。例如,在1对4中,它以0.7的信心将4(真实类别是1)分类为4。仅仅因为这个决定,你的概率估计总和可能会大幅增加并给出错误的结果。这个问题可以进行实验性检查。

LIBSVM使用一对一方法。你可以在这里查看原因这里。你也可以阅读这篇论文,他们捍卫一对所有分类方法,并得出结论说它并不一定比一对一差。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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