七招教你处理非平衡数据——避免得到一个“假”模型

简介: 这篇博客主要介绍处理不平衡数据的技巧,给出了七种适用于特定问题及数据集的方法,避免由于数据集不平衡而得到的一个假的好模型。另外作者也指出本文不是一个技术列表,建议读者不局限于此、尝试结合不同的方法设计出合适的模型。

更多深度文章,请关注:https://yq.aliyun.com/cloud

这篇博客主要介绍处理不平衡数据的技巧,那么什么是不平衡数据呢?比如说一位医生做了一个病例对照研究,数据集由病例10人和对照990人组成,建立好一个逻辑回归模型后,并对建立的模型进行内部验证,居然发现其正确率高达99%,然后把他兴奋坏了,觉得可以将该成果发表到顶级期刊上,从此走上人生巅峰。然而,我们可以发现,该模型不管怎么预测,都能得到正常的结果,所谓的99%的正确率,原来是建立在1000个人中10个病例都发现不了的基础上。从这个例子可以看出,当遇到不平衡数据时,以总体分类准确率为学习目标的传统分类算法会过多地关注多数类,从而使得少数类样本的分类性能下降。

介绍

不平衡数据广泛存在于各个领域,但在二分类问题中尤其常见,表现为其中的一个类别所占的比例远远高于另外的一个类。比如:银行欺诈检测、市场营销、网络入侵检测等领域。

这些领域中的数据集有哪些共同点呢?可以发现在这些领域中使用的数据通常不到1%,但一旦发生就是一件有趣的事件(例如使用信用卡的欺诈者的违规交易,用户点击广告或原本已损坏的服务器在扫描其网络)。然而,大多数机器学习算法对于不平衡数据集不能很好地工作。以下七种技术可以帮助我们训练分类器来检测异常类。

2ae13c80b331928efad71567a7330c04252616b7

1. 使用正确的评估指标

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

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

  • 准确度/特异度:有多少个选定的实例相关。
  • 召回率/灵敏度:选择了多少个相关实例。
  • F1评分:准确度和召回率的调和平均数。
  • Matthews相关系数(MCC):观察和预测的二元分类之间的相关系数。
  • ROC曲线下的面积(AUC):真阳性率与假阳性率之间的关系。

2. 重新采样训练集

除了使用不同的评估标准外,还可以使用不同的数据集。有两种方法使不平衡的数据集来建立一个平衡的数据集——欠采样和过采样。

2.1. 欠采样

欠采样是通过减少丰富类的大小来平衡数据集,当数据量足够时就该使用此方法。通过保存所有稀有类样本,并在丰富类别中随机选择与稀有类别样本相等数量的样本,可以检索平衡的新数据集以进一步建模。

2.2. 过采样

相反,当数据量不足时就应该使用过采样,它尝试通过增加稀有样本的数量来平衡数据集,而不是去除丰富类别的样本的数量。通过使用重复、自举或合成少数类过采样等方法(SMOTE[1]来生成新的稀有样品。

注意到欠采样和过采样这两种方法相比而言,都没有绝对的优势。这两种方法的应用取决于它适用的用例和数据集本身。另外将过采样和欠采样结合起来使用也是成功的。

3. 以正确的方式使用K-fold交叉验证

值得注意的是,使用过采样方法来解决不平衡问题时应适当地应用交叉验证。这是因为过采样会观察到罕见的样本,并根据分布函数应用自举生成新的随机数据,如果在过采样之后应用交叉验证,那么我们所做的就是将我们的模型过拟合于一个特定的人工引导结果。这就是为什么在过度采样数据之前应该始终进行交叉验证,就像实现特征选择一样。只有重复采样数据可以将随机性引入到数据集中,以确保不会出现过拟合问题。

K-fold交叉验证就是把原始数据随机分成K个部分,在这K个部分中选择一个作为测试数据,剩余的K-1个作为训练数据。交叉验证的过程实际上是将实验重复做K次,每次实验都从K个部分中选择一个不同的部分作为测试数据,剩余的数据作为训练数据进行实验,最后把得到的K个实验结果平均。

4. 组合不同的重采样数据集

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

f9a59c227cde6aabc6ddd5f9035956d2c0146e73

如果拥有大量数据,这种方法是简单是可横向扩展的这是因为可以在不同的集群节点上训练和运行模型。集合模型也趋于泛化,这使得该方法易于处理。

5. 用不同比例重新采样

之前的方法可以很好地将稀有类别和丰富类别之间的比例进行微调最好的比例在很大程度上取决于所使用的数据和模型。但是,不是在整体中以相同的比例训练所有模型,所以值得尝试合并不同的比例。如果10个模型被训练,有一个模型比例为11(稀有:丰富)和另一个13甚至是21的模型是有意义的。一个类别获得的权重依赖于使用的模型

920fa684f3e3e1bd3ebeaaa48002906991eac111

6. 集群丰富

Sergey Quora提出了一种优雅的方法[2]他建议不要依赖随机样本来覆盖训练样本的种类,而是将r个群体中丰富类别进行聚类,其中rr中的例数。每个组只保留集群中心(medoid然后,基于稀有类和仅保留类别对该模型进行训练。

7. 设计自己的模型

所有之前的方法都集中在数据上,并将模型保持为固定的组件。但事实上,如果设计的模型适用于不平衡数据,则不需要重新采样数据,著名XGBoost已经是一个很好的起点,因此设计一个适用于不平衡数据集的模型也是很有意义的

通过设计一个代价函数来惩罚稀有类别的错误分类而不是分类丰富类别,可以设计出许多自然泛化为稀有类别的模型。例如调整SVM惩罚稀有类别的错误分类。

76dfa88e5a25555eb589b82a0f23ecee900bc56a

结束语

本文不是一个排外的技术列表,而是处理不平衡数据的一些建议。没有适合所有问题的最佳方法或模型,强烈建议尝试不同的技术和模型来评估哪些方法最有效尝试创造性地结合不同的方法。同样值得注意的是,在不平衡类别发生的许多领域中,随着市场规则不断变化需要检查过去的数据是否过时

推荐阅读

作者信息

Ye Wu在营销和销售预测方面具有会计和实践经验的背景IE商学院攻读业务分析与大数据硕士学位。

Rick Radewagen是一位有抱负的数据科学家,拥有计算机科学的背景IE商学院攻读业务分析与大数据硕士学位。

本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

文章原标题《7 Techniques to Handle Imbalanced Data》,作者:Ye Wu, Rick Radewagen,译者:海棠,审阅:6816816151

附件为原文的pdf

文章为简译,更为详细的内容,请查看原文

 

相关文章
|
人工智能 自然语言处理 测试技术
中文大模型体验测评系列(一)
本文主要通过体验中文竞技场大模型,并详细记录体验过程及感受。
100513 84
|
XML 存储 开发工具
|
机器学习/深度学习 算法 数据挖掘
介绍一下如何处理数据不平衡的问题
介绍一下如何处理数据不平衡的问题
1302 1
|
机器学习/深度学习 数据采集 算法
智能交通信号控制:优化城市交通流
【10月更文挑战第2天】随着城市化进程加快,交通拥堵成为严峻挑战。智能交通信号控制(ITSC)通过集成现代信息技术、大数据分析和人工智能,实现了交通信号的动态优化,有效缓解了交通拥堵,提升了交通效率。其工作原理包括数据采集与处理、交通状态感知、流量预测及信号灯控制策略制定等环节。目前,ITSC已在多个城市应用并取得显著效果,如提升交通效率、减少拥堵和改善安全等。未来,ITSC将融合多模态数据、应用深度学习算法、实现区域协同控制,并与其他智能交通系统集成,为构建安全、高效、绿色的城市交通环境贡献力量。
1453 6
|
机器学习/深度学习 Python
处理不平衡数据:技术详解与实例分析
处理不平衡数据:技术详解与实例分析
1459 0
|
机器学习/深度学习 并行计算 Dart
机器学习笔记-LightGBM
LightGBM是2017年由微软推出的可扩展机器学习系统,是微软旗下DMKT的一个开源项目,由2014年首届阿里巴巴大数据竞赛获胜者之一柯国霖老师带领开发。它是一款基于GBDT(梯度提升决策树)算法的分布式梯度提升框架,为了满足缩短模型计算时间的需求,LightGBM的设计思路主要集中在减小数据对内存与计算性能的使用,以及减少多机器并行计算时的通讯代价
1110 0
机器学习笔记-LightGBM
|
JavaScript 前端开发 Linux
客户端开发(Electron)系统级API使用
客户端开发(Electron)系统级API使用
1079 0
客户端开发(Electron)系统级API使用
|
安全 网络安全
曾优雅击退史上最凶狠的DDoS攻击,AliGuard的高性能从何而来?
2016年10月21日,美国发生了一次震惊全球互联网的安全事件,大半个美国的互联网因为DDoS攻击发生瘫痪,攻击从清晨开始一直持续到傍晚,黑客发起了长时间多批次攻击,直接导致twitter、Spotify、Netflix、Github、Airbnb、Visa等出现无法登陆的情况,而且twitter甚至都出现了长时间瘫痪的情况,因此造成的直接和间接经济损失无法估量。
11123 0
|
机器学习/深度学习 人工智能 算法
【深度学习之美】Hello World感知机,懂你我心才安息 (入门系列之五)
感知机,就如同神经网络(包括深度学习)的“Hello World”。如果不懂它,就如同“为人不识陈近南,便称英雄也枉然”一样尴尬。当感知机可以模拟人类的感知能力,当它能够明辨与或非,但它最大的“疑惑”就是“异或”。难道机器领域也只能是异性才能有结果吗?
25437 0
|
机器学习/深度学习 算法 资源调度
论文导读:面向卷积神经网络的卷积核冗余消除策略
本篇论文针对卷积神经网络在训练阶段所需的大量存储与计算资源,提出了一种改进的冗余卷积核消除策略,精简每个卷积层中冗余的卷积核,进而降低模型训练开销,使模型训练过程从云端转移至本地成为可能。
7204 0

热门文章

最新文章