今天推荐的是一个 github 项目,项目地址如下,主要是类别不平衡学习的论文、代码、框架、库等资源
https://github.com/ZhiningLiu1998/awesome-imbalanced-learning
本文首发于我的知乎专栏:https://zhuanlan.zhihu.com/p/142692473
类别不平衡(Class-imbalance),也被称为长尾问题(long-tail problem),指的是分类问题中数据集的类别数量并不一致,有的类别特别多,但有的类别特别少,并且这是实际应用里非常常见的问题。例如,欺诈检测,罕见药物不良反应的预测,以及基因家族预测。因为类别不平衡的原因就会导致预测不准确,降低了分类模型的性能。因此,不平衡学习(Imbalanced learning)的目标就是要解决类别不平衡问题,并从不平衡的数据中学习一个无偏模型。
目录如下所示:
另外,带有? 标记的是作者特别推荐的重要或者高质量的论文和框架。
(ps. 文章太长,所以分成上下两篇,更方便阅读)
imbalanced-learn
官网:https://imbalanced-learn.org/stable/
Github:https://github.com/scikit-learn-contrib/imbalanced-learn
官方文档:https://imbalanced-learn.readthedocs.io/en/stable/
论文地址:http://10.187.70.34/www.jmlr.org/papers/volume18/16-365/16-365.pdf
这个库是一个 python 编写的提供了一些常用于数据集的重采样技术,它适配 scikit-learn 库,并且也是 scikit-learn-contrib 库的一部分。
? python 编写,上手简单
官网:https://smote-variants.readthedocs.io/en/latest/
文档:[(https://smote-variants.readthedocs.io/en/latest/
Github:https://github.com/analyticalmindsltd/smote_variants)
集合了 85 种用于不平衡学习的过采样技术,包括多类别的过采样和模型选择特征方法(支持 R 和 Julia)
官网:https://cran.r-project.org/web/packages/caret/index.html
文档:http://topepo.github.io/caret/index.html
Github:https://github.com/topepo/caret
实现了随机欠采样和过采样方法
官网:https://cran.r-project.org/web/packages/ROSE/index.html
文档:https://www.rdocumentation.org/packages/ROSE/versions/0.0-3
实现了随机过采样方法
官网:https://cran.r-project.org/web/packages/DMwR/index.html
文档:https://www.rdocumentation.org/packages/DMwR/versions/0.4.1
实现了 SMOTE(Synthetic Minority Over-sampling TEchnique),即合成少数过采样技术
KEEL
官网:https://sci2s.ugr.es/keel/description.php
Github:https://github.com/SCI2SUGR/KEEL
论文:https://sci2s.ugr.es/sites/default/files/ficherosPublicaciones/0758_Alcalaetal-SoftComputing-Keel1.0.pdf
KEEL 提供了一个简单的图形界面,可以基于数据流程来设计不同数据集的实验,以及不同智能计算的算法(特别关注进化算法),从而接触到算法的行为。该工具包含了很多广泛应用的不平衡学习方法,比如过采样和欠采样,损失敏感学习,算法修正以及集成学习方法。
? 包含多种算法,比如经典分类算法、回归算法以及预处理算法
undersampling
官网:https://github.com/NestorRV/undersampling
文档:https://nestorrv.github.io/
Github:https://github.com/NestorRV/undersampling
实现了欠采样方法以及集成方法变形的方法。
smote_variants官网:https://smote-variants.readthedocs.io/en/latest/ 文档:https://smote-variants.readthedocs.io/en/latest/ Github:https://github.com/analyticalmindsltd/smote_variants
集合了 85 种用于不平衡学习的过采样技术,包括多类别的过采样和模型选择特征方法(支持 R 和 Julia)
? 经典的工作
? 一篇系统的并且对现有方法详细分类标准的综述
? 最近深度学习方向关于类别不平衡问题的综合性论文
? 优雅的解法,影响力很高
- Deep imbalanced attribute classification using visual attention aggregation [Code] (ECCV 2018, 30+ 引用)
- Imbalanced deep learning by minority class incremental rectification (TPAMI 2018, 60+ 引用) ,介绍了一个类别修正损失,它是在迭代的分批学习过程中,通过发现少数类的稀疏采样边界来最小化多数类的优势效应;
- Learning Imbalanced Datasets with Label-Distribution-Aware Margin Loss [Code] (NIPS 2019, 10+ 引用) ,一种理论上有原则的标签分布感知边际损失(LDAM),其动机是最小化基于边际的泛化边界。
- Gradient harmonized single-stage detector [Code] (AAAI 2019, 40+ 引用) ,相比 Focal loss 只会降低”容易“的负样本的权重,GHM 还可以降低一些可能是异常值的”困难“样本的权重。
? 有趣的想法:根据梯度分布来协调样本的贡献
- Class-Balanced Loss Based on Effective Number of Samples (CVPR 2019, 70+ 引用) ,一种简单而通用的基于有效样本数量的类权重调整机制。
另外,本人水平有限,所以对部分专业术语的翻译可能并不正确,没法做到非常完美,请多多包涵,谢谢!
下一篇将继续介绍剩余的论文以及不平衡数据库。