方法总结:教你处理机器学习中不平衡类问题

【导读】在构建机器学习模型的时候,你是否遇到过类样本不平衡问题?本文就讨论一下如何解决不同程度的类样本不平衡问题。本文整理了数据科学研究者Devin Soni发布的一篇博文的主要内容,分析了不平衡类的情况,并讨论了几种解决方案:度量指标、代价敏感学习、采样方法、异常检测。这些技术中适合不同程度的不平衡问题,例如,简单的采样技术可以让你克服轻微的不平衡,而异常检测方法可能解决极端的不平衡。选择合适的方法能帮助你克服你遇到的不平衡问题。

Dealing with Imbalanced Classes in Machine Learning

▌介绍(Introduction)



大多数分类问题样本都会有一定程度的类失衡,即每个类在数据集中的份额不等。妥善调整评价指标和方法以适应目标是非常重要的,如果没有这样做,最终可能会因为所用的不平衡样本而得到一个无意义的指标。

例如,假设有两个类A和B. 类A占数据集的90%,而类B占另外的10%,但你最感兴趣的是识别类B的样本。如果只是简单地预测类A,你可以达到90%的准确度,但是这对你来说意义不大。相反,合适的校准的方法可能会只有较低的准确性,但会有一个true positive rate(或召回率),实际上这才是你应该优化的标准。这些情况经常发生在检测中,例如在线不良内容检测或医学数据中的疾病标记检测。

现在我将讨论几种可以用来缓解不平衡的技术。其中一些技术适用于大多数分类问题,而另一些技术可能更适合特定的不平衡问题。这篇文章中,我将从二元分类的角度来讨论这些问题,但是大多数情况下,同样适用于多元分类。我也假定目标是识别少数的类,否则,不能证明这些技巧是有必要的。

▌度量指标(Metrics)



一般来说,这个问题处理的是召回率(true positive实例被划分为positive的百分率)与精确度(被划分为positive 的实例中确实是positive的比例)之间的平衡。在我们想要检测少数类的情况下,我们通常更关心的是召回率而不是精确度,就像在检测的场景下,错过一个positive的实例的成本通常高于错误地标记一个negative的实例。例如,如果我们试图检测不良内容(辱骂、欺骗内容等),手动审核人员发现实际上非不良内容是极少的,但要识别不良内容则更加困难。因此,比较不平衡分类问题的方法时,请考虑使用比准确性更合适的指标,如召回率,precision和AUC/ROC。在参数选择或模型选择时,换一种度量方法可能就能提高少数类检测的性能。

▌代价敏感学习



在常规学习中,我们平等对待所有错误类别,因为没有针对少数类的奖励机制,所以这会导致不平衡的分类问题。成本敏感(代价敏感)学习改变了这一点,并且使用函数C(p,t)(通常表示为矩阵)表示将类别t的实例误分类为类别p的成本。这样我们可以对少数类错分给于较多的惩罚,给多数类错分较少的惩罚。我们希望这会增加正确率(true positive rate)。一个公认方案是使成本等于该类所构成的数据集比例的倒数。这样随着类实例数的减少惩罚会增加。

▌采样



解决不平衡数据集的一个简单方法是使数据集平衡,要么增加样本数较少的类的实例,要么减少采样大多数类的实例。理论上讲,我们创造一个平衡的数据集时不会导致偏向某个类。但实际上,这些简单的抽样方法存在缺陷。对少数类进行过度采样可能导致模型过拟合,因为从已经很小的实例集采样会引入重复的实例。同样,对多数类减少采样可能会丢失那些有区分性的重要样本。

还有优于简单采样(过采样或欠采样)的更强大的采样方法。最著名的方法是SMOTE,通过形成相邻实例的凸组合来创建少数类的新实例。如下图所示,它有效地绘制特征空间中少数点之间的线条,并沿着这些线条进行采样。我们创建了新的实例(而不是重复使用),这使我们能够平衡我们的数据集,而不会过度拟合。然而因为这些实例仍然是从现有的数据点创建的,所以这并不完全有效(数据集仍然不平衡)。

▌异常检测



在更极端的情况下,在异常检测的背景下考虑分类可能会更好。在异常检测中,我们假设存在一个异常的“数据点分布”,且任何偏移的点都是异常的。当我们将分类问题重新归类为一个异常检测问题时,我们把多数类别视为点的“正常”分布,将少数视为异常。有许多异常检测算法,如聚类方法,one-class SVM和隔离森林。

▌结论



希望通过这些方法的组合可以帮你解决平衡问题。 就像我之前说过的,这些技术中适合不同程度的不平衡问题。 例如,简单的采样技术可以让你克服轻微的不平衡,而异常检测方法可能解决极端的不平衡。 最终,对于这个问题,没有一个通用的方法,你需要尝试每种方法,看看它们是否适用于你的特定问题和指标。

参考链接:

https://towardsdatascience.com/dealing-with-imbalanced-classes-in-machine-learning-d43d6fa19d2

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2018-02-08

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

资源 | 吴恩达deeplearning.ai五项课程完整笔记了解一下?

机器之心整理 机器之心编译 参与:思源、路雪 自吴恩达发布 deeplearning.ai 课程以来,很多学习者陆续完成了所有专项课程并精心制作了课程笔记,在此...

4887
来自专栏CSDN技术头条

推荐系统中基于深度学习的混合协同过滤模型

近些年,深度学习在语音识别、图像处理、自然语言处理等领域都取得了很大的突破与成就。相对来说,深度学习在推荐系统领域的研究与应用还处于早期阶段。 携程在深度学习与...

35010
来自专栏机器之心

专栏 | 自然语言处理第一番之文本分类器

机器之心专栏 作者:想飞的石头 文本分类应该是自然语言处理中最普遍的一种应用,例如文章自动分类、邮件自动分类、垃圾邮件识别、用户情感分类等等,在生活中有很多例子...

2654
来自专栏大数据文摘

识辨 | 什么是分类?什么是聚类?

2374
来自专栏IT派

神经机器翻译之全并行文本生成技术

在过去的几年里,随着技术的飞速发展,神经网络推动了自然语言任务在准确性和质量方面的快速提高,如文本分类和问题回答等。而其中由深度学习带来的一个令人印象深刻的领域...

3384
来自专栏人工智能

ML工作流程(第5部分) - 特征预处理

我们已经讨论了ML工作流程的前四个步骤。到目前为止,我们通过DICTR(离散化,积分,清理,转换,还原)对原始数据进行预处理,然后采用特征提取的方式将数据转化为...

2370
来自专栏灯塔大数据

每周学点大数据 | No.55分类算法——Naive Bayes

NO.55 分类算法——Naive Bayes 小可:说完了聚类,那么分类算法又是怎么做的呢? Mr. 王:我们知道,分类是首先通过对训练集中大量数据的分析,训...

2965
来自专栏企鹅号快讯

一文读懂机器学习概率图模型

来源:机器之心 本文长度为10085字,建议阅读15分钟 本文结合基础应用示例系统性的为你讲解概率图模型。 概率图模型是人工智能领域内一大主要研究方向。近日,数...

2557
来自专栏AI科技大本营的专栏

AI技术讲座精选:NLP 模型到底选 RNN 还是 CNN?

【AI100 导读】本文系统地对比了 CNN 和 RNN 在 NLP 各大任务上的表现,包括:情感分类、关系分类、文本蕴含、答案选择、问题关系匹配、PQA、词...

3614
来自专栏计算机视觉战队

前景目标检测的无监督学习

无监督学习是当今计算机视觉领域最困难的挑战之一。这项任务在人工智能和新兴技术中有着巨大的实用价值,因为可以用相对较低的成本收集大量未标注的视频。

3112

扫码关注云+社区