处理非平衡数据的七个技巧

摘要:本文介绍了在入侵检测、实时出价等数据集非常不平衡的领域应用的数据处理技术。 关键字:平衡数据,数据准备,数据科学 原文:7 Techniques to Handle Imbalanced Data http://www.kdnuggets.com/2017/06/7-techniques-handle-imbalanced-data.html 作者:Ye Wu & Rick Radewagen, IE Business School. 译者:王安阳

介绍

在例如银行欺诈检测、市场实时出价、网络入侵检测等应用场景中,数据集有什么特点?

这些领域中使用的数据,通常只有不到1%是我们“感兴趣”的(例如:使用信用卡的欺诈数据、用户点击广告的数据、损坏的服务器扫描其网络的数据等)。 然而,大多数机器学习算法对于这种不平衡的数据集不能很好地工作。以下七个技巧可以帮助您训练分类器来检测异常类。

使用正确的评估指标

对于使用不平衡数据生成的模型,应用不当的评估指标可能是危险的。想象一下,我们的训练数据如上图所示。 如果使用精度来衡量模型的好坏,将所有测试样本分类为“0”的模型将具有很好的准确性(99.8%),但显然这种模型不会为我们提供任何有价值的信息。

在这种情况下,可以应用其他评估指标替代,例如:

  • 精确率/特异性:多少个选定的实例是相关的。
  • 召回率/灵敏度:选择了多少个相关实例。
  • F1分数:精确率和召回率的加权平衡。
  • MCC:观察和预测的二分类数据之间的相关系数。
  • AUC:真阳性率与伪阳性率之间的关系。

重抽样

除了使用不同的评估标准外,还可以开发不同的数据集。有两种方法可以从不平衡数据集中生成出平衡的数据集:欠抽样和过抽样。

欠抽样

欠抽样通过减少多数类(数据量占大多数的类别)的样本量来平衡数据集。当数据量足够大时可以使用此方法。

通过保存稀有类(数据量占少数的类别)的所有样本,并在多数类中随机选择相等数量的样本,可以提取出新的平衡的数据集用于进一步建模。

过抽样

与欠抽样相对,过抽样适用于数据量不足的情况。它通过增加稀有类的样本量来平衡数据集。新的稀有类数据可以通过复制,自举法或SMOTE[1](合成过抽样技术)以及其他类似技术来生成。

需要注意,没有一种绝对正确的重抽样方法。如何选用这两种方法取决于应用场合和数据集特点。欠抽样和过抽样相结合也能产生很好的结果。

正确使用K重交叉验证

值得注意的是,使用过抽样方法来解决不平衡问题时应适当地应用交叉验证。

要知道过抽样是根据原有稀有类数据的分布函数,自举生成新的随机数据。 如果在过采样之后应用交叉验证,那么我们将引入过拟合于自举数据的结果。 因此在过抽样数据之前必须进行交叉验证,就像实现特征选择一样。只有反复重采样数据,可以将随机性引入到数据集中,以确保不会出现过拟合的问题。

组合不同的重样数据集

泛化模型的最简单的方法是使用更多的数据。问题是,开箱即用的分类器,如逻辑回归或随机森林,倾向于通过丢弃稀有类来泛化。一个简单的最佳实践是建立n个模型,分别使用稀有类的所有样本和多数类的n个不同样本。假设要合并10个模型,你需要选取比如 1000个稀有类样本,10000个多数类样本。然后。只需将10000个案例分成10个块,并训练出10个不同的模型。

这个方法非常简单,并且可以完美地水平扩展到更大的数据量,因此你可以在不同的集群节点分开训练,然后组合优化模型,可操作性很强。

用不同比例重抽样

以上的方法可以通过改变稀有类和多数类的样本比例进行微调。 最好的比例在很大程度上取决于所使用的数据和模型。 另外,在不同的分组使用不同的比例,来代替以相同的比例训练所有模型非常值得尝试。 所以如果有10个训练模型,可以有一个模型比例为1:1(稀有:多数),另一个1:3,另一个2:1……,这样做是有意义的。 根据使用的模型,比例可以影响一个类获得的权重。

聚集多数类数据

Sergey提出了一种优雅的方法[2]。他建议不要依赖随机抽样来覆盖训练样本的变化情形,而是对数据集的多数类进行聚类。 对于每个组,只保留集群中心。然后,仅使用稀有类和聚类中心作为训练数据集。

设计你自己的模型

上述的方法都聚焦在数据上,并将模型视为固定的组件。但事实上,如果模型适用于不平衡数据,就不需要重新采样数据了。 著名的XGBoost已经是一个很好的起点,如果数据集没有过度倾斜,因为它内部照顾到训练集的平衡性。实际上,数据仍然被重新采样了,只不过是秘密发生的。

通过设计一个惩罚稀有类的分类错误比多数类分类错误严重的成本函数,可以设计出许多自然泛化的模型。 例如,调整SVM,使用与对稀有类未被代表的比例相关的参数,作为惩罚稀有类的错误分类的参数。

总结

这不是一个排他性的列表,而是处理不平衡数据的起点。没有适合所有问题的最佳方法或模型。

强烈建议你尝试不同的技术和模型来评估哪些方法最有效。尝试创造性地结合不同的方法。 同样重要的是要注意,在不平衡数据出现的许多领域(例如欺诈检测,即时投标)中,“市场规则”是不断变化的。 所以,需要检查过去的数据是否已经过时。

[1] arxiv.org/pdf/1106.1813.pdf

[2]www.quora.com/In-classification-how-do-you-handle-an-unbalanced-training-set/answers/1144228?srid=h3G6o

本文分享自微信公众号 - 人工智能头条(AI_Thinker)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-06-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

每个Kaggle冠军的获胜法门:揭秘Python中的模型集成

705100
来自专栏目标检测和深度学习

干货整理:处理不平衡数据的技巧总结!收好不谢

文:Rick Radewagen 译:李萌 在银行欺诈检测,市场实时竞价或网络入侵检测等领域通常是什么样的数据集呢? 在这些领域使用的数据通常有不到1%少量但“...

409100
来自专栏磐创AI技术团队的专栏

干货 | 图像数据增强实战

【磐创AI导读】:本文讲解了图像数据增强实战。想要获取更多的机器学习、深度学习资源,欢迎大家点击上方蓝字关注我们的公众号:磐创AI。

28940
来自专栏AI科技评论

独家 | 利用特权信息、语义信息和多源信息辅助基于网络数据的学习

雷锋网 AI 科技评论按:本文由美国莱斯大学博士后牛力为 AI 科技评论提供的独家稿件,未经许可不得转载。

13920
来自专栏量子位

想把自拍背景改成马尔代夫?手把手教你用深度学习分分钟做到

王小新 编译自 TowardsDataScience 量子位 出品 | 公众号 QbitAI 以前,从照片里抠出人像去掉背景,是要到处求PS大神帮忙的。大神时间...

46290
来自专栏ATYUN订阅号

如何配置神经网络中的层数和节点数

人工神经网络有两个重要的超参数,用于控制网络的体系结构或拓扑:层数和每个隐藏层中的节点数。配置网络时,必须指定这些参数的值。

22120
来自专栏语言、知识与人工智能

胶囊网络(Capsule Network)在文本分类的探索

最近,Hinton老师等提出了胶囊网络, 用神经元向量代替传统神经网络的单个神经元节点,以dynamic routing的方式去训练这种全新的神经网络。

77380
来自专栏ATYUN订阅号

如何通过热图发现图片分类任务的数据渗出

文末GitHub链接提供了生成以下图片所需的数据集和源代码。本文的所有内容都可以在具有1G内存GPU的笔记本电脑上复现。

16810
来自专栏视觉求索无尽也

【调参经验】图像分类模型的调参经验前言调参经验与我交流

用深度学习做图像分类任务也有近一年时间了,从最初模型的准确率只有60%到后来调到有80%,再到最后的90%+的准确率,摸索中踩了很多坑,也总结出了一些经验。现在...

27920
来自专栏CVer

[计算机视觉论文速递] 2018-07-02 图像分割专场

这篇文章有2篇论文速递,都是图像分割方向,包括运动捕捉图像的语义分割、将FCN和GAN结合的巩膜分割。其中一篇是ACM SIGGRAPH 2018,另一篇是BT...

15630

扫码关注云+社区

领取腾讯云代金券