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

标签 matlab machine-learning classification libsvm knn

我正在寻求您对分类问题的意见和/帮助。如果有人有任何引用资料,我可以阅读以帮助我更好地解决我的问题。

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

Equal Weight Decision Boundary

圆圈代表类别的集群,蓝线代表决策边界,类别 5 等于(中性/静止不执行任何操作类别)。该类是被拒绝的类。然而问题是,当我从一个类别移动到另一个类别时,我在过渡运动中激活了很多误报,因为该运动显然是非线性的。 例如,每次我从 5 类(中性类)转到 1 类时,我首先会看到很多 3,然后再转到 1 类。

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

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

Ideal Decision Boundary

最佳答案

如果您熟悉 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 -> Abstain”不会通过预测 0 来影响预测损失,但是所有其他分解的训练实例(如“x2-> not 1”、“x2-> not 2”等)仍然有助于系统识别负数将实例分类为 1 到 4 时 x2 的效果。

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

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

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

关于matlab - 分类:处理弃权/拒绝类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17393837/

相关文章:

python - 卷积神经网络中的核和权重

machine-learning - Weka分类: wrong+correct < total instances,怎么来的?

r - R 中的预先求值导致错误消息

python - 与 Tensorflow 2.0 同一层的不同尺寸过滤器

r - KNN算法如何应用于分类变量?

python - 图像中颜色的分类器

matlab - 查找第一个元素最接近的行

matlab - 在特定耳塞( channel )上播放歌曲

matlab - 如何为排除的元素生成带零的向量组合矩阵?

matlab - 集群质量措施