分类器链

数据挖掘 机器学习 多类分类
2021-09-15 20:16:54

我的问题是关于创建分类器链

我正在处理的问题是一个多类问题,我必须分配 7 个可能的类之一。

为此,我首先训练了一个基于随机森林的分类器,结果并不是那么好。Precision 的期望值约为 95%+,而我的期望值是 79。

所以我开始为每个班级训练 7 个不同的分类器。当我参加第 1 课时,出于培训的目的,我将其他课程的类别标签转换为“其他”。

通过执行此过程,各个分类器的性能达到了约 95%+。

然后我想,可以让分类器链接(以瀑布方式),最准确的模型首先尝试分类,下一个最准确的模型留在行上进行预测,第三个最准确的模型紧随其后以此类推。训练过程仍然相同(对于 7 个单独的分类器)。

具体来说,假设分类器 1 预测 100 行并发现 10 行属于 1 类,其他 90 行将是“其他”。然后分类器 2 将对剩余的 90 个进行预测,这些将被标记为“其他”。然后分类器 3 将在左边继续,依此类推。

问题是,结果与他们单独进行时相去甚远。它下降到70年代的高位。

我试图找出性能急剧下降的可能原因,并想知道这是否是意料之中的,或者我需要修改一些东西以实现某种比较性能。

我感谢任何输入/建议/评论。

2个回答

OP 报告说,当一系列one-vs-rest分类器从最准确到最不准确的集合中链接在一起时,与未链接的版本相比,该集合的整体预测准确性会降低。

这很有意义。想象一个更简单的案例,其中 3 类数据ABC用于构建您描述的链:AvsBC、BvAC 和 CvAB。让我们假设所描述的顺序是最准确的。

现在通过此链运行单个实例x 。假设分类器 AvsBC 分配 xa 后验概率 Pr(A) = 0.51。在这个结果下,集成可能会停止,并且永远不会探索其他选项,因此可能会错过更高的后验概率分配(例如,在 BvAC 下,您可能会得到 Pr(B) = 0.60)。只有通过所有分类器运行您的实例,您才能最大限度地提高准确性。

尝试为每个预测运行所有模型。您将需要获得预测的概率。将给出最大概率的个体模型作为分类。使用您提出的“瀑布”不允许其他模型对每个新输入的预测有发言权。另外,您是说当您从一个具有 7 个类别的模型切换到具有 2 个类别的 7 个模型时,准确度从 ~70 变为 ~95?这太有趣了。也许您应该看看哪些特征是每个二元模型中最强的预测因子(参见变量重要性)。