【深度学习】处理不平衡样本

Introduction

不平衡样本:

训练样本中 各类别间 数量差距较大。

易导致过拟合,影响在 极端测试集 (量少类样本居多) 上的 泛化能力

对不平衡样本的处理手段主要分为两大类:数据层面 (简单粗暴)算法层面 (复杂)

Note:
为了简明扼要,以下称 量少的类别 为 量少类,反之亦然。

数据层面

1. 数据重采样

上采样下采样
使用情况数据不足时数据充足 (支撑得起你的浪费)
数据集变化增加间接减少(量大类被截流了)
具体手段大量复制量少类样本;数据扩充批处理训练时,控制从量大类取的图像数量
风险过拟合

2. 类别平衡采样

通过设计 样本列表 来实现平衡采样。

算法层面

在目标函数中,增加 量少类 样本 被错分损失值

1. 基于代价敏感矩阵的代价敏感

利用 K × K K \times K K×K矩阵 C C C 对不同样本类别施加错分惩罚。

2. 基于代价敏感向量的代价敏感

每个样本 都具有自己的 代价敏感矩阵。一旦这样些代价敏感矩阵相同,则该方法 退化 为“基于代价敏感矩阵的代价敏感向量”。

Example:

  • Focal Loss
    focal loss 的出现,是一个伟大的里程碑。它的出现,直接将类别不平衡处理从原来繁杂的人工时代进化到了 纯计算时代 。管你类别再不平衡,只需一个简单的公式,统统搞定:
    F L ( p t ) = − ( 1 − p t ) γ log ⁡ ( p t ) FL(p_t)=-(1-p_t)^\gamma\log(p_t) FL(pt)=(1pt)γlog(pt)

[1] Focal Loss for Dense Object Detection

### 关于深度学习中滚动轴承故障诊断的样本平衡解决方案 在处理滚动轴承故障诊断中的样本平衡问题时,一种有效的方法是采用数据增强技术。具体而言,可以通过生成对抗网络(GAN)及其变体来生成更多的故障样本,从而缓解样本平衡带来的影响[^1]。 #### 基于 GAN 的数据增强方法 为了应对样本足的问题,研究者提出了基于 Wasserstein-GAN(WGAN)的数据增强框架——带梯度惩罚的并行分类 WGAN(PCWGAN-GP)。该方法的核心在于通过引入健康样本作为输入,利用 PCWGAN-GP 生成具有高相似性的故障样本来扩展数据集。这种方法的优势体现在以下几个方面: 1. **上下文注意力机制** 在鉴别器前加入上下文注意块,能够依据可分性损失为输入的所有频谱线分配权重,从而使生成的样本更加贴近实际分布。 2. **皮尔逊距离损失** 添加皮尔逊距离损失有助于缩小生成样本与真实样本间的差距,同时增大生成样本与其他类别样本的距离,进一步提升生成样本的质量和区分能力。 3. **包络谱作为输入** 使用希尔伯特变换(Hilbert Transform, HT)和快速傅里叶变换(Fast Fourier Transform, FFT)提取信号的包络谱特征,并以此作为 GAN 输入。相比原始时间序列信号,这种表示方式更易于捕捉机械部件的关键特性。 #### SMOTE 方法的应用 除了基于 GAN 的高级数据增强策略外,SMOTE(Synthetic Minority Over-sampling Technique)也是一种广泛使用的解决样本平衡的技术。其基本原理是对少数类样本进行插值操作,在特征空间中合成新的实例。然而,对于复杂的工业场景(如滚动轴承故障),单纯依赖 SMOTE 可能无法充分反映真实的物理过程。因此,通常建议将 SMOTE 和其他领域特定的知识相结合,例如结合振动信号分析的结果来进行更为精细的采样[^2]。 #### 实验验证 为了评估上述方法的有效性,研究人员还设计了一系列对比试验,包括但限于: - 轴承数据集上的性能比较; - 同参数设置下的消融实验测试。 这些实验证明了所提方法能够在一定程度上改善因样本均衡而导致的模型泛化能力下降问题。 ```python import numpy as np from sklearn.datasets import make_classification from imblearn.over_sampling import SMOTE # 构造模拟平衡数据集 X, y = make_classification(n_samples=1000, n_features=20, weights=[0.9], flip_y=0) # 应用 SMOTE 进行过采样 smote = SMOTE(random_state=42) X_resampled, y_resampled = smote.fit_resample(X, y) print(f"Resampled dataset shape: {X_resampled.shape}") ``` 以上代码片段展示了如何使用 `imbalanced-learn` 工具库中的 SMOTE 类完成简单的重采样任务。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值