特征工程——解决样本类别分布不均衡的问题

样本类别不均衡问题解决:特征工程与Python实践
本文介绍了样本类别分布不均衡的概念、常见场景及其对模型的影响。提出了包括重采样技术(过采样、欠采样)、集成方法和特征选择等解决策略,并提供了Python代码示例。

一、概念

不均衡指的是不同类别的样本量差异非常大。 样本类别分布不均衡主要出现在分类相关的建模问题上。 样本类别分布不均衡从数据规模上可以分为大数据分布不均衡和小数据分布不均衡两种。

  • 大数据分布不均衡; 这种情况下整体数据规模大, 只是其中的小样本类的占比较少。 但是从每个特征的分布来看, 小样本也覆盖了大部分或全部的特征。 例如拥有1000万条记录的数据集中, 其中占比50万条的少数分类样本便于属于这种情况。
  • 小数据分布不均衡; 这种情况下整体数据规模小, 并且占据少量样本比例的分类数量也少, 这会导致特征分布的严重不平衡。 例如拥有1000条数据样本的数据集中, 其中占有10条样本的分类, 其特征无论如何拟合也无法实现完整特征值的覆盖, 此时属于严重的数据样本分布不均衡。
  • 样本分布不均衡将导致样本量少的分类所包含的特征过少, 并很难从中提取规律; 即使得到分类模型, 也容易产生过度依赖于有限的数据样本而导致过拟合的问题, 当模型应用到新的数据上时, 模型的准确性和健壮性将很差

二、产生样本不平衡的场景

  • 异常检测场景。 大多数企业中的异常个案都是少量的, 比如恶意刷单、 黄牛订单、 信用卡欺诈、 电力窃电、 设备故障等, 这些数据样本所占的比例通常是整体样本中很少的一部分, 以信用卡欺诈为例, 刷实体信用卡的欺诈比例一般都在0.1%以内。
  • 客户流失场景。 大型企业的流失客户相对于整体客户而言通常是少量的, 尤其对于具有垄断地位的行业巨擘, 例如电信、 石油、 网络运营商等更是如此。
  • 罕见事件的分析。 罕见事件与异常检测类似, 都属于发生个案较少, 不同点在于异常检测通常都有预先定义好的规则和逻辑, 并且大多数异常事件都会对企业运营造成负面影响, 因此针对异常事件的检测和预防非常重要; 罕见事件则无法预判, 并且也没有明显的积极或消极影响倾向。 例如由于某网络大V无意中转发了企业的一条趣味广告导致用户流量明显提升便属于此类。
  • 发生频率低的事件。 这种事件是预期或计划性事件, 但是发生频率非常低。 例如每年1次的双11盛会一般都会产生较高的销售额, 但放到全年来看这一天的销售额占比很可能只有1%不到, 尤其对于很少参与活动的公司而言, 这种情况更加明显。 这就属于典型的低频事件。

三、解决办法

1.重采样技术分为两类:
2.对多数类进行欠采样。
3.对少数类进行过度采样。
4.结合过采样和欠采样。
5.创建整体平衡集。

抽样是解决样本分布不均衡相对简单且常用的方法, 包括过抽样和欠抽样两种。

  • 过抽样: 又称上采样或(over-sampling) , 其通过增加分类中少数类样本的数量来实现样本均衡, 最直接的方法是简单复制少数类样本形成多条记录。 这种方法的缺点是, 如果样本特征少则可能导致过拟合的问题。 经过改进的过抽样方法通过在少数类中加入随机噪声、 干扰数据或通过一定规则产生新的合成样本, 例如SMOTE算法。
  • Random minority over-sampling with replacement
  • SMOTE - Synthetic Minority Over-sampling Technique
  • SMOTENC - SMOTE for Nominal Continuous
  • bSMOTE(1 & 2) - Borderline SMOTE of types 1 and 2
  • SVM SMOTE - Support Vectors SMOTE
  • ADASYN - Adaptive synthetic sampling approach for imbalanced learning
  • KMeans-SMOTE
  • 欠抽样: 又称下采样(under-sampling) , 其通过减少分类中多数类样本的数量来实现样本均衡, 最直接的方法是随机去掉一些多数类样本来减小多数类的规模, 缺点是会丢失多数类样本中的一些重要信息。
  • 随机多数类样本欠抽样
  • Extraction of majority-minority Tomek links
  • 群集质心的欠采样
  • 凝聚态的最近邻居
  • 单面选择
  • 先过采样后欠采样
  • SMOTE + ENN [11]
  • SMOTE + Tomek links
  • 通过组合/集成方法解决样本不均衡
  • Easy Ensemble classifier
  • Balanced Random Forest
  • Balanced Bagging
  • RUSBoost
  • 通过特征选择解决样本不均衡

上述几种方法都是基于数据行的操作, 通过多种途径可使不同类别
的样本数据行记录均衡。 除此以外, 还可以考虑使用或辅助基于列的特征选择方法。
一般情况下, 样本不均衡也会导致特征分布不均衡, 但如果小类别
样本量具有一定的规模, 那么意味着其特征值的分布较为均衡, 可通过选择具有显著型的特征配合参与解决样本不均衡问题, 也能在一定程度上提高模型效果。

  • Mini-batch resampling for Keras and Tensorflow

三、Python代码

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值