当实际数据如此时如何处理类不平衡

人工智能 分类 训练 数据预处理 监督学习 不平衡数据集
2021-11-02 06:15:59

我的监督学习训练数据是从实际数据中获得的;在实际案例中,有一个类别的发生频率低于其他类别,仅占所有案例的 5% 左右。

准确地说,前 2 个类在 95% 的训练数据中,最后一个在 5% 中。在保持数据比率不变的情况下进行训练将使准确率在正确的第一步达到 50%,并立即达到 90%+,这是没有意义的。

我是否应该排除第 1 类和第 2 类的一些数据,使 3 类的样本数量相等?但这不是现实世界的比率。

1个回答

您可以将分层交叉验证与应用于训练数据的不平衡学习技术相结合。分层可确保当您将数据拆分为训练和测试时,类之间的频率比率将保持不变,因此测试数据将始终是“真实的”。

但是,在训练模型时(当然,只使用训练数据),不平衡可能会产生负面影响。因此,请查看一些可以纠正这种情况的不平衡学习技术。例如,您可以尝试以下方法:

  • 随机欠采样:丢弃大多数类中的随机样本,直到类频率的比率接近 1
  • 随机过采样:对少数类示例进行随机复制,直到类频率的比率接近 1
  • SMOTE:类似于随机过采样,除了创建合成示例而不是随机重复
  • 平衡装袋:执行随机欠采样,但多次这样做以创建在训练数据的平衡子集上训练的模型集合

等等。

您还应该注意用于评估测试数据的预测性能的指标。此处的准确性可能会产生误导,因此您可能会发现敏感性和特异性(针对每个类别单独计算)等指标更具信息性。