不平衡分类是指分类预测建模问题,其中每个类标签的训练数据集中的示例数量不平衡。也就是说,类分布不等于或接近等于,而是有偏差或偏斜。

不平衡分类问题是分类问题的一个示例,其中已知类中的示例分布有偏差或偏斜。分布可以从轻微的偏差到严重的不平衡,其中少数类中有一个示例,而多数类中有数百、数千或数百万个示例。

不平衡的分类对预测建模提出了挑战,因为大多数用于分类的机器学习算法都是围绕每个类的示例数量相等的假设设计的。这会导致模型的预测性能不佳,特别是对于少数类。这是一个问题,因为通常少数类更重要,因此问题对少数类的分类错误比多数类更敏感。我们将这些类型的问题称为“不平衡分类”而不是“不平衡分类”。不平衡是指已经平衡但现在不再平衡的类分布,而不平衡是指本质上不平衡的类分布。

理想数据集正负样本是均等的,这有利于机器学习模型训练。

现实中正负样本常常不均等,而且正负样本比例相差甚大,如下图橘红色样本仅占10%左右。

什么是非平衡数据集?当正负样本占比相差过大时,就是非平衡数据集。如下图负面样本仅占0.001,属于典型非平衡数据集。

不平衡分类的挑战

汇总对比一下理想数据分布情况和正负样本不均情况。类别分布的不平衡会因问题而异。

一个分类问题可能有点偏,比如有轻微的不平衡。或者,分类问题可能存在严重的不平衡,对于给定的训练数据集,一个类中可能有数百或数千个示例,而另一类中可能有数十个示例。

  • 轻微失衡。一个不平衡的分类问题,其中示例的分布在训练数据集中有少量不均匀(例如 4:6)。
  • 严重失衡。一个不平衡的分类问题,其中示例的分布在训练数据集中大量不均匀(例如 1:100 或更多)。

当代大多数关于类别失衡的数据集都集中在1:4到1:100的失衡比例上。[…] 在欺诈检测或化学信息学等实际应用中,我们可能会处理不平衡比范围为 1:1000 到 1:5000 的问题。

下面是非平衡数据点状图分布

非平衡数据集在现实生活中有非常多应用。常见下述情况:

  • 欺诈识别
  • 医疗诊断
  • 石油泄漏侦查
  • 索赔预测
  • 默认预测
  • 面部识别
  • 流失预测
  • 垃圾邮件检测
  • 异常检测
  • 异常值检测
  • 入侵检测
  • 转换预测

非平衡数据例子1:从海面卫星雷达图像检测漏油

如下图,石油泄漏面积仅占海洋区域非常小比例,难以发现,属于经典非平衡数据例子

非平衡数据例子2:癌细胞诊断和预测

癌细胞仅占正常细胞非常小比例,也属于经典非平衡数据处理例子。

非平衡数据例子3:反欺诈

1.交易支付诈骗

2.电信诈骗

3.职工诈骗,欺诈群体一般占总人群2%

在银行,消费金融,金融科技公司做过反欺诈的朋友都知道,真实场景中欺诈客户常常在

2%左右,甚至更低。风控模型对于捕捉欺诈客户非常吃力,因为模型训练数据时就会遇到坏客户占比太低的难题。

机器学习领域有的很多解决非平衡数据的方法,我罗列了一些常用的方法,包括

Under sampling欠采样

Over sampling过采样

SMOTE(synthetic minority over0sampling technique)非直接对少数类进行重采样,而是设计算法来人工合成一些新的少数样本。实际测试中,此方法效果较好

class_weight参数调整

其它算法解决方案

数据分析中的过采样和欠采样是用于调整数据集的类分布(即所表示的不同类/类别之间的比率)的技术。这些术语用于统计抽样、调查设计方法和机器学习。过采样和欠采样是相反且大致等效的技术。过采样和欠采样原理如下图:

SMOTE

有多种方法可用于对典型分类问题中使用的数据集进行过采样(使用分类算法对一组图像进行分类,给定一组带标签的训练图像)。最常见的技术被称为 SMOTE:合成少数过采样技术。[4]为了说明这种技术是如何工作的,考虑一些训练数据,其中有s 个样本,以及数据特征空间中的f 个特征。请注意,为简单起见,这些特征是连续的。例如,考虑用于分类的鸟类数据集。我们想要对其进行过采样的少数类的特征空间可以是喙长、翼展和重量(都是连续的)。为了过采样,从数据集中取一个样本,并考虑它的k 个最近邻(在特征空间中)。要创建合成数据点,请获取这k 个邻居之一与当前数据点之间的向量。将此向量乘以介于 0 和 1 之间的随机数x。将其添加到当前数据点以创建新的合成数据点。

如果看不懂smote术语解释没关系,我用可视化图解smote原理。

如下图,红色数据是minority class,即占比较小的数据集,一共只有4个。

绿色数据是majority class,即占比较大的数据集,一共13个。

为了训练模型时解决非平衡数据问题,我们使用smote方法。

(备注:属于解读

具有丰富示例的类称为主要类或多数类,而示例很少(通常只有一个)的类称为次要类或少数类。

  • 多数类:具有许多示例的不平衡分类预测建模问题中的类(或多个类)。
  • 少数类:不平衡分类预测建模问题中的类,样本很少。

我们通过向量方法链接四个红色点,新的数据(创造的伪数据)就会出现在红色点链接的线上。

大家看,新创造的8个点出现在红色点链接的线上。这样红色数据集就有12个,蓝色数据集有13个,基本是5:5平衡了。

通过上述smote方法,我们解决了非平衡数据问题。

ADASYN

ADASYN是smote方法升级版。自适应合成采样方法或 ADASYN 算法建立在SMOTE方法的基础上,通过将分类边界的重要性转移到那些困难的少数类。ADASYN 根据学习难度对不同的少数类示例使用加权分布,其中为更难学习的少数类示例生成更多合成数据。

增强技术

数据分析中的数据增强是用于通过添加对现有数据或从现有数据新创建的合成数据稍加修改的副本来增加数据量的技术。它充当正则化器,有助于在训练机器学习模型时减少过度拟合。

非平衡数据处理副作用

非平衡数据处理方法不是万能的,使用要非常小心,最好是机器学习经验丰富的朋友来处理较好。过采样,欠采样或smote方法都可能引起过拟合问题,这会导致模型过于具体。训练集的准确性很可能是很高的情况,但是新数据集的性能实际上却很差。

如果想了解真实非平衡数据处理案例和python脚本解决方案,欢迎学习《python金融风控评分卡模型和数据分析》课程:https://edu.csdn.net/combo/detail/1927

此课程采用真实12万+信贷数据建模,并包含如何应用算法处理非平衡数据问题,并且显著提升模型性能,包括ks,auc,可谓一石二鸟。

不平衡数据学习不仅给数据研究界带来了重大的新挑战,而且在现实世界的数据密集型应用中提出了许多关键问题,从金融和生物医学数据分析等民用应用到安全和国防相关应用,如监控和军事数据分析。希望各位机器学习爱好者能关注此问题。

非平衡数据(imbalanced data)简单介绍相关推荐

  1. 几种常见非接卡的简单介绍

    转载自:https://www.cnblogs.com/sdsunjing/p/5019831.html 几种常见非接卡的简单介绍: 1.M1卡 M1卡是非接触式感应卡,数据保存期为10年,可改写10 ...

  2. 【ODX标准】(Open Diagnostic data exchange)ODX简单介绍

    数据文件ODX整理 1.术语 ①ODX means(Open Diagnostic data exchange ) 开放诊断数据交换,规定利用一种新的行业标准诊断格式,使诊断数据流信息可用于诊断工具应 ...

  3. mysql非关锁_MySQL 有关锁的简单介绍

    ) [test]> set global innodb_status_output_locks=1; Query OK,0 rows affected (0.00sec) (root@local ...

  4. Learning from Imbalanced Data 翻译和阅读笔记

    Learning from Imbalanced Data 发表在IEEE<TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING>,09年的一篇好文 ...

  5. 简单介绍一下R中的几种统计分布及常用模型

    统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...

  6. 教你用Python解决非平衡数据问题(附代码)

    来源:数据分析1480 作者:刘顺祥 本文约3153字,建议阅读7分钟. 本文为你分享数据挖掘中常见的非平衡数据的处理,内容涉及到非平衡数据的解决方案和原理,以及如何使用Python这个强大的工具实现 ...

  7. openresty开发系列10--openresty的简单介绍及安装

    openresty开发系列10--openresty的简单介绍及安装 一.Nginx优点 十几年前,互联网没有这么火,软件外包开发,信息化建设,帮助企业做无纸化办公,收银系统,工厂erp,c/s架构偏 ...

  8. mysql5.7参数简单介绍

    以下my.cnf简单介绍了各个参数的作用,除了buffer_pool_size,server id等参数需要按照服务器配置修改,其余大部分参数不用修改,可以直接用于生产环境. [client] por ...

  9. MongoDB(1)--简单介绍以及安装

        前段时间接触了NoSql类型的数据库redis,当时是作为缓存server使用的.那么从这篇博客開始学习还有一个非常出名的NoSql数据库:MongoDb.只是眼下还没有在开发其中使用.一步一 ...

  10. OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)

    PS. 因为csdn博客文章长度有限制,本文有部分内容被截掉了. 在OpenCV中文站点的wiki上有可读性更好.而且是完整的版本号,欢迎浏览. OpenCV Wiki :<OpenCV 编程简 ...

最新文章

  1. ASP.NET 2.0 读取配置文件[INI](示例代码下载)
  2. 自助服务台——多渠道触发运维工单
  3. EtherType :以太网类型字段及值
  4. Tensorflow pipeline是什么?
  5. 黑马程序员---面向对象笔记总结
  6. Mysql的多表查询(表添加,多表查询练习:笛卡尔积、内连接、外连接、子查询、UNION组合查询)
  7. [jQuery原理] jQueryDOM操作相关方法
  8. get buffer from CMSampleBufferRef
  9. windows下怎么样搭建RobotFramework测试环境
  10. 手机网页如何添加在线客服代码?您的这样做
  11. 微软发布了最新的Sync Framework 2.0 CTP2
  12. 编程运维的一些小Tips
  13. python中双引号的作用_Python中单引号和双引号的作用
  14. xp系统怎么看计算机内存条,XP环境下怎么查看虚拟内存?XP系统虚拟内存过低怎么设置?...
  15. 数据库mongodb效率测试
  16. 化云为雨,华为云为什么要深入经济的“毛细血管”?
  17. 逐鹿战神--ios技术支持
  18. “JSON parse error: Unexpected character (‘\“‘ (code 34)): was expecting comma to separate Object ent
  19. 免费的网页截屏API有哪些?
  20. java代码比较数据_比对两个数据库的差异:Java篇

热门文章

  1. matlab可以拼图么,拼图matlab程序希望有人可以给我讲解一下!!有偿求标注
  2. 【转】详解vue的diff算法
  3. C# List与Array性能比较
  4. Web前端-HTTP Cache-control
  5. Asp.Net客户端触发服务器端事件及_dopostback
  6. Flutter尝鲜:跨平台移动应用开发
  7. nginx 的基本配置
  8. java上路系列之一
  9. Kylin 与 Spark SQL相比,有哪些差异和优势?
  10. P1379 八数码难题