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

时间:2017-04-20 00:07:47

标签: security machine-learning deep-learning

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

2 个答案:

答案 0 :(得分:1)

如果您有不平衡的数据,您有很多选择(请参阅下面的链接)。 除此之外还有一个非常有趣的方法,就是这样:

  

1:你以800块的方式随机分割你的850K阴性样本      

2:为每个块构建一个分类器,将所有正样本与一个负样本块放在一起

     

3:使用并列中的所有分类器并让他们投票,找到你需要多少正面投票的良好门槛"果然"将测试样本分类为阳性

关于您的数据是200 vs 850K(意味着大约4250个分类器),您可以考虑将此方法与其他方法结合起来,例如@Prune提到的重复或下面链接中解释的方法之一。

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

答案 1 :(得分:0)

是的,这在许多范例中都是正常的:大部分流量是“正常的”。您可以通过小心地在训练集,测试集和验证集中按比例分配负样本来处理此问题。例如,如果您想要的比例是50-30-20,请确保您在训练集中有大约100个恶意样本,60个在测试中,20个在验证中。

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