哪些分类指标适用于每个类分布场景?

数据挖掘 分类 深度学习 多类分类 阶级失衡
2022-02-19 09:17:47

目前,我有一个平衡的数据集(我人为地对其进行过采样以使其平衡)。我的课程是二进制的(0 或 1)。我想知道“准确性”是否是在数据集具有大致相等的类平衡的情况下使用的“最佳”指标?

不过,更广泛地说,是否有一个很好的“经验法则”或“最佳实践”来确定根据数据集的类标签“分布”使用哪个评分指标(准确度、精确度、召回率、AUC ......)。

我能想到的常见场景有:

二进制分类

  • 0级高度不平衡
  • 1类高度不平衡
  • 大致相等的班级数量
  • 最后,想象一个 75/25 的比率

多类分类

  • 大多数样本都由一个类控制(在我的经验中很常见)
  • 类的数量大致相同
  • 许多类标签,每个样本很少(想象 1000 个样本,100 个类,每个样本有 2 到 20 个样本)

我知道通过改变数据集的样本数量来处理不平衡的技术,例如欠采样和过采样,但是假设您在这种情况下没有这样做。哪些指标最适合上述场景?

1个回答

首先不要改变数据的分布。如果真实数据不平衡,您的分类器将不会在测试时表现良好。

如果每个类别的数据量大致相等并且它们具有相同的重要性,那么准确度是一个很好的指标,它可以帮助您了解分类器的性能,而无需考虑标签的数量、二元或多类分类。

二进制分类
0 或 1 之间没有区别,因为您自己选择将每个类分配给一个标签,但通常将稀有的设置为 1,在某些情况下,可能将所需的输出设置为 1。

如果数据分布不均且偏差很大,建议使用F1score。最后,想象一下我个人更喜欢使用75/25 比率,F1因为它是不平衡的。

同样在一个类比另一个类重要得多并且数据可能有偏差的情况下,最好使用recall,尽管您必须更改成本函数以强调一个类对另一个类的重要性。例如,假设您想知道患者是否患有严重疾病。在这种情况下,您会尝试正确预测所有患有该疾病的人,因为如果您说某人患有疾病但您错了,那将比说患者健康造成的伤害要小。所以在这些情况下recallprecision.

多类分类

大多数样本都由一个类控制(在我的经验中很常见)

在这种情况下,首先,如果数据偏差很大,我建议您使用异常检测。但是如果你有更多的数据,你可以再次使用F1score。

类的数量大致相同

在这种情况下,如果类具有相同的重要性,您可以使用准确度。如果他们不这样做,请再次使用准确性,但更改成本函数以强调重要类别。

许多类标签,每个样本很少(想象 1000 个样本,100 个类,每个样本有 2 到 20 个样本)

在这种情况下,我认为你不会有很好的学习。无论如何,您必须在此使用混淆矩阵来跟踪所有类。虽然我猜你的模型会因为提供的数据量而过度拟合。


考虑到在所有情况下您都可以使用混淆矩阵
最后我建议你看看这里这里