不均衡数据怎么破?对付它的七种武器!

先问大家一个问题:

银行欺诈识别、市场实时交易、网络入侵检测等领域的数据集,有哪些共通点?

答案是:“关键”事件在数据中的占比经常少于1%(例如:信用卡行骗者、点击广告的用户或被攻破的服务器的网络扫描)。

然而,大多数机器学习算法在不均衡数据集的表现都不太好。以下七种技术可以帮到你,训练一个分类器用于检测不正常类别数据。

1. 使用正确指标评估权值

对于不均衡数据生成的模型,使用不恰当的评估方法很危险。架设训练数据是上图展示的数据。若准确度是衡量模型好坏的指标,把所有测试样本为划分为“0”,将得到非常高的准确率(99.8%),但显然,这模型不能为我们提供任何有价值的信息。

对于这个情况,可以用其它评估指标:

  • 准确率(Precision/Specificity): 选择的实例有多少是相关的;
  • 召回率(Recall/Sensitivity): 选择了多少相关实例;
  • F值(F1 score): 准确率与召回率的调和平均数;
  • MCC: 观察值与预测值之间的相关性系数;
  • AUC: 正阳性与假阳性的关系。

2. 训练集重抽样

除了使用不同的评估标准,还可以想办法获取其他数据集。有两种方法能把不均衡数据集转化为均衡数据集那就是欠抽样以及过抽样。

2.1.欠抽样

欠抽样通过删减大比例类的样本量来平衡数据集。这方法适用于数据量充足的情况。通过保留所有的小比例类数据样本并从大比例类数据中随机选取同等数量的样本,产生一个新的可用于后续模型的均衡数据集。

2.2.过抽样

反之,当数据量不足时则采用过抽样方法。通过增加小比例类的样本量来平衡数据集。不再是去掉冗余样本,通过如数据复制(repetition)、拔靴法(boostrapping)或合成少数过采样技术(SMOTE)产生了新的小比例类样本[1]。

注意:两种方法没有绝对优势。关键是看情况使用两种方法。过抽样与欠抽样合组合使用也常有效解决不均衡问题。

3. 恰当使用K-折交叉验证法

值得注意的是,当使用过抽样法来解决不均衡问题时,交叉验证法是需要合理应用的。

AI 研习社提醒:过抽样法会提取出小比例类的观察数据 ,用拔靴法根据分布函数随机生成新数据。如果交叉验证法在过抽样后使用,基本上会让模型过拟合到一个特别的伪拔靴法结果。这就是为什么交叉验证应该在过抽样前完成,正如如何实现特征选择。只有当数据反复地重抽样,数据集才具有随机性来确保不会有过拟合问题。

4. 融合不同的重抽样数据集

成功泛化一个模型,最简单的方法是使用更多数据。问题是,现成的分类器,如逻辑回归或随机森林,倾向于通过抛弃掉小比例类数据进行泛化。一个简单的实践方法,是使用所有小比例类样本,和划分为n份的互斥大比例类样本,共同建立n个模型。例如保留 1000个小比例类别样本,对大比例类别随机抽样10,000个样本,你只需要把10,000个样本分为10份并训练10个不同的模型。

这方法很简单,并在水平方向完美的可扩展 (假如你有很多的数据),因为你可以在不同簇节点上训练并跑你的模型。模型融合泛化效果更好,这使得这方法易于处理。

5. 不同的比率重抽样

上述方法,还可以通过调整小比例类别与大比例类别之间不同的比率来调优。最佳比率十分依赖于数据和使用的模型。但不要用同样的比率去训练 ensemble 里的所有模型,值得试着用不同比率模型融合。所以如果训练10个模型,一个模型使用1:1的比率(少类别:多类别)、另一个使用1:3、或2:1可能都合理。取决于模型,这会影响类别的权重。

6. 聚类多类别

Sergey在Quora提出了一个优雅的方法 [2]。不再依赖随机抽样,去保留训练样本的多样性,他建议把大比例类别聚类进r个组,r是它里面的案例数。对于每个组,仅保留质心(聚类的中心)。然后模型仅用小比例类别和质心数据进行训练。

7.你自己的模型

所有之前的方法注重数据,并保持模型不变。但实际上,假如模型适合于不均衡数据,那就不需要对数据重抽样。假如数据倾斜不是太严重,采用著名的XGBoost算法是一个很好的开始,因为它从内部确保训练的数据包不会是不均衡的。在算法内部,数据其实秘密地重抽样了。

设计一个成本函数,对小比例类别误分类的惩罚,要多于大比例类别的误分类,这可能会产生自然地倾向小比例类别进行泛化的模型。例如,调整SVM来通过同样的比率(占总样本的比例),去惩罚小比例类别的误分类。

总结

最后,AI 研习社提醒,这不是一个完整的技术列表,仅仅是一个处理不均衡数据的开始。其实,并没有一个能适配所有的问题的、最好的方法或模型。所以强烈建议尝试不同的技术和模型,去评估哪个的效果最好。可以尝试创新地同时使用几种不同的方法。另外很重要的一点是,在很多不均衡类别发生的领域(如欺诈检测、实时交易),“市场规则”是经常改变的。所以,请检查过去的数据是否已过期。

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2017-06-15

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据科学与人工智能

朴素贝叶斯分类算法|机器学习

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本文作为分类算法的第一篇,将首先介绍分类问题,对分类问题进行一个正式的定义。然...

29690
来自专栏AI星球

吾爱NLP(4)—基于Text-CNN模型的中文文本分类实战

转眼学生生涯就结束了,在家待就业期间正好有一段空闲期,可以对曾经感兴趣的一些知识点进行总结。

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

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

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

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

干货 | 图像数据增强实战

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

25140
来自专栏机器学习算法与Python学习

干货 | 从入门到放弃:21种机器学习算法详解,附多种下载方式

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 下面是各模型在博客中的详细解说,为方...

57290
来自专栏鸿的学习笔记

Understanding Convolution in Deep Learning(一)

卷积可能是目前深度学习中最重要的概念了。卷积和卷积网络是引发深度学习去完成几乎任何机器学习任务的最前沿地概念。但是什么使卷积这么强大?它是如何工作的?在这篇博客...

7110
来自专栏AI科技评论

学界 | 新的网络优化方法:随机权值平均

AI 科技评论按:在本文中,数据科学研究人员 Max Pechyonkin 讨论了最近两篇有趣的论文,它们提供了一种简单的方法,通过用一种巧妙的集成方式来提高任...

15420
来自专栏大数据文摘

学界 | Ian Goodfellow最新论文:是猫还是狗?不光神经网络识别不了,你也能被忽悠

26440
来自专栏机器之心

深度 | 脆弱的神经网络:UC Berkeley详解对抗样本生成机制

479110
来自专栏量子位

一文看懂如何搭建AI应用:10周学会深度学习,还赢下5千美元

春节后第一个休息日,量子位给大家准备了一个不一样的故事。 在这个故事里,主人公David Brailovsky(就叫阿D吧)参加了一场计算机视觉比赛。这个挑战赛...

20650

扫码关注云+社区

领取腾讯云代金券