不平衡数据的二进制分类

时间:2019-10-15 11:24:11

标签: python

在数据挖掘中,我使用机器学习算法来解决二进制分类。
但是,数据样本的分布极为不平衡。
好的样本与坏的样本之比高达500:1。
可以使用哪些方法来解决不平衡数据的二进制分类?

3 个答案:

答案 0 :(得分:0)

您可以使用综合少数族裔过采样技术(SMOTE)或Adasyn来解决此问题。尝试两种方法并根据您想要的结果完成。

答案 1 :(得分:0)

在这种情况下,一种标准方法是使用过采样,因此人为地增加了较小的类。在 sklearn 中,大多数机器学习算法都有一个像“class_weight”这样的参数,你可以用它来定义每个类应该被赋予多少权重(例如在随机森林中)。 R 中的大多数机器学习算法也是如此。

解决此问题的另一种方法是为代表性不足的类(例如 SMOTE)人为地创建数据。

此外,您还可以尝试使用深度学习为代表性不足的班级创建这些人工数据。我尝试的方法是使用变分自动编码器,然后从底层分布中采样,为您想要的类生成假数据:https://lschmiddey.github.io/fastpages_/2021/03/17/data-augmentation-tabular-data.html

答案 2 :(得分:0)

您还可以使用非对称损失函数,根据数据标签对模型进行不同的惩罚。在您的情况下,损失函数对“坏”样本中的错误的惩罚比“好”样本中的错误要多得多。通过这种方式,模型更加关注稀有数据点。