不平衡/长尾问题/重采样

Class-Balanced Loss Based on Effective Number of Samples
Class-Balanced Loss Based on Effective Number of Samples - 1 - 论文学习
Class-Balanced Loss Based on Effective Number of Samples - 2 - 代码学习
(源码:https://github.com/vandit15/Class-balanced-loss-pytorch)

重采样系列

SMOTE算法(用于低维数据,不可直接用于图像)

DeepSMOTE— Fusing Deep Learning and SMOTE for imbalanced data(可用于图像,2023 IEEE TRANSACTIONS ON NEURAL NETWORKS AND LEARNING SYSTEMS)

这篇论文的核心内容是介绍了一种名为DeepSMOTE的新型过采样算法,该算法专门针对深度学习模型处理不平衡数据问题而设计。DeepSMOTE结合了深度学习和经典的SMOTE(Synthetic Minority Over-sampling Technique)算法,通过生成高质量的少数类样本来增强深度学习模型的性能,并平衡训练集。
DeepSMOTE由三个主要部分组成:编码器/解码器框架、基于SMOTE的过采样方法,以及一个增强了惩罚项的专用损失函数。
与GAN的比较:与基于生成对抗网络(GAN)的过采样方法相比,DeepSMOTE不需要鉴别器,并且能够生成既适合视觉检查又信息丰富的高质量人工图像。
以下是 DeepSMOTE 生成新图像的具体步骤和细节:

  1. 编码器/解码器框架:DeepSMOTE 的核心是一个基于深度卷积生成对抗网络(DCGAN)架构的编码器/解码器框架。这个框架首先对输入图像进行编码,将其转换为低维特征空间的表示,然后再解码回原始图像。
  2. 训练过程
  • 使用不平衡数据集对编码器/解码器进行训练,计算重构损失(Reconstruction Loss)。
  • 在训练过程中,随机选择一个类别(c),然后从该类别中随机抽取等于批量大小的样本集。
  • 将这些样本编码为低维特征,然后通过解码器重建。在重建过程中,改变重建图像的顺序,以引入编码/解码过程中的变异性。
  1. 增强的损失函数:DeepSMOTE 的损失函数除了包含重构损失外,还包含一个基于嵌入图像重建的惩罚项(Penalty Term)。这个惩罚项通过改变编码图像的重建顺序来生成,从而在不使用 SMOTE 的情况下模拟 SMOTE 的方法。
  2. SMOTE-based 过采样:在训练完成后,使用 SMOTE 算法在编码的特征空间中生成新的少数类样本。SMOTE 通过选择少数类样本和其最近邻样本,然后生成介于两者之间的新样本。
  3. 图像生成:生成的新特征通过解码器解码成图像,这些图像可以增加深度学习分类器的训练集。
  4. 无判别器训练:与基于 GAN 的方法不同,DeepSMOTE 在生成新样本的过程中不需要判别器。这是因为它使用了一个惩罚函数来确保训练数据的有效使用。
  5. 高质量图像生成:DeepSMOTE 生成的人工图像既适合视觉检查,又信息丰富,这有助于有效平衡类别并减轻不平衡分布的影响。
  6. 实验验证:通过在多个图像基准数据集上的广泛实验,验证了 DeepSMOTE 与现有的像素级过采样算法和基于 GAN 的方法相比的性能。
  7. 公开代码:DeepSMOTE 的代码公开可用,可以在 GitHub 上找到相关实现。

Generative Adversarial Minority Oversampling(2019 cvpr)

这篇论文的核心内容是提出了一种名为Generative Adversarial Minority Oversampling (GAMO)的新方法,用于处理深度学习系统中的类别不平衡问题。

  1. 问题背景:类别不平衡是深度学习系统中一个长期存在的问题,尤其是在需要端到端学习的场景中。

  2. GAMO框架:提出了一个三方对抗游戏,包括一个凸生成器(convex generator)、一个多类分类器网络(multi-class classifier network),以及一个真实/伪造判别器(real/fake discriminator)。凸生成器从少数类中生成新样本,这些样本是现有实例的凸组合,目的是欺骗判别器和分类器,使它们错误分类生成的样本。

  3. 生成器和判别器:凸生成器G通过交替训练与分类器网络M一起生成样本,而判别器D则进一步确保G生成的样本遵循少数类的分布,并且不会过多地渗透到多数类区域。

  4. 理论贡献

    • GAMO通过一个三方对抗游戏来生成少数类样本,这与现有的深度过采样方案不同。
    • 与现有的对抗性分类方案不同,GAMO中的凸生成器G试图欺骗分类器M和判别器D。
    • 提出了一种名为GAMO2pix的技术,可以从GAMO生成的分布式表示空间中的合成实例生成逼真的图像。
  5. 实验:在多个类别不平衡的图像数据集上进行了广泛的实验,证明了GAMO的有效性。

  6. 结论和未来工作:GAMO是一个有效的端到端过采样技术,用于处理深度学习框架中的类别不平衡问题。未来的工作可能包括改进GAMO2pix生成的图像质量,以及探索GAMO在GANs中的边界扭曲处理和新类别学习方面的有效性。

论文还提到了对GAMO框架的实现代码和数据集的访问链接:https://github.com/SankhaSubhra/GAMO。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于目标值是连续数值的回归模型,可以使用基于重采样的方法来实现目标值的分布上的平衡。其中一种常用的方法是SMOTE算法。 SMOTE算法通过合成新的少数类样本来平衡不同类别之间的样本数量。具体地,它通过在少数类样本之间进行插值来生成新的合成样本。这些新的样本是通过对少数类样本的随机选择,以及在少数类样本之间随机选择的近邻点之间进行线性插值而生成的。 下面是一个使用SMOTE算法对目标值分布进行平衡的Python实现代码示例: ``` python from imblearn.over_sampling import SMOTE from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression # 加载数据 X, y = load_data() # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 使用SMOTE算法对训练集进行过采样 smote = SMOTE(random_state=42) X_train_resampled, y_train_resampled = smote.fit_resample(X_train, y_train) # 训练线性回归模型 model = LinearRegression() model.fit(X_train_resampled, y_train_resampled) # 在测试集上进行预测 y_pred = model.predict(X_test) # 计算模型性能指标 performance = calculate_performance(y_test, y_pred) ``` 上述代码中,使用了imblearn库中的SMOTE类对训练集进行过采样,并使用sklearn库中的LinearRegression类构建线性回归模型,最后计算了模型在测试集上的性能指标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值