類別不平衡學習資料推薦

今天推薦的是一個 github 項目,項目地址以下,主要是類別不平衡學習的論文、代碼、框架、庫等資源php

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

前言

類別不平衡(Class-imbalance),也被稱爲長尾問題(long-tail problem),指的是分類問題中數據集的類別數量並不一致,有的類別特別多,但有的類別特別少,而且這是實際應用裏很是常見的問題。例如,欺詐檢測,罕見藥物不良反應的預測,以及基因家族預測。由於類別不平衡的緣由就會致使預測不許確,下降了分類模型的性能。所以,不平衡學習(Imbalanced learning)的目標就是要解決類別不平衡問題,並從不平衡的數據中學習一個無偏模型。java

目錄以下所示:python

  • 代碼庫/框架
    • Python
    • R
    • Java
    • Scalar
    • Julia
  • 論文
    • 綜述
    • 深度學習
    • 數據重採樣(Data resampling)
    • 成本敏感學習(Cost-sensitive Learning)
    • 集成學習(Ensemble Learning)
    • 異常檢測
  • 其餘
    • 不平衡數據庫
    • 其餘的資源

另外,帶有🉑 標記的是做者特別推薦的重要或者高質量的論文和框架。git


代碼庫/框架

Python

imbalanced-learngithub

官網:https://imbalanced-learn.org/stable/web

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.pdfapi

這個庫是一個 python 編寫的提供了一些經常使用於數據集的重採樣技術,它適配 scikit-learn 庫,而且也是 scikit-learn-contrib 庫的一部分。

🉑 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 提供了一個簡單的圖形界面,能夠基於數據流程來設計不一樣數據集的實驗,以及不一樣智能計算的算法(特別關注進化算法),從而接觸到算法的行爲。該工具包含了不少普遍應用的不平衡學習方法,好比過採樣和欠採樣,損失敏感學習,算法修正以及集成學習方法。

🉑 包含多種算法,好比經典分類算法、迴歸算法以及預處理算法

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 年的時候);

🉑 經典的工做

🉑 一篇系統的而且對現有方法詳細分類標準的綜述

深度學習

數據重採樣

  • 過採樣

    • ROS [Code] - 隨機過採樣

    • SMOTE [Code] (2002, 9800+ 引用) ,合成少數類的過採樣技術(Synthetic Minority Over-sampling TEchnique)

      🉑 經典的工做

    • 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);
  • 混合採樣

成本敏感學習

  • 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+ 引用)

      🉑 經典的工做

    • [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+ 引用)

      🉑 經典的工做

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

      🉑 簡單但有效的方法

    • Self-paced Ensemble [Code] (ICDE 2020) ,用自適應協調分類困難訓練不平衡數據的有效集成;

      🉑 高性能和計算效率高,普遍適用於不一樣的分類器。

異常檢測


其餘

不平衡數據集

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

另外,本人水平有限,因此對部分專業術語的翻譯可能並不正確,無法作到很是完美,請多多包涵,謝謝!


歡迎關注個人微信公衆號--算法猿的成長,或者掃描下方的二維碼,你們一塊兒交流,學習和進步!

相關文章
相關標籤/搜索