类别不平衡学习资料推荐

微信扫一扫,分享到朋友圈

类别不平衡学习资料推荐

今天推荐的是一个 github 项目,项目地址如下,主要是类别不平衡学习的论文、代码、框架、库等资源

https://github.com/ZhiningLiu1998/awesome-imbalanced-learning

前言

类别不平衡(Class-imbalance),也被称为长尾问题(long-tail problem),指的是分类问题中数据集的类别数量并不一致,有的类别特别多,但有的类别特别少,并且这是实际应用里非常常见的问题。例如,欺诈检测,罕见药物不良反应的预测,以及基因家族预测。因为类别不平衡的原因就会导致预测不准确,降低了分类模型的性能。因此,不平衡学习(Imbalanced learning)的目标就是要解决类别不平衡问题,并从不平衡的数据中学习一个无偏模型。

目录如下所示:

  • 代码库/框架

  • 论文

    • 综述

    • 深度学习

    • 数据重采样(Data resampling)

    • 成本敏感学习(Cost-sensitive Learning)

    • 集成学习(Ensemble Learning)

    • 异常检测

  • 其他

    • 不平衡数据库

    • 其他的资源

另外,带有:accept: 标记的是作者特别推荐的重要或者高质量的论文和框架。

代码库/框架

Python

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 库的一部分。

:accept: python 编写,上手简单

R

  • 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)

  • caret

官网:https://cran.r-project.org/web/packages/caret/index.html

文档:http://topepo.github.io/caret/index.html

Github:https://github.com/topepo/caret

实现了随机欠采样和过采样方法

  • ROSE

官网:https://cran.r-project.org/web/packages/ROSE/index.html

文档:https://www.rdocumentation.org/packages/ROSE/versions/0.0-3

实现了随机过采样方法

  • DMwR

官网: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),即合成少数过采样技术

Java

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 提供了一个简单的图形界面,可以基于数据流程来设计不同数据集的实验,以及不同智能计算的算法(特别关注进化算法),从而接触到算法的行为。该工具包含了很多广泛应用的不平衡学习方法,比如过采样和欠采样,损失敏感学习,算法修正以及集成学习方法。

:accept: 包含多种算法,比如经典分类算法、回归算法以及预处理算法

Scalar

undersampling

官网:https://github.com/NestorRV/undersampling

文档:https://nestorrv.github.io/

Github:https://github.com/NestorRV/undersampling

实现了欠采样方法以及集成方法变形的方法。

Julia

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)

论文

  • Learning from imbalanced data ,2009 年的论文,有 4700+的引用,非常经典的论文。主要是系统性的回顾了流行的解决方法、评估标准以及未来研究中需要面临的挑战和问题(2009 年的时候);

:accept: 经典的工作

:accept: 一篇系统的并且对现有方法详细分类标准的综述

深度学习

数据重采样

  • 过采样

    • ROS [ Code ] – 随机过采样

    • SMOTE [ Code ] (2002, 9800+ 引用) ,合成少数类的过采样技术(Synthetic Minority Over-sampling TEchnique)

      :accept: 经典的工作

    • Borderline-SMOTE [ Code ] (2005, 1400+ 引用) ,边界合成少数类的过采样技术;

    • ADASYN [ Code ] (2008, 1100+ 引用) ,自适应合成采样(ADAptive SYNthetic Sampling);

    • SPIDER [ Code (Java) ] (2008, 150+ 引用) ,不平衡数据的选择性预处理;

    • Safe-Level-SMOTE [ Code (Java) ] (2009, 370+ 引用) ,安全级综合少数类的过采样技术;

    • SVM-SMOTE [ Code ] (2009, 120+ 引用) ,基于 SVM 的 SMOTE

    • SMOTE-IPF (2015, 180+ 引用) ,迭代分区过滤的 SMOTE

  • 欠采样

    • RUS [ Code ],随机欠采样;

    • CNN [ Code ] (1968, 2100+ 引用) ,浓缩的最近邻(Condensed Nearest Neighbor);

    • ENN [ Code ] (1972, 1500+ citations) ,可编辑的浓缩的最近邻(Edited Condensed Nearest Neighbor);

    • TomekLink [ Code ] (1976, 870+ citations) ,Tomek 对浓缩的最近邻的修正方法;

    • NCR [ Code ] (2001, 500+ 引用) , 近邻的清洗规则;

    • NearMiss-1 & 2 & 3 [ Code ] (2003, 420+ 引用) ,几种解决不平衡数据分布的 KNN 方法

    • CNN with TomekLink [ Code (Java) ] (2004, 2000+ 引用) ,结合了浓缩的最近邻和 TomekLink 方法;

    • OSS [ Code ] (2007, 2100+ 引用):单边选择(One Side Selection);

    • EUS (2009, 290+ 引用) :进化的欠采样(Evolutionary Under-sampling);

    • IHT [ Code ] (2014, 130+ 引用) :实例难度阈值(Instance Hardness Threshold);

  • 混合采样

    • SMOTE-Tomek & SMOTE-ENN (2004, 2000+ 引用) [ Code (SMOTE-Tomek) ] [ Code (SMOTE-ENN) ] ,综合少数过采样技术和 Tomek 对压缩近邻/编辑近邻的修改;

      :accept:广泛的实验评估涉及10种不同的过/欠采样方法。

    • SMOTE-RSB (2012, 210+ 引用) ,混合了使用 SMOTE 预处理和粗糙集合理论;

成本敏感学习

  • CSC4.5 [ Code (Java) ] (2002, 420+ 引用) ,一个实际加权方法来引起成本敏感树;

  • CSSVM [ Code (Java) ] (2008, 710+ 引用) ,用于高度不平衡分类的成本敏感 SVMs;

  • [CSNN](https://sci2s.ugr.es/keel/pdf/algorithm/articulo/2006 – IEEE_TKDE – Zhou_Liu.pdf) [ Code (Java) ] (2005, 950+ 引用) ,基于解决类别不平衡问题的方法来训练一个成本敏感的神经网络;

集成学习

  • Boosting-based

    • [AdaBoost](https://sci2s.ugr.es/keel/pdf/algorithm/articulo/1997-JCSS-Schapire-A Decision-Theoretic Generalization of On-Line Learning (AdaBoost).pdf) [ Code ] (1995, 18700+ 引用)

    • DataBoost (2004, 570+ 引用)

    • SMOTEBoost [ Code ] (2003, 1100+ 引用)

      :accept: 经典的工作

    • [MSMOTEBoost](https://sci2s.ugr.es/keel/pdf/algorithm/articulo/2011-IEEE TSMC partC- GalarFdezBarrenecheaBustinceHerrera.pdf) (2011, 1300+ 引用)

    • RAMOBoost [ Code ] (2010, 140+ 引用)

    • [RUSBoost](https://sci2s.ugr.es/keel/pdf/algorithm/articulo/2010-IEEE TSMCpartA-RUSBoost A Hybrid Approach to Alleviating Class Imbalance.pdf) [ Code ] (2009, 850+ 引用)

      :accept: 经典的工作

    • AdaBoostNC (2012, 350+ 引用)

    • EUSBoost (2013, 210+ 引用)

  • bagging-based

    • [Bagging](https://sci2s.ugr.es/keel/pdf/algorithm/articulo/1996-ML-Breiman-Bagging Predictors.pdf) [ Code ] (1996, 23100+ 引用) ,Bagging 预测器;

    • [OverBagging & UnderOverBagging & SMOTEBagging & MSMOTEBagging](https://sci2s.ugr.es/keel/pdf/algorithm/congreso/2009-IEEE CIDM-WangYao.pdf) [ Code (SMOTEBagging) ] (2009, 290+ 引用) ,基于 Bagging 的随机过采样/随机混合重采样/ SMOTE / 修改版 SMOTE;

    • [UnderBagging](https://sci2s.ugr.es/keel/pdf/algorithm/articulo/2003-PAA- New Applications of Ensembles of Classifiers.pdf) [ Code ] (2003, 170+ 引用) ,基于 Bagging 的随机欠采样;

  • 其他继承方法

    • [EasyEnsemble & BalanceCascade](https://sci2s.ugr.es/keel/pdf/algorithm/articulo/2009-IEEE TSMCpartB Exploratory Undersampling for Class Imbalance Learning.pdf) [ Code (EasyEnsemble) ] [ Code (BalanceCascade) ] (2008, 1300+ 引用) , 使用 RUS 进行并行集成训练(EasyEnsemble) /使用 RUS 进行级联集成训练,同时迭代地删除分类很好的样本(BalanceCascade);

      :accept: 简单但有效的方法

    • Self-paced Ensemble [ Code ] (ICDE 2020) ,用自适应协调分类困难训练不平衡数据的有效集成;

      :accept: 高性能和计算效率高,广泛适用于不同的分类器。

异常检测

其他

不平衡数据集

ID Name Repository & Target Ratio #S #F
1 ecoli UCI, target: imU 8.6:1 336 7
2 optical_digits UCI, target: 8 9.1:1 5,620 64
3 satimage UCI, target: 4 9.3:1 6,435 36
4 pen_digits UCI, target: 5 9.4:1 10,992 16
5 abalone UCI, target: 7 9.7:1 4,177 10
6 sick_euthyroid UCI, target: sick euthyroid 9.8:1 3,163 42
7 spectrometer UCI, target: > =44 11:1 531 93
8 car_eval_34 UCI, target: good, v good 12:1 1,728 21
9 isolet UCI, target: A, B 12:1 7,797 617
10 us_crime UCI, target: >0.65 12:1 1,994 100
11 yeast_ml8 LIBSVM, target: 8 13:1 2,417 103
12 scene LIBSVM, target: >one label 13:1 2,407 294
13 libras_move UCI, target: 1 14:1 360 90
14 thyroid_sick UCI, target: sick 15:1 3,772 52
15 coil_2000 KDD, CoIL, target: minority 16:1 9,822 85
16 arrhythmia UCI, target: 06 17:1 452 278
17 solar_flare_m0 UCI, target: M->0 19:1 1,389 32
18 oil UCI, target: minority 22:1 937 49
19 car_eval_4 UCI, target: vgood 26:1 1,728 21
20 wine_quality UCI, wine, target: <=4 26:1 4,898 11
21 letter_img UCI, target: Z 26:1 20,000 16
22 yeast_me2 UCI, target: ME2 28:1 1,484 8
23 webpage LIBSVM, w7a, target: minority 33:1 34,780 300
24 ozone_level UCI, ozone, data 34:1 2,536 72
25 mammography UCI, target: minority 42:1 11,183 6
26 protein_homo KDD CUP 2004, minority 111:1 145,751 74
27 abalone_19 UCI, target: 19 130:1 4,177 10

上述数据集的集合来自 imblearn.datasets.fetch_datasets

其他资源

最后,github 地址是:

https://github.com/ZhiningLiu1998/awesome-imbalanced-learning

另外,本人水平有限,所以对部分专业术语的翻译可能并不正确,没法做到非常完美,请多多包涵,谢谢!

欢迎关注我的微信公众号– 算法猿的成长 ,或者扫描下方的二维码,大家一起交流,学习和进步!

Coaching中的版本思维

上一篇

殿堂级经典游戏40年后重生 NVIDIA AI再现初代《吃豆人》

下一篇

你也可能喜欢

类别不平衡学习资料推荐

长按储存图像,分享给朋友