分类:处理弃权/拒绝类别

时间:2013-06-30 19:02:11

标签: matlab machine-learning classification libsvm knn

我要求您提供有关分类问题的输入和/或帮助。如果有人有任何我可以阅读的参考资料,以帮助我更好地解决我的问题。

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

Equal Weight Decision Boundary

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

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

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

Ideal Decision Boundary

1 个答案:

答案 0 :(得分:2)

如果您熟悉Boosting,可以尝试使用弃权 AdaBoost.MH 。在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 - >弃权”不会通过预测0来影响预测损失,但是所有其他分解的训练实例如“x2->不是1”,“x2->不是2”等仍然有助于系统在将实例分类为1到4时,识别x2的负面影响。

Here是一篇经典论文,其中包括AdaBoost弃权的想法:

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

This是另一篇论文,其中详细介绍了AdaBoost.MH的弃权和文本分类应用。