下采样和类比

数据挖掘 机器学习 Python 训练 采样 阶级失衡
2022-03-11 16:45:03

我的目标变量是申请是否被接受。这是一个高度不平衡的目标,98.5% 的申请被接受。我不清楚下采样的概念。如果我要对申请进行下采样,我是否必须保持当前接受申请与拒绝申请的比率,同时降低训练数据中的申请总数,或者我是否可以将接受申请与拒绝申请的比率更改为 50% 接受,50 % 被拒绝?采用这两种方法有什么好处?欢迎帮助。谢谢!

3个回答

下采样意味着您从多数类(98.5%)中采样,以减少多数类和少数类之间的不平衡。如果您保持比率不变,您只需减少训练示例的数量。这没有意义。但是,您不必采样到 50:50 的比例如果您的比率为 98:2,则可以采样到 80:2 而不是 2:2。

下采样(和上采样)的主要目标是增加两个类之间的区分能力。理想情况下,您应该有一个分类器,它输出的决策表面不是简单的二元(例如逻辑回归(您不必选择 0.5 的截止点)),而是为您提供连续的决策值。然后,您可以对数据进行排序并设置一个可以为您提供最佳结果的决策阈值。

由于下采样(或上采样)会改变您的训练分布与您的真实分布,因此您只想下采样(或上采样)以至于您的分类器可以开始区分这两个类。然后,您通过选择适当的决策阈值来微调结果。(此外,根据我的经验,上采样通常是比下采样更好的选择。)

理想情况下,您在训练数据中的分布应该与在测试数据中的分布相同,也就是说,由于您正在谈论的原因,下采样是没有意义的。但是,在训练模型时,您可能希望为负样本分配更大的权重,以便针对f1_score而不是针对进行优化accuracy

更喜欢对数据进行上采样以平衡输入类(如果您的数据是平衡的,则不需要专门为任何类分配特定权重)。
您可以参考下面的链接,其中我给出了一个小示例来升级输入数据。 https://datascience.stackexchange.com/a/40895/62202