如何从 n 个不同的分类中获取聚合混淆矩阵

数据挖掘 分类 混淆矩阵 准确性
2021-10-14 07:13:32

我想测试一种方法的准确性。我运行了大约 400 次,每次运行我得到不同的分类。我也有基本事实,即要测试的真实分类。

对于每个分类,我计算了一个混淆矩阵。现在我想汇总这些结果以获得整体混淆矩阵。我怎样才能实现它?

我可以总结所有混淆矩阵以获得整体吗?

2个回答

我不知道这个问题的标准答案,但我前段时间想过,我有一些想法要分享。

当您拥有一个混淆矩阵时,您或多或少地了解了分类模型如何混淆(错误分类)类。当您重复分类测试时,您最终会得到多个混淆矩阵。问题是如何得到一个有意义的聚合混淆矩阵。答案取决于有意义(双关语)的含义。我认为没有一个单一版本的有意义。

一种方法是遵循多重测试的粗略想法。通常,您会多次测试某些东西以获得更准确的结果。作为一般原则,人们可以推断,对多次测试的结果进行平均会减少估计的方差,因此,它会提高估计的精度。当然,您可以按这种方式进行,方法是逐个位置求和,然后除以测试次数。您可以更进一步,而不是只估计混淆矩阵的每个单元格的值,您还可以计算一些置信区间、t 值等。从我的角度来看,这没问题。但它只讲述了故事的一方面。

可能要调查的故事的另一面是相同实例的结果有多稳定。为了说明这一点,我将举一个极端的例子。假设您有 3 个类别的分类模型。假设这些类别的比例相同。如果您的模型能够完美地预测一个类别而其他 2 个类别具有随机性能,那么您最终将获得 0.33 + 0.166 + 0.166 = 0.66 的错误分类率。这可能看起来不错,但是即使您查看单个混淆矩阵,您也不会知道您在最后两个类中的表现差异很大。多项测试会有所帮助。但是平均混淆矩阵会揭示这一点吗?我的信念不是。平均会或多或少地给出相同的结果,并且进行多次测试只会降低估计的方差。

因此,另一种组合混淆矩阵的方法会更好地涉及每个实例的预测密度。人们可以通过计算每个实例来建立这种密度,即预测给定类的次数。标准化后,您将拥有每个实例的预测密度,而不是单个预测标签。您可以看到单个预测标签与退化密度相似,其中预测类的概率为 1,每个单独实例的其他类的概率为 0。现在有了这个密度,我们可以通过将每个实例和预测类别的概率添加到聚合混淆矩阵的相应单元格来构建混淆矩阵。

有人可能会争辩说,这会产生与前一种方法相似的结果。但是我认为有时可能会出现这种情况,通常当模型的方差较低时,第二种方法受测试样本抽取方式的影响较小,因此更稳定,更接近现实。

此外,为了获得第三种方法,可以更改第二种方法,其中可以将来自给定实例的预测的具有最高密度的标签分配为预测。

我没有实施这些事情,但我计划进一步研究,因为我相信可能值得花一些时间。

有几种方法可以实现您的“主混淆矩阵”。

  1. 将所有混淆矩阵相加:就像您建议的那样,将其相加会产生混淆矩阵。这样做的问题是您无法解释总计。

  2. 平均条目。此方法与第一种方法相同,但您将每个条目除以试验次数(在您的情况下约为 400)。这将是我的首选方法,因为您实际上可以将每个类别转换为(平均值)+-(误差测量),并实际查看哪些类别最不稳定或最稳定。不过要小心解释这个“误差测量”。

  3. 报告混淆数字的特定问题测量。例如,如果您的数字有异常值,则中位数将优于均值。

还有其他统计数据也可以报告。您可以重做该方法以跟踪各个分类。然后我们可以说其他重要的统计数据,例如“保持不变且准确的分类百分比”等...