专栏首页AI研习社不均衡数据怎么破?对付它的七种武器!

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

先问大家一个问题:

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

答案是:“关键”事件在数据中的占比经常少于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),作者:孔庆强

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 模型可解释性差?你考虑了各种不确定性了吗?

    本文作者是来自 Taboola 的数据科学家 Inbar Naor,她的研究领域是探索深度学习在推荐系统中的应用,在本文作者介绍了数据科学中模型不确定性的问题,...

    AI研习社
  • 终于!Supervise.ly 发布人像分割数据集啦(免费开源)

    本文为雷锋字幕组编译的技术博客,原标题Releasing “Supervisely Person” dataset for teaching machines ...

    AI研习社
  • 【头条】微软剑桥推出 DeepCoder 系统;谷歌工程师用“买芒果”理论解释机器学习

    微软剑桥联合推出 DeepCoder 近日 AI 研习社获悉,微软和剑桥大学的研究员近日发布了一篇介绍“会编程的机器学习系统——DeepCoder”的论文。据介...

    AI研习社
  • 频繁与交通部门合作,百度地图正深挖大数据金矿

    昨天,百度地图与成都交警、成都交投签署合作协议,建立战略合作伙伴关系,成都交警将向百度开放公共交通大数据,让百度地图给用户提供更加便利的地图服务,如实时路况;而...

    罗超频道
  • 这个2000人团队做的业务不赚钱,却是李彦宏的战略部队

    这几天去三亚参加百度地图的采集训练营,详细了解了地图数据采集作业流程,感触颇深。地图给我们的生活带来很大的便捷,看上去很简单的App背后却有庞大的团队在支持。数...

    罗超频道
  • 使用jupyter notebook直接打开.md格式的文件

    jupyter notebook是一个比较比较不错的网页版python编辑器,但是,由于很多“技术文档”都是直接以markdown(.md格式的文件)的格式编写...

    砸漏
  • 脑筋急转弯:程序员面试Brain Teaser总结(一)

    包子IT面试培训 助你拿到理想的offer! Brain Teaser 曾经是各个顶尖IT公司在面试程序员过程中必不可少的环节,因为在这些顶尖公司里面,他们的...

    包子面试培训
  • 前端移动web-day04学习笔记

    优点 : 全适配 (一个HTML文件就可以适配所有的屏幕 )

    帅的一麻皮
  • LeetCode 144. Binary Tree Preorder Traversal题目分析代码

    Given a binary tree, return the preorder traversal of its nodes' values. For ex...

    desperate633
  • Leetcode 94 Binary Tree Inorder Traversal

    Given a binary tree, return the inorder traversal of its nodes' values. For ex...

    triplebee

扫码关注云+社区

领取腾讯云代金券