如何解决数据集样本不平衡问题

1.问题提出

在做2024年五一数学建模比赛的c题时,遇到了一个问题,数据集类别不平衡,因此导致分类效果糟糕,图片如下,类比0数量是类比1的80倍

f933a70b6f394f0d9ee1d7f96a0a7fad.png

 

2.解决问题的方式

 

2.1 阈值调整

对于一般的二分类任务,一般会以0.5作为阈值来划分正负样本(比如逻辑回归),预测概率值大于0.5则判定为正样本。

对于类别不平衡的训练集来说,该阈值不合适了,因为当使用负样本来更新模型权重时,权重的更新会使模型的输出尽量偏向于0,如果负样本太多,那么负样本对于模型权重的更新量就比较多,使得模型输出接近0的概率就比较大,所以可以根据正负样本所占的比例来调整阈值。比如正样本只占10%,则可以将阈值调整为0.1,输出概率大于0.1的则判定为正样本,这样可以很好的解决类别不平衡问题,调整阈值是个简单且高效的方法。

也可以在计算每个样本的loss时,通过为正样本增加权重的方式,来优化样本不平衡问题。该方法原理跟划分阈值类似,正样本对权重的更新会使模型输出尽可能偏向于1,但是正样本太少,所以一方面可以降低划分为正样本的阈值,另一方面则可以在计算loss时,增加正样本权重,从而增大正样本对模型参数的更新量,提高模型输出为1的概率。

 

2.2 模型融合

模型融合不仅可以提升预测的准确性,其实也可以解决类别不平衡问题。

比如对于正样本(10%)、负样本(90%)的训练集,可以将负样本均等拆分为9份(注意一定要同分布拆分),然后每一份都与正样本组合成为一个小训练集,得到9份类别平衡的数据。然后用9个模型分别去训练(可以使用有差异性的模型, 使预测精度更高),然后可以对9个模型的预测结果加权累加,作为最终的输出。最优的权重通常难以抉择,可以使用一个LR将9个模型的输出作为输入,通过训练让模型自己学习每个模型对应的权重即可。

通过模型融合就可以保证每个模型的训练数据都是类别平衡的数据,并且还能提升预测的准确性。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值