为什么我的分类器的实际输出与训练数据具有相似的标签比率?

数据挖掘 神经网络 美国有线电视新闻网 lstm 训练 阶级失衡
2021-10-10 19:02:48

我在平衡数据集上训练了一个神经网络,它的准确率很高,约为 85%。但在现实世界中,大约 10% 或更少的病例出现阳性。当我在具有真实世界分布的集合上测试网络时,它似乎分配了比需要更多的积极标签,趋向于平衡的比例,就像在训练集中一样。这种行为的原因是什么,我应该怎么做?我正在使用 Keras 以及 LSTM 和 CNN 层的组合。

2个回答

这种行为的原因是什么?

分类器仅尝试尽可能准确地捕获特征-标签关系,它不学习也不保证预测标签的比率接近真实比率。但是,如果采样类(即使是平衡的)是真实类区域的良好代表,并且分类器找到了良好的决策边界,则比率的接近性自然会发生。因此,解释是采样的负类不能很好地代表其真实占据的区域,这意味着某些区域没有很好地采样,和/或分类器正在寻找错误的决策边界这是一个视觉插图(我自己画的):

在此处输入图像描述

在良好的训练集的情况下,预测类似于现实世界的比率 (2:1),即使模型是在平衡集 (1:1) 上训练的。在错误的训练集和/或错误的决策边界的情况下,预测与现实世界的比率 (2:1) 完全不兼容 (1:2)。

我应该怎么做才能解决它?

  1. 如果问题与不良负面代表有关

    1. 在训练集中使用更多的负样本,即不平衡训练(可以用类权重抵消不平衡样本的影响),或者

    2. 使用平衡类进行训练,但更改决策阈值(训练后解决方案)。也就是说,不是将实例分配output > 0.5给正类,而是使用更难通过的阈值,例如output > 0.8减少正预测的数量。

  2. 如果问题与分类器性能有关,我们应该提出一个更好的分类器,这是一项开放式的努力。

但是,在我看来,您不应该根据正面预测的比率来选择模型。您应该根据诸如 macro-f1 (或任何其他指标)之类的指标来决定。因此,通过使用验证集,产​​生更多正样本且具有较高宏 f1 的模型应该优于产生较少正样本但具有较低宏 f1 的模型。

编辑

正如@BenReiniger 在另一篇文章中指出的那样,这里的一个隐藏假设(特别是在草图中)是类是“明显可分离的”。这个假设在更高的维度上变得更加合理。例如,狗和猫可以根据它们的图像(高维)与它们的长度(一维)明显分离。

Esmailian 的回答很棒,另一种可能的解决方案是截距校正,它更常用于逻辑回归,但原理也适用于此处,请参阅此处此处,网上有很多资料...