通过这篇文章带您了解处理不均衡数据的思想与实践

主要思想

在处理不平衡数据主要从两方面入手:数据集方面、算法本身方面

数据方面

对数据进行重采样,使原本不均衡的样本变得均衡。最简单的处理不均衡样本集的方法是随机采样。

  • 随机过采样:从少数类样本集中随机重复抽取样本(有放回)以得到更多样本
  • 随机欠采样:从多数类样本中随机选取较少的样本(有放回或无放回)以得到更多样本

上述方法只是简单的重复的复制样本,采取一些方法生成新的样本
对于过采样:

  • SMOTE:对少数类样本集 S m i n S_{min} Smin中的每个样本 x x x,从它在 S m i n S_{min} Smin中的K近邻中随机选取一个样本 y y y,然后在 x , y x,y x,y连线上随机选取一个点作为新合成的样本(根据需要重复上述操作)

对于欠采样:

  • Easy Ensemble算法:每次从多数类 S m a j S_{maj} Smaj中随机抽取一个子集 E ( E ≈ S m i n ) E(E \approx S_{min}) E(ESmin), 然后用 S m i n + E S_{min}+E Smin+E训练一个分类器,重复若干次得到级联结构,最终的输出结果也是各级分类器结果的融合。
  • Balance Cascade算法:每次从多数类 S m a j S_{maj} Smaj中随机抽取一个子集 E E E, 然后用 S m i n + E S_{min}+E Smin+E训练一个分类器;然后将 S m a j S_{maj} Smaj中能够被当前分类器正确分类的样本进行剔除,继续下一级操作,重复若干次得到级联结构,最终的输出结果也是各级分类器结果的融合。

算法方面

Facol loss:将简单样本进行降低权重,从而使样本训练的损失可以集中在比较难以学习的负样本上,引入调制因子。
P L ( p t ) = − ( 1 − p t ) γ l o g ( p t ) PL(p_{t}) = -(1-p_{t})^\gamma log(p_{t}) PL(pt)=(1pt)γlog(pt)
当一个样本被错误分类时 p t p_{t} pt很小,对原来损失无影响,当 p t p_{t} pt趋近于1时调制因子接近0,对容易分类的样本进行了降权, γ \gamma γ控制降权的比率。

实践

最近参加了第二届中国移动“梧桐杯”大数据应用创新大赛的城市赛道。“灵珑”电信反诈模型旨在从普通用户中区分出电信诈骗人员号码,利用用户通信、流量使用等行为数据识别电信诈骗人员。正样本比例不超过5%。
使用imblearn进行不均衡数据处理
对数据进行简单的处理,一共有三万多个数据,实际数据更多,这里只是简单的进行演示。
数据简单处理

from imblearn.over_sampling import RandomOverSampler
from collections import Counter

# df_all_label:数据标签
# 查看数据标签数量分别是多少
Counter(df_all_label)
#输出:Counter({0.0: 31318, 1.0: 74})

from imblearn.combine import SMOTEENN
smote_enn = SMOTEENN(random_state=0)
df_all_data_resampled, df_all_label_resampled = smote_enn.fit_resample(df_all_data, df_all_label)
print(sorted(Counter(df_all_label_resampled).items()))
#输出:[(0.0, 22361), (1.0, 20046)]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值