2

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

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

等权决策边界

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

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

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

理想的决策边界

4

1 回答 1

2

如果您熟悉 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 的影响。

是包含 AdaBoost 和弃权的经典论文:

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

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

于 2013-07-01T22:20:33.027 回答