样本不平衡 pytorch_样本类别不均衡问题

本文探讨了机器学习中常见的样本类别不均衡问题及其对模型性能的影响。针对这一问题,介绍了样本层面的上采样、下采样和使用样本权重的方法,以及模型层面的Focal Loss和CB Loss,以提高对少数类别的关注度和分类效果。Focal Loss通过调整简单样本的权重,加速模型收敛,而CB Loss则基于有效样本数进行类别平衡。
摘要由CSDN通过智能技术生成

235f1633a457e2f1a6f4ae1d2f8f66c8.png

样本类别不均衡是机器学习实践中经常会遇到的问题,很多时候我们只有少量的正样本和非常多的负样本,当然这种情况在多分类问题中也会经常遇到。

这种现象会对机器学习模型的性能带来很大影响。因为负样本很多,负样本在总的损失函数中的占比很大,使得模型会专注与学习负样本相关的信息来减小损失,对于正样本的关注度不足,导致最终模型对正样本以及与正样本相似的负样本的分类效果较差。

下面介绍一些解决类别不均衡问题的常用方法,个人理解有局限,大家看到有误的地方还请及时指出:

1、样本层面

问题既然是样本在类别上的分布不均衡,首先能想到的就是改变样本数量,使类别分布均衡。

1)上采样

通过采样对样本进行扩充,简单的重复样本不是和好方法,最好使用数据增强的方式生成相对自然又有新信息的样本。

2)下采样

通过随机采样、分层采样、加权采样等方式对样本进行筛选,保留比较有代表性的样本,去掉大量重复的相似的样本。

3)样本权重

样本数量多类别,样本权重小一些;样本数量少的类别,样本权重大一些。比如,

,其中Nc为类别c的样本数。

2、模型层面

1)Focal Loss

《Focal Loss for Dense Object Detection》ICCV2017 RBG,Kaiming

消除正负样本比例不平衡,并且增强对难样本的处理能力(一些很难区分的样本,其对立就是很容易识别准确的简单样本,简单样本带来的loss很小,在训练后期大量简单样本会浪费大量的训练时间)。

Focal loss是在交叉熵损失函数基础上进行的修改,降低了大量简单负样本在训练中所占的权重。首先回顾二分类交叉上损失:

79cc3439a70c6728aa1ddcc8c60d7f38.png

其中 y 是真实样本的标签(1正0负), y’ 是经过 sigmoid 激活函数的预测输出(数值在0-1之间)。可见普通的交叉熵对于正样本而言,输出概率越大损失越小。对于负样本而言,输出概率越小则损失越小。此时的损失函数在大量简单样本的迭代过程中比较缓慢且可能无法优化至最优。

在此背景下,Focal Loss函数提出来了,

1872cc89227893efe6b81361fa344545.png

它在原有的基础之上加了一个γ,其中γ>0使得减少易分类样本的损失,使得模型更关注于困难的、错分的样本

下图是γ的不同取值对损失函数曲线的影响:

53eb1b1868c354007464f793524a813e.png

例如:γ为2时,对于正类样本而言&

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值