分类是一种预测建模问题,涉及为给定示例预测类别标签。
通常假定训练数据集中的示例分布在所有类别之间是均匀的。在实践中,情况很少如此。
那些类别标签示例分布不相等的分类预测模型(例如,偏斜的)被称为“不平衡分类”。
通常,轻微的不平衡不是问题,可以使用标准的机器学习技术。在不平衡严重的情况下,例如少数类与多数类的比例为 1:100、1:1000 或更高时,则需要专门的技术。
对于类别严重不平衡的分类问题需要专门技术的原因是,大多数用于分类的机器学习模型的设计和测试都基于类别分布相等的假设。因此,它们经常失败或导致误导性的结果。
在本教程中,您将发现可以用来开始学习不平衡分类的最佳资源。
完成本教程后,您将了解:
- 关于机器学习不平衡分类主题的最佳书籍。
- 介绍类别不平衡主题的最佳调查论文。
- 您可以使用最佳 Python 库来开发解决不平衡数据集的方案。
快速启动您的项目,阅读我的新书 《Python 不平衡分类》,其中包含分步教程和所有示例的Python 源代码文件。
让我们开始吧。
- 2021 年 1 月更新:更新了 API 文档链接。

不平衡分类的最佳资源
照片作者:Radek Kucharski,保留部分权利。
教程概述
本教程分为三个部分;它们是:
- 不平衡分类书籍
- 不平衡分类调查论文
- 不平衡分类的 Python 库
不平衡分类书籍
使用机器学习解决不平衡分类预测建模问题是一个相对较新的研究领域。
尽管如此,考虑到不平衡分类数据集的普遍性,该主题有一些书籍和书章可供参考。
在本节中,我们将仔细研究以下关于不平衡分类的机器学习书籍。
- 不平衡学习:基础、算法与应用 (Imbalanced Learning: Foundations, Algorithms, and Applications), 2013.
- 从不平衡数据集中学习 (Learning from Imbalanced Data Sets), 2018.
我还将包含以下包含该主题专属章节的书籍。
- 应用预测建模, 2013.
我找到了另外两本相关但可能更偏门的书,我不会详细介绍;它们是:
- 生态和生物学研究中不平衡数据的统计方法, 2019.
- 使用模糊集和粗糙集方法处理机器学习中的不平衡和弱标记数据, 2018.
让我们仔细看看这些书。
不平衡学习:基础、算法与应用 (Imbalanced Learning: Foundations, Algorithms, and Applications)
这本书是由两位在该主题上写了很多内容的学者 Haibo He 和 Yunqian Ma 编辑的一系列论文组成的章节。
这本书出版于 2013 年。
这本书旨在让研究生或学者快速了解不平衡学习领域。这是一个比不平衡分类更广泛的领域,因为它包括了训练数据集可能不平衡的其他问题类型,例如回归和聚类。
具体来说,我们将不平衡学习定义为数据表示和信息提取的学习过程,其中数据分布严重偏斜,旨在开发有效的决策边界来支持决策过程。学习过程可以涉及监督学习、无监督学习、半监督学习或前两者或所有三者的组合。不平衡学习任务也可以应用于回归、分类或聚类任务。
— 第 1-2 页,《不平衡学习:基础、算法与应用》,2013 年。
它为从业者提供了一个极佳的起点,让他们能够快速了解该领域和技术。
这本书的目录如下。
- 1. 引言
- 2. 不平衡学习基础
- 3. 不平衡数据集:从采样到分类器
- 4. 不平衡学习的集成方法
- 5. 支持向量机的类别不平衡学习方法
- 6. 类别不平衡与主动学习
- 7. 非平稳流数据学习与不平衡类分布
- 8. 不平衡学习的评估指标
想要开始学习不平衡分类吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
从不平衡数据集中学习 (Learning from Imbalanced Data Sets)
这本书也是一本关于不平衡数据集机器学习主题的论文集,尽管它比之前的《不平衡学习》这本书感觉更具凝聚力。
这本书由 Alberto Fernández、Salvador García、Mikel Galar、Ronaldo Prati、Bartosz Krawczyk 和 Francisco Herrera 等一众学者撰写或编辑,并于 2018 年出版。
与之前的书类似,这本书旨在让研究生和工程师快速了解不平衡数据集的机器学习领域。
这本书的目标读者是希望将不平衡学习技术应用于解决各种现实世界问题的开发人员和工程师,以及需要全面了解学习不平衡数据的技术、方法和工具的研究人员和学生。
— 第 viii 页,《从不平衡数据集中学习》,2018 年。
这本书读起来比之前的书更系统(例如,逐步完成一个项目),也更实用,而之前的书更偏向学术(特定方法或子领域)。如果预算允许,我建议两者都购买。
这本书的目录如下。
- 1. KDD 和数据科学导论
- 2. 不平衡分类基础
- 3. 性能指标
- 4. 成本敏感学习
- 5. 数据级别预处理方法
- 6. 算法级别方法
- 7. 集成学习
- 8. 多类别不平衡分类
- 9. 不平衡学习的降维
- 10. 数据内在特征
- 11. 从不平衡数据流中学习
- 12. 非经典不平衡分类问题
- 13. 大数据的不平衡分类
- 14. 不平衡分类的软件和库
应用预测建模
这是我最喜欢的应用机器学习手册之一,由 Max Kuhn 和 Kjell Johnson 撰写,专注于 R。
这本书出版于 2013 年,但其普遍性建议可能具有时效性。
- 应用预测建模, 2013.
尽管整本书都非常值得阅读,但其中有一章专门讨论不平衡分类问题。
- 第 16 章:严重类别不平衡的补救措施
本章的方法是针对“Caravan Policy Ownership”数据集的案例研究。作者通过这个案例来演示一套处理严重类别不平衡问题的实用技术。
本章是必读的,它提供了如何使用现代方法处理真实世界不平衡数据集的实际演示。
本章的各部分如下:
- 16.1 案例研究:预测 Caravan 保单所有权
- 16.2 类别不平衡的影响
- 16.3 模型调优
- 16.4 替代阈值
- 16.5 调整先验概率
- 16.6 不相等的案例权重
- 16.7 采样方法
- 16.8 成本敏感训练
- 16.9 计算
不平衡分类调查论文
机器学习方法在不平衡分类和相关问题及技术方面有数千篇出版物。
在本节中,我们不枚举该领域的最佳论文,而是看一下一些最佳的调查论文。
调查论文是指对该领域进行广泛概述,并定位该领域的技术以及它们之间可能如何关联的论文。它们旨在帮助该领域的新人,例如研究生和工程师,快速跟上进度。
作为一名从业者,阅读调查论文可能比浏览相关书籍更有效。
有许多优秀的调查论文可供选择;我推荐的最喜欢的如下:
- 从不平衡数据中学习:开放性挑战与未来方向,Bartosz Krawczyk,2016 年。
- 不平衡分布下预测建模的调查,Paula Branco、Luis Torgo 和 Rita Ribeiro,2015 年。
- 不平衡数据分类:一种回顾,Yanmin Sun、Andrew Wong、Mohamed Kamel,2009 年。
- 从不平衡数据中学习,Haibo He 和 Edwardo Garcia,2009 年。
我还推荐研究论文,这些论文针对一套标准的机器学习数据集演示了一种或多种标准技术。在这种情况下,这些技术旨在解决不平衡的类分布,而标准数据集则具有偏斜的类分布。
这些论文很快就能揭示哪些方法有效(或流行),以及哪些数据集可用作基准。
此类论文的一些例子包括:
- 对不平衡数据分类的深入研究:经验结果与使用数据内在特征的当前趋势, 2013.
- 一项关于几种用于平衡机器学习训练数据的平衡方法行为的研究, 2004.
不平衡分类的 Python 库
Python 已迅速成为应用机器学习的首选编程语言。
Scikit-Learn 库
Python 中机器学习的首选库是 scikit-learn,它提供了数据准备、机器学习算法和模型评估方案等技术。
Scikit-learn 是一个 Python 模块,集成了广泛的最新机器学习算法,用于中等规模的有监督和无监督问题。该软件包专注于通过通用的高级语言将机器学习带给非专业人士。
— Scikit-learn:Python 中的机器学习,2011 年。
虽然 scikit-learn 库并非围绕不平衡分类问题而设计,但它确实提供了一些用于处理不平衡数据集的工具,例如:
- 支持一系列指标,例如 ROC AUC 和精确率/召回率、F1 分数、Brier 分数等。
- 支持类别权重,例如决策树、SVM 等。
Imbalanced-Learn 库
一个与 scikit-learn 相关、专注于不平衡分类问题的项目称为 imbalanced-learn。
它提供了可与 scikit-learn 库结合使用的不平衡分类技术,从而允许库之间共享学习算法和模型评估技术。
imbalanced-learn 是一个开源 Python 工具箱,旨在提供广泛的方法来应对机器学习和模式识别中经常遇到的不平衡数据集问题。
— Imbalanced-learn:处理机器学习中不平衡数据集诅咒的 Python 工具箱,2016 年。
该库侧重于提供过采样和欠采样技术,以便在拟合给定机器学习模型之前使训练数据集的类别分布更加均衡。
有关 imbalanced-learn 的更多信息,请参阅:
- imbalanced-learn 项目,GitHub.
- imbalanced-learn 文档.
- Imbalanced-learn:处理机器学习中不平衡数据集诅咒的 Python 工具箱, 2016.
总结
在本教程中,您发现了可以用来开始学习不平衡分类的最佳资源。
具体来说,你学到了:
- 关于机器学习不平衡分类主题的最佳书籍。
- 介绍类别不平衡主题的最佳调查论文。
- 您可以使用最佳 Python 库来开发解决不平衡数据集的方案。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
很高兴能看到一个带代码的例子,因为这是我们每天都会遇到的一个问题。
谢谢。
是的,我安排了很多带代码的例子。
嗨
只是出于我的好奇,你已经读过所有这些书和论文了吗?
哈哈,是的。
我为我将在 2020 年 1 月发布的不平衡分类新书做了准备。
感谢分享这些关于类别不平衡学习的相关工作,我们期待您的新书,讲述如何用新策略来处理这个问题。
不客气。
感谢分享,这正是我想要的,我迫不及待地想看您即将发布的教程。
谢谢!
您有关于模糊逻辑分类器的教程吗?
目前还没有。
感谢分享,您能推荐一个与电信客户保留/潜在客户相关的公共数据集,以便我们使用所有这些技术进行尝试吗?
这会帮助您找到数据集
https://machinelearning.org.cn/faq/single-faq/where-can-i-get-a-dataset-on-___