今天推薦的是一個 github 項目,項目地址以下,主要是類別不平衡學習的論文、代碼、框架、庫等資源php
https://github.com/ZhiningLiu1998/awesome-imbalanced-learninghtml
類別不平衡(Class-imbalance),也被稱爲長尾問題(long-tail problem),指的是分類問題中數據集的類別數量並不一致,有的類別特別多,但有的類別特別少,而且這是實際應用裏很是常見的問題。例如,欺詐檢測,罕見藥物不良反應的預測,以及基因家族預測。由於類別不平衡的緣由就會致使預測不許確,下降了分類模型的性能。所以,不平衡學習(Imbalanced learning)的目標就是要解決類別不平衡問題,並從不平衡的數據中學習一個無偏模型。java
目錄以下所示:python
另外,帶有🉑 標記的是做者特別推薦的重要或者高質量的論文和框架。git
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 編寫,上手簡單
官網: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)
🉑 經典的工做
🉑 一篇系統的而且對現有方法詳細分類標準的綜述
綜述
🉑 最近深度學習方向關於類別不平衡問題的綜合性論文
困難樣本挖掘
損失函數工程
🉑 優雅的解法,影響力很高
🉑 有趣的想法:根據梯度分佈來協調樣本的貢獻
元學習
Learning to model the tail (NIPS 2017, 70+ citations) ,將元知識從分佈頭部的數據豐富的類轉移到尾部的數據貧乏的類;
Learning to reweight examples for robust deep learning [Code] (ICML 2018, 150+ citations) ,在深度神經網絡的梯度更新中隱式學習一個權重函數對樣本進行權重的調整。
🉑 經過元學習解決類別不平衡問題的表明性工做.
Meta-weight-net: Learning an explicit mapping for sample weighting [Code] (NIPS 2019) ,在深度神經網絡的梯度更新中,顯式學習一個權重函數(使用多層感知器做爲函數逼近器)來對樣本的權重進行調整;
Learning Data Manipulation for Augmentation and Weighting [Code] (NIPS 2019)
Learning to Balance: Bayesian Meta-Learning for Imbalanced and Out-of-distribution Tasks [Code] (ICLR 2020)
表示學習
課程學習
兩階段學習
網絡結構
過採樣
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+ 引用) ,安全級綜合少數類的過採樣技術;
SMOTE-IPF (2015, 180+ 引用) ,迭代分區過濾的 SMOTE
欠採樣
混合採樣
SMOTE-Tomek & SMOTE-ENN (2004, 2000+ 引用) [Code (SMOTE-Tomek)] [Code (SMOTE-ENN)] ,綜合少數過採樣技術和 Tomek 對壓縮近鄰/編輯近鄰的修改;
🉑普遍的實驗評估涉及10種不一樣的過/欠採樣方法。
SMOTE-RSB (2012, 210+ 引用) ,混合了使用 SMOTE 預處理和粗糙集合理論;
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+ 引用)
[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
其餘繼承方法
[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
另外,本人水平有限,因此對部分專業術語的翻譯可能並不正確,無法作到很是完美,請多多包涵,謝謝!
歡迎關注個人微信公衆號--算法猿的成長,或者掃描下方的二維碼,你們一塊兒交流,學習和進步!