资讯详情

一文解决样本不均衡(全)

点击上面的计算机视觉车间,选择星标

第一时间送达干货

5c411ae0aafabf5e2a43b74ae384f126.png

作者丨泳鱼

来源丨算法进阶

1、样本不平衡的介绍

1.1 样本不平衡

样本(类别)样本不平衡(class-imbalance)指分类任务中不同类别的训练样本数量差异较大的情况。一般来说,样本类别的比例(Imbalance Ratio)(多数类vs少数类)明显大于1:1(如4:1)可归类为样本不平衡。实际上,样本不平衡是一种常见的现象,如:金融欺诈交易测试,欺诈交易的订单样本通常占交易总数的一小部分,少数样本对某些任务更为重要。

注:本文主要讨论分类任务的不平衡,回归任务的样本不平衡《

1.2 不平衡的根本影响

很多时候,当我们遇到样本不平衡的问题时,反应是打破这种不平衡。但是样本不平衡有什么影响呢?有必要解决吗?

例如,在欺诈识别的情况下,好或坏样本的比例是1000:1,如果我们直接学习模型,因为扔进模型学习样本大多是好的,很容易学习所有样本预测好的模型,预测的概率准确性很高。模型最终学习的不是如何区分好坏,而是好 远比 坏的多这样的先验信息,用这个信息把所有的样本都判定为好。这偏离了模型学习区分好坏的初衷。

因此,样本不平衡的根本影响是,模型将学习训练集中样本比例的先验信息,以便在实际预测中关注大多数类别(可能导致大多数类别更好,而少数类别更差)。(),在类别不平衡的情况下,分类边界倾向于占用少数类别的区域。更重要的是,它会影响模型学习的更基本特征和模型的鲁棒性。

总结一下,也就是说,

1.3 判断解决不平衡的必要性

从上面的例子可以看出,不平衡对分类结果的影响不一定是坏的

  • 判断任务是否复杂:(参见《Survey on deep learning with class imbalance》),样本是否平衡对简单的线性可分任务影响不大。需要注意的是,学习任务的复杂性是从特征强度、数据噪声据噪声和模型容量。

  • 判断训练样本的分布和真实样本,如果分布是一致的,这种正确的先验对预测结果影响不大。但需要考虑的是,如果真实样本的分布发生变化,样本比例的先验将产生副作用。

  • 判断某一类别的样本数量是否非常罕见。此时,模型可能学习不好,需要解决类别不平衡,如选择一些数据增强方法,或尝试异常检测等单分类模型。

二、样本不均衡解决方法

基本上,在学习任务困难的前提下,不平衡的解决方案可以归结为:。消除模型对不同类别的偏见,学习更本质的特征。等等,讨论个中的解决方案。

2.1 样本层面

2.1.1.欠采样、过采样

最直接的处理方法是调整样本数量,常用的方法是:

  • 欠采样:减少多数类别的数量(如随机欠采样、NearMiss、ENN)。

  • 过采样:尽量增加少数样本的数量(如随机过采样和2).1.2数据增强方法),实现类别间数量平衡。

  • 混合采样也可以结合两者(如Smote ENN)。

    详见【scikit-learn的imbalanced-learn.org/stable/user_guide.html以及github的awesome-imbalanced-learning】

2.1.2 数据增强

数据增强(Data Augmentation)是在不实质性的增加数据的情况下,从原始数据加工出更多数据的表示,提高原数据的数量及质量,以接近于更多数据量产生的价值,从而提高模型的学习效果(其实也是过采样的方法的一种。具体介绍及代码可见【数据增强】)。如下列举常用的方法:

  • 基于样本变换的数据增强

样本转换数据增强是指利用预设的数据转换规则扩展现有数据,包括单样本数据增强和多样本数据增强。

:主要有几何操作、颜色变换、随机擦除、添加噪声等方法生成新样本,请参见imgaug开源库。

:主要包括多个样本的组合和转换Smote类(可见imbalanced-learn.org/stable/references/over_sampling.html)、SamplePairing、Mixup在特征空间内构建已知样本的邻域值样本。

  • 基于深度学习的数据增强

变分自编码网络等生成模型(Variational Auto-Encoding network, VAE)并生成对抗网络(Generative Adversarial Network, GAN),生成样本的方法也可用于数据增强。与传统的数据增强技术相比,这种基于网络合成的方法更为复杂, 但是生成的样本更加多样化。

  • 随机采样可能导致丢弃含有重要信息的样本。在计算性能足够的情况下,可以考虑数据分布信息(通常是基于距离的邻域关系)的采样方法,如ENN、NearMiss等。

  • 随机采样或数据增强样本也可能强调(或引入)片面噪声,导致过拟合。也可能是引入信息量小的样本。此时需要考虑的是调整采样方法,或者通过半监督算法(可供参考)Pu-Learning思路)选择增强数据,提高模型的泛化能力。

2.2 损失函数的层次

损失函数层面的主流方法是敏感学习的常用成本(cost-sensitive),对不同的分类错误给予不同的惩罚(权重),在调整分类平衡的同时,不会增加计算的复杂性。常用方法如下:

2.2.1 class weight

这是最常用的scikit模型的’class weight‘方法,If ‘balanced’, class weights will be given by n_samples / (n_classes * np.bincount(y)). If a dictionary is given, keys are classes and values are corresponding class weights. If None is given, the class weights will be uniform.,class weight它可以为不同类别的样本提供不同的权重(少数类别有更高的权重),使模型能够平衡各种类别的学习。下图显示了对少数类别的更高权重,以避免对多数类别的决策(类别权重除了设置为balanced,也可以作为超参搜索。示例代码见github.com/aialgorithm):

clf2=LogisticRegression(class_weight={0:1,1:10})#敏感成本敏感

2.2.2 OHEM 和 Focal Loss

In this work, we first point out that the class imbalance can be summarized to the imbalance in difficulty and the imbalance in difficulty can be summarized to the imbalance in gradient norm distribution.

--原文可见《Gradient Harmonized Single-stage Detector》

以上大意是,。按照这个想法,OHEM和Focal loss都做了两件事:难样本挖掘以及类别的平衡。(另外的有 GHM、 PISA等方法,可以自己了解)

  • OHEM(Online Hard Example Mining)算法的核心是选择一些hard examples(多样性和高损失的样本)作为训练的样本,针对性地改善模型学习效果。对于数据的类别不平衡问题,OHEM的针对性更强。

  • Focal loss的核心思想是在交叉熵损失函数(CE)的基础上增加了类别的不同权重以及困难(高损失)样本的权重(如下公式),以改善模型学习效果。

2.3 模型层面

模型方面主要是选择一些对不均衡比较不敏感的模型,比如,对比逻辑回归模型(lr学习的是全量训练样本的最小损失,自然会比较偏向去减少多数类样本造成的损失),决策树在不平衡数据上面表现相对好一些,树模型是按照增益递归地划分数据(如下图),划分过程考虑的是局部的增益,全局样本是不均衡,局部空间就不一定,所以比较不敏感一些(但还是会有偏向性)。相关实验可见arxiv.org/abs/2104.02240。

解决不均衡问题,更为优秀的是基于采样+集成树模型等方法,可以在类别不均衡数据上表现良好。

2.3.1采样+集成学习

这类方法简单来说,通过重复组合少数类样本与抽样的同样数量的多数类样本,训练若干的分类器进行集成学习。

  • BalanceCascade BalanceCascade基于Adaboost作为基分类器,核心思路是在每一轮训练时都使用多数类与少数类数量上相等的训练集,然后使用该分类器对全体多数类进行预测,通过控制分类阈值来控制FP(False Positive)率,将所有判断正确的类删除,然后进入下一轮迭代继续降低多数类数量。

  • EasyEnsemble EasyEnsemble也是基于Adaboost作为基分类器,就是将多数类样本集随机分成 N 个子集,且每一个子集样本与少数类样本相同,然后分别将各个多数类样本子集与少数类样本进行组合,使用AdaBoost基分类模型进行训练,最后bagging集成各基分类器,得到最终模型。示例代码可见:www.kaggle.com/orange90/ensemble-test-credit-score-model-example

通常,在数据集噪声较小的情况下,可以用BalanceCascade,可以用较少的基分类器数量得到较好的表现(基于串行的集成学习方法,对噪声敏感容易过拟合)。噪声大的情况下,可以用EasyEnsemble,基于串行+并行的集成学习方法,bagging多个Adaboost过程可以抵消一些噪声影响。此外还有RUSB、SmoteBoost、balanced RF等其他集成方法可以自行了解。

2.3.2 异常检测

类别不平衡很极端的情况下(比如少数类只有几十个样本),将分类问题考虑成异常检测(anomaly detection)问题可能会更好。

异常检测是通过数据挖掘方法发现与数据集分布不一致的异常数据,也被称为离群点、异常值检测等等。无监督异常检测按其算法思想大致可分为几类:基于聚类的方法、基于统计的方法、基于深度的方法(孤立森林)、基于分类模型(one-class SVM)以及基于神经网络的方法(自编码器AE)等等。具体方法介绍及代码可见【异常检测方法速览】

2.4 决策及评估指标

本节关注的重点是,当我们采用不平衡数据训练模型,如何更好决策以及客观地评估不平衡数据下的模型表现。对于分类常用的precision、recall、F1、混淆矩阵,样本不均衡的不同程度,都会明显改变这些指标的表现。

对于类别不均衡下模型的预测,我们可以做分类阈值移动,以调整模型对于不同类别偏好的情况(如模型偏好预测负样本,偏向0,对应的我们的分类阈值也往下调整),达到决策时类别平衡的目的。这里,通常可以通过P-R曲线,选择到较优表现的阈值。

对于类别不均衡下的模型评估,可以采用AUC、AUPRC(更优)评估模型表现。AUC的含义是ROC曲线的面积,其数值的物理意义是:随机给定一正一负两个样本,将正样本预测分值大于负样本的概率大小。,即使正例与负例的比例发生了很大变化,ROC曲线面积也不会产生大的变化。具体可见 【 评估指标】

小结:
我们通过解决样本不均衡,可以减少模型学习样本比例的先验信息,以获得能学习到辨别好坏本质特征的模型。
可以将不均衡解决方法归结为:通过某种方法使得不同类别的样本对于模型学习中的Loss(或梯度)贡献是比较均衡的。具体可以从数据样本、模型算法、目标函数、评估指标等方面进行优化,其中数据增强、代价敏感学习及采样+集成学习是比较常用的,效果也是比较明显的。其实,不均衡问题解决也是结合实际再做方法选择、组合及调整,在验证中调优的过程。

本文仅做学术分享,如有侵权,请联系删文。

后台回复:即可下载国外大学沉淀数年3D Vison精品课件

后台回复:即可下载3D视觉领域经典书籍pdf

后台回复:即可学习3D视觉领域精品课程

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进4.国内首个面向工业级实战的点云处理课程5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

14.ROS2从入门到精通:理论与实战

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在

也可申请加入我们的细分方向交流群,目前主要有等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。也请联系。

▲长按加微信群或投稿

▲长按关注公众号

:针对3D视觉领域的五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

标签: 传感器重复性的正负

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台