深度学习中处理类别不平衡问题主流方法总结

前言

在深度学习的一些场景下,经常会出现类别不平衡的情况。以二分类为例,正负样本比例为1:1的情况十分罕见;多数情况下都是1:N,N有时甚至超过10,甚至几十上百都有。在多次遇到这种问题后写了该博客进行总结。

方法

1、欠采样和过采样

欠采样是在多数类中进行部分采样,过采样是在少数类中重复采样。过采样和修改目标函数中正负项系数是等价的,但实际操作中效果一般不会相同。

2、数据增强

数据增强分图像和文本,这里分别提一下:

图像数据增强

(1) 镜像翻转、旋转、平移、缩放、颜色随机扰动、非线性几何变形等;
(2) GAN生成新样本;

文本数据增强

(1) SMOTE过采样方法
这虽然是一种过采样方法,但实际上生成了新的样本所以我把它放在数据增强范畴里。简单来说就是取了一正样本点,从它的k近邻里取一个新样本,两个点连线中间随机取一点作为新的正样本。这里放两个链接,一个是理论解释,一个是代码实现
(2) K近邻单词替换
这里用到了word embedding工具,在序列模型中,每个单词都能映射成一个词向量。所以一个单词可以看做高维空间中一个样本点,这也就可以用K近邻来得到和它语义相近的单词了。这里放一个代码链接

3、修改损失函数

交叉熵函数是深度学习任务中经常用的目标函数,但在类别不平衡场景下可以考虑进行修改。根据笔者的经验,有两种思路:
(1) 如果你用的是keras,模型训练函数中是可以调整class_weight的,可以在class_weight中适当增大正样本的权重。比较忌讳把正样本权重增大到两者损失总量一样,这么设置从来没有一次效果是好的。笔者一般把正样本权重调到负样本权重的1.1~1.5倍,可以取得比之前要好的F1 score。
(2) Focal Loss是个值得考虑的目标函数,原文是:Focal Loss for Dense Object Detection。该损失函数在目标检测领域取得了良好的处理类别不平衡效果和改善误分类的效果,笔者在文本分类的任务中用了该目标函数,也能取得较大提升。

  • 10
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
k均值聚类是一种常用的无监督学习算法,可以将数据集分为若干个簇,簇内数据相似度高,簇间数据相似度低。它是数据挖掘、图像处理和机器学习最常用的聚类方法之一。其核心思想是通过不断迭代的方式,将数据集划分为k个互不相交的簇,最终使得簇内的数据相似度尽可能高,簇间的数据相似度尽可能低。 由于现实的数据往往呈现出不平衡的状态,即不同类别的样本数目存在严重的不平衡,这会对聚类效果造成很大的影响。解决这种问题可以采用样本权重法或基于潜在变量的方法,将数据按照类别分别进行处理、聚类,在最终结果将簇的大小设定为参考指标,重新计算聚类效果。 深度学习是指网络结构比传统神经网络更深和复杂的一类机器学习算法,可以从数据学习抽象的特征表达,用于图像、语音、自然语言处理和推荐系统等领域。深度学习的核心技术是神经网络,它具有多层非线性变换和学习能力强的优点。与传统机器学习不同,深度学习网络可以自动进行特征工程,并从纷繁复杂的数据提取出高层次的、抽象的特征,然后进行优化学习。深度学习在医疗影像诊断、自动驾驶、语音识别、自然语言处理等领域有着广泛的应用。 总之,k均值聚类可以对数据进行快速有效的聚类处理,但在数据不平衡的情况下需要采用对应的处理方法,而深度学习则可以从大量数据提取出更为深层次的特征,使得机器学习更为优化和精准。它们在不同的领域都有重要的应用,未来的研究和探索将会使它们更加普及和发展。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值