如何处理高度不平衡的数据集

问题描述:

我正在检查合成的dataset CERT V4.1以模拟内部威胁。我意识到它包含大约850K个样本,并且有大约200个样本被视为恶意数据。这是正常的吗?我在这里错过了什么吗?如果是这种情况,如果我想使用深度学习,我该如何处理这些数据?如何处理高度不平衡的数据集

是的,这在很多范例中都是正常的:绝大多数流量是“正常”的。您只需谨慎地在您的火车,测试和验证集合中按比例分配负面样本来处理此问题。例如,如果您想要的比例是50-30-20,请确保您在训练集中有大约100个恶意样本,测试中有60个,测试中有20个。

如果训练在这个范例中失败,您也可以尝试为每个集合添加每个恶意样本的多个实例:多次复制这100个记录;例如,将每个样本的10份拷贝添加到每个数据集中(但是而不是从一套到另一套交叉 - 您现在在训练集中有1000个恶意样本,而不是每个原始200的10个副本)。

+0

你说的“不从一组跨越到另一个”是什么意思?另外,你认为深度学习可以在这些数据中找到一个好的模型吗? – cyberic

+0

我的意思是,每个观察值只出现在三个数据集中的一个中,尽管它可能会出现多次。 – Prune

+0

“深度学习”能找到一个“好”的模型吗?答案的范围非常广泛,答案*就是“是”。但是,这取决于您的数据覆盖范围是否广泛和可分离,足以支持您对“良好”的个人定义,以及您应用广泛的“深度学习”世界中的哪些方法。 – Prune

如果你有不平衡的数据,你有很多选择(见下面的链接)。 附加的这些有一个非常有趣的方法是这样工作的:

1:你的200块随机分割你的850K阴性样品

2:你建立一个分类的,你把每块所有正面样本与一个负面样本块一起

3:在并列中使用所有分类器并让他们投票,找到一个很好的门槛,确定需要多少正面投票以“足够确定”来对测试样本进行分类as positive

关于您的数据是200 vs 850K(意思是4250个分类器),您可能会考虑将此方法与其他方法结合使用,例如@Prune提到的重复方法或下面链接中介绍的方法之一。

这里有一些方法处理不平衡数据 http://machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/