【问题标题】:Classification: Dealing with Abstain/Rejected Class分类:处理弃权/拒绝类
【发布时间】:2023-03-22 06:35:01
【问题描述】:

我正在就分类问题征求您的意见和/帮助。如果有人有任何我可以阅读的参考资料来帮助我更好地解决我的问题。

我有四个离散且分离良好的类的分类问题。但是我的输入是连续的并且具有高频(50Hz),因为它是一个实时问题。

圆圈代表类的集群,蓝线是决策边界,第 5 类等于(中性/休息什么都不做类)。这个类是被拒绝的类。然而问题是,当我从一个班级转移到另一个班级时,我在过渡运动中激活了很多误报,因为运动显然是非线性的。 例如,每次我从 5 班(中性班)转到 1 班时,我首先会看到很多 3 分,然后才进入 1 班。

理想情况下,我希望我的决策边界如下图所示,其中被拒绝的类为 Class =5。具有比其他类更高的决策边界,以避免转换期间的错误分类。我目前正在使用 naive bayes、kNN 和使用 Matlab 的 SVM 优化算法在 Matlab 中实现我的算法。

问题:处理弃权/拒绝课程的最佳/常用方法是什么?我应该使用(模糊逻辑,损失函数,我应该在训练中包括休息集群)吗?

【问题讨论】:

  • 你所说的运动是什么意思是不清楚和模棱两可的。例如,在上图中从第 5 类移动到第 1 类时,如何得到错误的“3”? 3在任何时候都不会妨碍。您输入的频率很高也是一个令人困惑的陈述。快乐进一步定义你真正的意思和想要完成的事情
  • 你说得对,他们没有碍事。但是,上面显示的示例是假设的,并且数据是非线性的,因此即使我物理上没有经过 3 到达 1,由于非线性,有时我仍然可以看到它。

标签: matlab machine-learning classification libsvm knn


【解决方案1】:

如果您熟悉 Boosting,可以尝试 AdaBoost.MHabstain。在 AdaBoost 的常规版本(用于二元分类任务)中,每个弱分类器输出一个 +1 或 -1 的标签。在有弃权的版本中,每个弱分类器都可以通过预测0来“弃权”,这使得弱分类器可以说“我不知道”。通过将每个实例分解为多个二元分类问题,可以将相同的想法扩展到多类问题。

在您的情况下,您可以将第 5 类映射到“弃权”预测。

在分解之前,假设您的训练实例如下所示:

x1 -> 1
x2 -> 5

因此,分解后,您的训练实例如下所示:

x1 -> 1          (predicting +1)
x1 -> not 2      (predicting -1) 
x1 -> not 3      (predicting -1)
x1 -> not 4      (predicting -1)
x2 -> abstain    (predicting 0)
x2 -> not 1      (predicting +1)
x2 -> not 2      (predicting +1)
x2 -> not 3      (predicting +1)
x2 -> not 4      (predicting +1)

在每次提升迭代中,您将从训练实例中选择一个特征并构建一个弱学习器(决策树桩),以最小化预测损失并更新与每个训练实例相关的权重。 “x2 -> abstain”不会通过预测 0 来影响预测损失,但是所有其他分解的训练实例,如“x2-> not 1”、“x2-> not 2”等,仍然有助于系统识别负面将实例分类为 1 到 4 时 x2 的效果。

Here 是包含 AdaBoost 思想的经典论文:

Robert E. Schapire,Yoram Singer 使用置信度预测改进了 Boosting 算法。

This 是另一篇论文,其中包含 AdaBoost.MH 的更多详细信息,弃权和文本分类中的应用。

【讨论】:

  • 感谢您的回复和对论文的指出,我会看看它是否有帮助。你知道在 Matlab、C 或 Java 中实现此功能的任何库(如 Weka)吗,以便我可以在实际实现它之前使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
相关资源
最近更新 更多