我在平衡数据集上训练了一个神经网络,它的准确率很高,约为 85%。但在现实世界中,大约 10% 或更少的病例出现阳性。当我在具有真实世界分布的集合上测试网络时,它似乎分配了比需要更多的积极标签,趋向于平衡的比例,就像在训练集中一样。这种行为的原因是什么,我应该怎么做?我正在使用 Keras 以及 LSTM 和 CNN 层的组合。
为什么我的分类器的实际输出与训练数据具有相似的标签比率?
数据挖掘
神经网络
美国有线电视新闻网
lstm
训练
阶级失衡
2021-10-10 19:02:48
2个回答
这种行为的原因是什么?
分类器仅尝试尽可能准确地捕获特征-标签关系,它不学习也不保证预测标签的比率接近真实比率。但是,如果采样类(即使是平衡的)是真实类区域的良好代表,并且分类器找到了良好的决策边界,则比率的接近性自然会发生。因此,解释是采样的负类不能很好地代表其真实占据的区域,这意味着某些区域没有很好地采样,和/或分类器正在寻找错误的决策边界。这是一个视觉插图(我自己画的):
在良好的训练集的情况下,预测类似于现实世界的比率 (2:1),即使模型是在平衡集 (1:1) 上训练的。在错误的训练集和/或错误的决策边界的情况下,预测与现实世界的比率 (2:1) 完全不兼容 (1:2)。
我应该怎么做才能解决它?
如果问题与不良负面代表有关
在训练集中使用更多的负样本,即不平衡训练(可以用类权重抵消不平衡样本的影响),或者
使用平衡类进行训练,但更改决策阈值(训练后解决方案)。也就是说,不是将实例分配
output > 0.5
给正类,而是使用更难通过的阈值,例如output > 0.8
减少正预测的数量。
如果问题与分类器性能有关,我们应该提出一个更好的分类器,这是一项开放式的努力。
但是,在我看来,您不应该根据正面预测的比率来选择模型。您应该根据诸如 macro-f1 (或任何其他指标)之类的指标来决定。因此,通过使用验证集,产生更多正样本且具有较高宏 f1 的模型应该优于产生较少正样本但具有较低宏 f1 的模型。
编辑:
正如@BenReiniger 在另一篇文章中指出的那样,这里的一个隐藏假设(特别是在草图中)是类是“明显可分离的”。这个假设在更高的维度上变得更加合理。例如,狗和猫可以根据它们的图像(高维)与它们的长度(一维)明显分离。
其它你可能感兴趣的问题