校准多类分类的概率阈值

数据挖掘 机器学习 分类 阶级失衡 混淆矩阵 概率校准
2022-02-25 13:41:45

我已经为三个类别的分类建立了一个网络。该网络由一个 CNN 和两个全连接层组成。CNN 由卷积层、批归一化、RELU 激活、最大池化和 drop out 组成。这三个类别是不平衡的(如下面的混淆矩阵所示)。我已经优化了网络的参数以最大化 AUC。

我正在使用宏观和微观平均计算 AUC。从 ROC 图中可以看出,AUC 并没有那么糟糕。另一方面,混淆矩阵看起来很糟糕,尤其是第一(低)类的预测很差。网络倾向于预测多数类别。作为网络的输出,我得到了每个类的概率。然后,我只是根据创建混淆矩阵的最大概率来上课。

我在训练网络时尝试使用平衡的类权重(以fitKeras 的方法)。这有助于网络也更频繁地预测少数类,但另一方面 AUC 正在下降。

有没有办法从 ROC 图推断概率阈值?我认为对于两个类,可以通过采用 ROC 图推断出最佳概率阈值,max(TPR - FPR)但这里我有三个类......或者还有另一种方法吗?

在此处输入图像描述

在此处输入图像描述

1个回答

免责声明:这个答案描述了我对这个问题的想法,我不保证它们的有效性,所以使用风险自负;)

这个问题有两个不同的部分:

  • 找到三个类别的最佳阈值
  • 提高少数族裔的表现

第一部分:我可能错了,但据我所知,当存在三个类别时,无法选择特定的概率阈值。如果有办法,它可能不会来自 ROC 图,因为不同图的曲线是独立的,所以在曲线上选择一个点将对应于不同类别的不同阈值,我不明白这是怎么回事将是可管理的。我知道的唯一方法就是您所做的:用具有最大概率的类进行标记。

第二部分:如果您想强制模型处理所有类,您也可以尝试使用宏 AUC 进行优化,但这可能会导致同样的问题,即降低微 AUC,因为会有更多的错误真正的中性或高预测为低。

在我看来,三路模型效果不佳:少数类的不平衡性还不错,仅比其他类少 2 或 3 倍。所以模型几乎完全忽略了这个类的事实有点奇怪。我还看到,真实类低的实例几乎与类中性的预测一样频繁,尽管我预计低类的绝大多数错误被预测为中性。

所以我模糊的直觉是,也许系统可以设计成避免模型的三向问题。从这个角度来看,我可以想到两个选择:

  • 一个两步系统,其中第一个模型在低和中性+高之间进行分类,然后第二个模型在中性和高之间进行分类(或者首先是低+中性与高,然后是低与中性)。这样,每个模型都是二元分类,因此您可以更好地控制每一步的阈值。通常不建议在分类中这样做,但在这里我假设这些类不是真正的分类。
  • 进一步推动同样的想法:低 <中性 < 高的类之间似乎有一个顺序,所以也许可以将任务视为回归问题。这可能有助于模型避免低和高之间的这些“大”错误。重要的是,您还可以灵活地使用预测值:需要确定两个阈值,并且可以找到这些阈值来优化任何适当的评估措施。