Github|类别不平衡学习资源(上)
點擊上方“算法猿的成長“,關注公眾號,選擇加“星標“或“置頂”
總第 138 篇文章,本文大約 5400?字,閱讀大約需要 15?分鐘
今天推薦的是一個 github 項目,項目地址如下,主要是類別不平衡學習的論文、代碼、框架、庫等資源
https://github.com/ZhiningLiu1998/awesome-imbalanced-learning
本文首發于我的知乎專欄:https://zhuanlan.zhihu.com/p/142692473,閱讀會更加方便,可以直接點擊鏈接,可以點擊文章底部”閱讀原文“直接跳轉。
前言
類別不平衡(Class-imbalance),也被稱為長尾問題(long-tail problem),指的是分類問題中數據集的類別數量并不一致,有的類別特別多,但有的類別特別少,并且這是實際應用里非常常見的問題。例如,欺詐檢測,罕見藥物不良反應的預測,以及基因家族預測。因為類別不平衡的原因就會導致預測不準確,降低了分類模型的性能。因此,不平衡學習(Imbalanced learning)的目標就是要解決類別不平衡問題,并從不平衡的數據中學習一個無偏模型。
目錄如下所示:
代碼庫/框架
Python
R
Java
Scalar
Julia
論文
綜述
深度學習
數據重采樣(Data resampling)
成本敏感學習(Cost-sensitive Learning)
集成學習(Ensemble Learning)
異常檢測
其他
不平衡數據庫
其他的資源
另外,帶有???? 標記的是作者特別推薦的重要或者高質量的論文和框架。
(ps. 文章太長,所以分成上下兩篇,更方便閱讀)
代碼庫/框架
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 庫的一部分。
???? 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 年的時候);
???? 經典的工作
Learning from imbalanced data: open challenges and future directions(2016, 400+ 引用,這篇論文主要關注不平衡學習的開放性問題和挑戰,比如極端類別不平衡,處理在線/流學習的不平衡問題,多類別不平衡學習以及半監督或無監督的不平衡學習。
Learning from class-imbalanced data: Review of methods and applications(2017(400+ 引用),一篇非常詳細的不平衡學習方法和應用的綜述論文,總共包含了 527 篇相關論文。它提供了幾種現有方法詳細的分類標準,同時也是最近研究領域的趨勢。
???? 一篇系統的并且對現有方法詳細分類標準的綜述
深度學習
綜述
A systematic study of the class imbalance problem in convolutional neural networks (2018, 330+ 引用)
Survey on deep learning with class imbalance (2019, 50+ 引用)
???? 最近深度學習方向關于類別不平衡問題的綜合性論文
困難樣本挖掘
Training region-based object detectors with online hard example mining (CVPR 2016, 840+ 引用),在神經網絡訓練的最后階段,僅對”困難樣本“進行梯度的反向傳播(比如,loss 數值很大的樣本)
損失函數工程
Training deep neural networks on imbalanced data sets (IJCNN 2016, 110+ 引用) ,均方根誤差可以從大多數類和少數類中同等的捕獲分類錯誤
Focal loss for dense object detection [Code (Unofficial)](ICCV 2017, 2600+ 引用) ,一個集中訓練困難樣本稀疏集合的均勻損失函數,可以防止大量容易在訓練中壓倒檢測器的簡單負樣本。
???? 優雅的解法,影響力很高
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+ 引用) ,一種簡單而通用的基于有效樣本數量的類權重調整機制。
元學習
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)
表示學習
Learning deep representation for imbalanced classification (CVPR 2016, 220+ 引用)
Supervised Class Distribution Learning for GANs-Based Imbalanced Classification (ICDM 2019)
Decoupling Representation and Classifier for Long-tailed Recognition (ICLR 2020)
課程學習
Dynamic Curriculum Learning for Imbalanced Data Classification (ICCV 2019)
兩階段學習
Brain tumor segmentation with deep neural networks (2017, 1200+ 引用) ,先在類別平衡的數據集進行預訓練,然后在原始的類別不平衡數據集上進行微調網絡 softmax 之前的最后一層輸出層;
網絡結構
BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition (CVPR 2020)
另外,本人水平有限,所以對部分專業術語的翻譯可能并不正確,沒法做到非常完美,請多多包涵,謝謝!
下一篇將繼續介紹剩余的論文以及不平衡數據庫。
精選AI文章
1.??2020年計算機視覺學習指南
2.?是選擇Keras還是PyTorch開始你的深度學習之旅呢?
3.?編寫高效的PyTorch代碼技巧(上)
4.?編寫高效的PyTorch代碼技巧(下)
5.?深度學習算法簡要綜述(上)
6.?深度學習算法簡要綜述(下)
7.?10個實用的機器學習建議
8.?實戰|手把手教你訓練一個基于Keras的多標簽圖像分類器
精選python文章
1.??python數據模型
2.?python版代碼整潔之道
3.?快速入門 Jupyter notebook
4.?Jupyter 進階教程
5.?10個高效的pandas技巧
精選教程資源文章
1.?[資源分享] TensorFlow 官方中文版教程來了
2.?[資源]推薦一些Python書籍和教程,入門和進階的都有!
3.?[Github項目推薦] 推薦三個助你更好利用Github的工具
4.?Github上的各大高校資料以及國外公開課視頻
5.?GitHub上有哪些比較好的計算機視覺/機器視覺的項目?
歡迎關注我的微信公眾號--算法猿的成長,或者掃描下方的二維碼,大家一起交流,學習和進步!
?如果覺得不錯,在看、轉發就是對小編的一個支持!
總結
以上是生活随笔為你收集整理的Github|类别不平衡学习资源(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flink 异步IO
- 下一篇: 一篇文章,了解清楚路由器的各种组网