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上有哪些比较好的计算机视觉/机器视觉的项目?

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

 

如果觉得不错,在看、转发就是对小编的一个支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XForum 里用 Filter 编程实现安全访问控制

J2EE/EJB 论坛 / XForum 里用 Filter 编程实现安全访问控制cinc 2003.03.11, 15个回复, 1745次浏览在 J2ee 里,实现安全有两种: 用声明实现安全,就是在 web.xml 里实现安全限制。 用编程实现安全,自己写代码…

进制转换,写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。 数据范围:保证结果在 1≤n≤2的31次方-1

题目:进制转换 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。 数据范围:保证结果在 1≤n≤2的31次方-1 代码实现: import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 p…

Github|类别不平衡学习资源(下)

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”总第 139 篇文章,本文大约 3600 字,阅读大约需要 10 分钟继续介绍类别不平衡学习资源,github 地址:https://github.com/ZhiningLiu1998/awes…

react学习(45)----react组件

定义组件最简单的方式就是编写 JavaScript 函数&#xff1a; function Welcome(props) {return <h1>Hello, {props.name}</h1>; } 该函数是一个有效的 React 组件&#xff0c;因为它接收唯一带有数据的 “props”&#xff08;代表属性&#xff09;对象与并返回一…

Github | 线稿自动上色

点击上方“算法猿的成长“&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶”总第 140 篇文章&#xff0c;本文大约 1500 字&#xff0c;阅读大约需要 5 分钟今天要介绍的是一个 Github 项目&#xff0c;项目地址如下&#xff0c;它实现了对线稿的自动上色功能&#…

react学习(46)----react渲染组件

const element <div />; 不过&#xff0c;React 元素也可以是用户自定义的组件&#xff1a; const element <Welcome name"Sara" />; 当 React 元素为用户自定义组件时&#xff0c;它会将 JSX 所接收的属性&#xff08;attributes&#xff09;以及子…

Microsoft好员工的十个标准

1、对自己所在公司或部门的产品具有起码的好奇心是极为重要的一点。你必须亲自使用该产品。对于身处计算机行业的人来说,这一点怎么强调都不为过。当然&#xff0c;这一点同样适用于其他知识密集型领域&#xff0c;因为在这些领域内技术与应用发展更新极快&#xff0c;对其技术…

如何在图片上添加文本信息

点击上方“算法猿的成长“&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶”总第 141 篇文章&#xff0c;本文大约 1500 字&#xff0c;阅读大约需要 5 分钟前言给图片添加文本信息是非常常见的需求&#xff0c;通常需要添加的文本信息分为中文文字或者是非中文的文…

react学习(47)----react中initialValue和value不能一起定义

<Row gutter{12}><Col span{12}><Form.Item label"活动开始时间">{getFieldDecorator(startTimeLong, {initialValue: popupByIdDetail.startTimeLong,rules: [{ required: true, message: 活动开始时间不能为空 }],})(<DatePickervalue{popupB…

Github|基于 Jittor 的 GAN 模型库

点击上方“算法猿的成长“&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶”总第 142 篇文章&#xff0c;本文大约 1300 字&#xff0c;阅读大约需要 5 分钟前言今天介绍一个 Github 项目---集成了 27 种 GAN 模型的 Jittor-GAN&#xff0c;项目地址&#xff1a;htt…

mongoDB分页的两种方法

mongoDB的分页查询是通过limit(),skip(),sort()这三个函数组合进行分页查询的 下面这个是我的测试数据 db.test.find().sort({"age":1}); 第一种方法 查询第一页的数据&#xff1a;db.test.find().sort({"age":1}).limit(2); 查询第二页的数据&#xff1a;…

react学习(48)--编辑回显用moment处理

<Row gutter{12}><Col span{12}><Form.Item label"活动结束时间">{getFieldDecorator(endTimeLong, {initialValue: [moment(popupByIdDetail.endTimeLong)],rules: [{ required: true, message: 活动结束时间不能为空 }],})(<DatePicker forma…

SPS用户管理的问题

当你在SPS中添加Active Diretory中的一个用户并给他授权后, 在Active Diretory中将该用户改名, 然后, 在SPS中就无法对刚才添加的用户进行操作, 删除、修改权限时&#xff0c;出现错误提示“Could not find user with corresponding SID in the domain. Check the spelling of…

22 款设计和可视化神经网络的工具

点击上方“算法猿的成长“&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶”总第 143 篇文章&#xff0c;本文大约 3000 字&#xff0c;阅读大约需要 10 分钟前言深度学习领域&#xff0c;最常见的就是各种网络模型&#xff0c;那么在写论文或者文章&#xff0c;介绍…

vim tutor summary

在终端输入vim tutor是最好的。。以下是我学习里边的课程的小总结&#xff1a; 经典的不多说&#xff1a; q! 退出      wq 退出并保存 <Esc> i A 编辑模式等的转换 (非编辑模式。编辑模式的话不就输入字符了~~囧~~&#xff09; 移动光标(move) 上下左右&#…

react学习(49)--参数判定

<div style{{ textAlign: center }}><Button type"primary" onClick{this.handleSubmit(false)} style{{ marginRight: 10px }}>保存</Button><Button oncllck{this.handleCancel} style{{ marginRight: 10px }}>取消</Button><But…

最近关注的一些东西

我现任职质量经理&#xff0c;负责一些质量和测试工作。下面是我关心的一些内容&#xff1a;工作相关软件质量 开发过程(RUP,XP)软件测试配置管理需求管理报表开发 个人兴趣SpringFramework设计模式PHPAsp.netwiki学习方法软件设计行进中的互联网赚钱的机会 2005.2.28