处理与现实世界数据相比不平衡的训练集

数据挖掘 分类 阶级失衡 监督学习
2021-10-14 03:39:18

我负责防止欺诈用户使用我们的解决方案的欺诈检测模型。我的模型表现很好,但我遇到的问题是,模型的性能越高,我的训练集中的欺诈用户就越少,因此与现实世界的数据相比,它变得不平衡。为了解决这个问题,我们引入了一个随机过程,让一些用户通过而不被评分,这样我们就可以继续从无偏见的数据中学习。理想情况下,我应该只在这个无偏数据集上训练我的模型,但它很小,不使用大部分数据是一种耻辱。因此,我想做以下事情:

  1. 在整个集合上训练我的模型:评分数​​据集(大但偏向好用户)+ 未评分数据集(小但无偏见)
  2. 仅使用未评分的数据集校准模型的概率

你觉得这怎么样 ?你能想到它会带来的任何缺点或偏见吗?

2个回答

您可以做几件事。请记住,有些人不同意一种方法,而另一些人则同意相同的方法。

1.)由于它是一个不平衡的数据集,您可以应用任何采样技术(过采样或欠采样)。我建议过采样(SMOTE),因为欠采样会导致信息丢失。现在有人不同意这种方法,而是建议第二种方法。

2.) 更改您正在使用的指标。对于不平衡的数据集,您应该始终使用加权 AUC、F1 分数等指标。

对于哪种技术是正确的,没有明确的赢家。采样技术已被许多人使用,但另一方面,一些专家表示它只会在数据中引入噪声,而改变指标可以解决问题。

你有这样的想法真是太好了。通常,当我们构建模型时,我们不会考虑如何为下一个模型构建获取数据,或者这个构建模型中的偏差来自以前的模型。在许多模型中,例如欺诈或信用,当前模型和业务政策会偏向未来数据。

我已经建立了事件率 < 1% 的欺诈模型。就我个人而言,我不喜欢 smote 类型的技术,因为它们会创建数据 - 谁说其他两个点之间的一些随机点应该归类相同。我经常通过加权进行轻微的欠采样,以免丢失太多信息。并非总是随机欠采样,而是查找匹配、集群和示例交易。而且我并不总是采样不足。

我认为随机过程应该变成一个测试——检查实验设计。然后,您专门从人口区域进行测试以获得良好的覆盖率。出于商业原因,很难在欺诈中进行测试,所以就像你说的,你的测试数据会很薄。您可能也不想在某些风险太大的领域进行测试 - 例如,如果您的模型是关于金融欺诈的,并且您不想测试损失可能 > 10,000 美元的地方。

在您的训练/验证/保留数据集中,包括一些测试数据。在测试和非测试数据上运行特定的指标——对您的业务问题有意义的任何指标。现在,您有了一些公正的指标,并且可能更好地了解模型将如何在新数据上执行。如果测试数据非常薄,则将其全部放入保留集中。