首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据不平衡问题

数据不平衡问题

作者头像
用户3578099
发布于 2023-02-14 12:30:57
发布于 2023-02-14 12:30:57
9250
举报
文章被收录于专栏:AI科技时讯AI科技时讯

数据不平衡问题

对于一些二分类问题或者多分类问题,部分类别数据相较于其它类别数据而言是要小得多的,这种现象就是数据不平衡问题。数据不平衡问题会导致什么情况呢?假如是基于一些特征判断病人是否患有该疾病,且该疾病是一个小概率获得的疾病,假设概率为0.0001, 那么表明有10000个来看病的人中只有一个人患有该疾病,其余9999个人都是正常病人。如果用这样的一批数据进行训练模型算法,即使该模型什么都不学,都判定为正常人,其准确率高达0.9999, 完全满足上线要求。但我们知道,这个模型是不科学的,是无用的模型。这种数据分布严重不平衡的情况下,模型将具有严重的倾向性,倾向于数据样本的多的类别,因为模型每次猜样本多对应的类别的对的次数多。因此,如果直接将严重数据不平衡的数据拿来直接训练算法模型,将会遇到上述问题。一般在10倍以上可以判定为数据不平衡问题。

解决办法

解决数据不平衡的方法比较多,这里大致罗列一下,具体原理可以针对每种方式去详细搜索对应的文章介绍,这里不做过多的解释。

  • 欠采样(Under sampling): 欠采样是一种通过保留少数类中的所有数据并减少多数类的大小来平衡不均匀数据集的技术。简单来说就是少样本数据全部保留,对多样本数据按照小样本的数量及比例采样量级差不是那么大的多样本数据,比如说正样本10个,负样本1000个,二者相差两个量级。那么可以对负样本进行采样,从中随机选100个,再与正样本10个作为训练数据,这样二者的数量差距不会太大。但该方法显然存在缺点,即部分负样本数据没有被使用,丢失潜在的重要信息。
    • 优点:多数样本与少数样本到达相同量级,数据变少导致更少的存储需求和运行时间;
    • 缺点:导致数据丢失,丢失潜在的重要信息,多数类选择的样本可能有偏差;
    • 随机选择(Random under sampling):从多数类中随机删除事件;
    • 基于最近邻欠采样(Nearest neightbors sampling):在散点图上,保持从多数类到少数类的三个最接近事件的平均距离最小的事件;
    • Tomek Links sampling: 通过删除 Tomek 链接来采样,寻找 Tomek 链接用来定位所有跨类的最近邻居。如果少数类中的例子保持不变,那么这个过程可以用来找到多数类中最接近少数类的所有例子,然后移除;
    • 编辑最近邻(edited nearest neighbors): 该规则涉及使用 k = 3最近邻来定位数据集中那些被错误分类的例子,然后在应用 k = 1分类规则之前删除这些例子;
    • One-sided selection: OSS 结合了 Tomeks Links和 NN, 首先识别并移除大多数类的类边界上的Tomeks links, 并基于NN从多数类中删除冗余样本;
    • Neighborhood cleaning rule(NCR):通过 ENN 去除噪声或模糊的样本,该技术保留下来的是高质量的数据;
    • 采样方法:
    • 优缺点:
  • 过采样(over sampling):过采样技术是对少样本进行扩增,使得少样本数据能变多的一种技术。
    • 优点:不会丢失来自原始培训集的信息
    • 缺点:随机采样复制导致数据集扩大,造成模型训练复杂度增加,另外容易造成模型过拟合问题,不利于算法的泛化能力
    • 重复复制:随机重复复制少样本数据
    • SMOTE:基本思想就是对少数类别样本进行分析和模拟,并将人工模拟的新样本添加到数据集中,进而使原始数据中的类别不再严重失衡。该算法的模拟过程采用了KNN技术,模拟生成新样本的步骤如下:
    • 采样最邻近算法,计算出每个少数类样本的K个近邻;
    • 从K个近邻中随机挑选N个样本进行随机线性插值;
    • 构造新的少数类样本;
    • 将新样本与原数据合成,产生新的训练集;
    • ADASYN:建立在 SMOTE 方法的基础上,通过将分类边界的重要性转移到那些困难的少数类
    • Augmentation:通过添加已有数据的略微修改的副本或从现有数据中新创建的合成数据来增加数据量的技术
    • 采样方法:

    在这里插入图片描述

    • 优缺点:
  • 转化为一分类问题:将分类问题转变为异常检测问题
  • 多模型集成:对两类样本选取 N 组不同比例的数据进行训练并测试,得出模型预测的准确率;然后基于各模型的准确率进行归一化处理,得到新的权重分布;按权重分布 组合多个模型,作为最终的训练器
  • Loss函数设计方面,对正负样本给予不同的权重:比如focal loss等

在这里插入图片描述

  • 评价指标的选取,一般来说,使用AUC PR作为评价指标,在不平衡分类问题上的性能表征是更加准确的。

结论

  • 样本不均衡会影响模型精度
  • 随着分类任务复杂度的上升,样本不均衡对模型的影响会显著上升
  • 样本不均衡问题导致模型精度下降的原因不仅是训练样本的减少,主要是因为样本类别的分布
  • 在绝大多数多分类任务中,过采样是最能有效抑制样本不均衡的方法
  • 在部分样本极度不平衡的情况下,欠采样和过采样取得相近的效果;如果出于训练时间的考虑,选择欠采样更为合适
  • 为了达到更好的精度,在采样的基础上对分类器的概率输出进行优化,即采用采样-阈值联合的优化方式可达到更加的分类精度
  • 与传统机器学习不同,过采样方法并不会引起卷积神经网络的过拟合问题

参考

  • https://www.mastersindatascience.org/learning/statistics-data-science/undersampling/
  • https://blog.csdn.net/qq_37151108/article/details/105344107
  • https://zhuanlan.zhihu.com/p/44055312
  • https://blog.csdn.net/jiede1/article/details/70215477
  • https://zhuanlan.zhihu.com/p/368352445
  • Undersampling Algorithms for Imbalanced Classification
  • https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis
  • https://developer.aliyun.com/article/177007
  • 分类样本不平衡问题
  • https://www.zhihu.com/question/435795754/answer/1638366440
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技时讯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[深度学习技巧]·数据类别不平衡问题处理
如果不同类别的训练样例数目稍有差别,通常影响不大,但若差别很大,则会对学习过程造成困扰。例如有998个反例,但是正例只有2个,那么学习方法只需要返回一个永远将新样本预测为反例的学习器,就能达到99.8%的精度;然而这样的学习器往往没有价值,因为它不能预测出任何正例。
小宋是呢
2019/06/27
4.2K0
[深度学习技巧]·数据类别不平衡问题处理
样本不平衡数据集防坑骗指南
不管你在数据科学的哪一个方向研究,可能数据不平衡(imbalanced data)都是一个常见的问题。很多人总是会强调极端状况下的数据不平衡,如医疗数据,犯罪数据等。但在实际中,更多的不平衡并不会显得那么极端。如果你关注过kaggle上的比赛冠军的分享,你会发现观察数据尤其是了解不平衡情况经常会是第一步(当然还会有其他的预处理和分析)。
马上科普尚尚
2020/05/14
1.8K0
样本不平衡数据集防坑骗指南
【机器学习】类别不平衡数据的处理
在现实环境中,采集的数据(建模样本)往往是比例失衡的。比如:一个用于模型训练的数据集中,A 类样本占 95%,B 类样本占 5%。
小言从不摸鱼
2024/09/10
3100
RDKit | 化合物活性数据的不平衡学习
顾名思义即我们的数据集样本类别极不均衡,以二分类问题为例,数据集中的多数类 为Smax,少数类为Smin,通常情况下把多数类样本的比例为100:1、1000:1,甚至是10000:1这种情况下为不平衡数据。
DrugOne
2021/01/28
8990
特征锦囊:如何在Python中处理不平衡数据
印象中很久之前有位朋友说要我写一篇如何处理不平衡数据的文章,整理相关的理论与实践知识(可惜本人太懒了,现在才开始写),于是乎有了今天的文章。失衡样本在我们真实世界中是十分常见的,那么我们在机器学习(ML)中使用这些失衡样本数据会出现什么问题呢?如何处理这些失衡样本呢?以下的内容希望对你有所帮助!
Sam Gor
2020/11/19
2.6K0
特征锦囊:如何在Python中处理不平衡数据
【机器学习】不平衡数据下的机器学习方法简介
机器学习已经成为了当前互联网领域不可或缺的技术之一,前辈们对机器学习模型的研究已经给我们留下了一笔非常宝贵的财富,然而在工业界的应用中我们可以看到,应用场景千千万万,数据千千万万但是我们的模型却依然是那些,在机器学习的应用中对数据的处理与分析往往扮演着比模型更加重要的角色,本文针对机器学习应用数据处理的一个方面即“不平衡数据”下的机器学习方法进行了简单介绍。 引言 不管是在学术界还是工业界,不平衡学习已经吸引了越来越多的关注,不平衡数据的场景也出现在互联网应用的方方面面,如搜索引擎的点击预测(点击的网页往往
陆勤_数据人网
2018/02/27
1.8K0
【机器学习】不平衡数据下的机器学习方法简介
用R处理不平衡的数据
在分类问题当中,数据不平衡是指样本中某一类的样本数远大于其他的类别样本数。相比于多分类问题,样本不平衡的问题在二分类问题中的出现频率更高。举例来说,在银行或者金融的数据中,绝大多数信用卡的状态是正常的,只有少数的信用卡存在盗刷等异常现象。
大数据弄潮儿
2018/06/04
1.8K0
用R处理不平衡的数据
不平衡学习的方法 Learning from Imbalanced Data
之前做二分类预测的时候,遇到了正负样本比例严重不平衡的情况,甚至有些比例达到了50:1,如果直接在此基础上做预测,对于样本量较小的类的召回率会极低,这类不平衡数据该如何处理呢?
百川AI
2021/10/19
1.7K0
一文助你解决数据不平衡的疑惑
导语:这几年来,机器学习和数据挖掘非常火热,它们逐渐为世界带来实际价值。与此同时,越来越多的机器学习算法从学术界走向工业界,而在这个过程中会有很多困难。数据不平衡问题虽然不是最难的,但绝对是最重要的问
IT派
2018/03/29
1.3K0
一文助你解决数据不平衡的疑惑
Github|类别不平衡学习资源(下)
https://github.com/ZhiningLiu1998/awesome-imbalanced-learning
kbsc13
2020/05/27
9400
极端类别不平衡数据下的分类问题研究综述 | 硬货
不平衡学习是机器学习问题的一个重要子域,其主要关注于如何从类别分布不均衡的数据中学习数据的模式。在这篇文章中我们主要关注不平衡分类问题,特别地,我们主要关注类别极端不平衡场景下的二分类问题所面临的困难。
磐创AI
2019/06/19
1K0
处理不平衡数据的过采样技术对比总结
在不平衡数据上训练的分类算法往往导致预测质量差。模型严重偏向多数类,忽略了对许多用例至关重要的少数例子。这使得模型对于涉及罕见但高优先级事件的现实问题来说不切实际。
deephub
2023/12/28
1.3K0
处理不平衡数据的过采样技术对比总结
通过随机采样和数据增强来解决数据不平衡的问题
在开发分类机器学习模型时遇到的挑战之一是类别不平衡。大多数用于分类的机器学习算法都是在假设平衡类的情况下开发的,然而,在现实生活中,拥有适当平衡的数据并不常见。因此,人们提出了各种方案来解决这个问题,以及一些应用这些解决方案的工具或者类库。例如,imbalanced-learn 这个python库,它实现了最相关的算法来解决类不平衡的问题。
deephub
2021/03/10
1.5K0
通过随机采样和数据增强来解决数据不平衡的问题
机器学习中样本不平衡,怎么办?
在银行要判断一个"新客户是否会违约",通常不违约的人VS违约的人会是99:1的比例,真正违约的人 其实是非常少的。这种分类状况下,即便模型什么也不做,全把所有人都当成不会违约的人,正确率也能有99%, 这使得模型评估指标变得毫无意义,根本无法达到我们的"要识别出会违约的人"的建模目的。
数据STUDIO
2021/06/24
3.2K0
处理不平衡数据集的5种最有用的技术(1)
这几天忙着数学建模竞赛培训,刚好模拟题碰到了不均衡样本建模,那么今天就带大家来学习一下不平衡数据集处理的方法。
计算机与AI
2020/12/14
2.5K0
处理不平衡数据集的5种最有用的技术(1)
独家 | 一文教你如何处理不平衡数据集(附代码)
本文作者用python代码示例解释了3种处理不平衡数据集的可选方法,包括数据层面上的2种重采样数据集方法和算法层面上的1个集成分类器方法。
数据派THU
2019/05/31
1.1K0
处理不平衡数据的十大Python库
数据不平衡是机器学习中一个常见的挑战,其中一个类的数量明显超过其他类,这可能导致有偏见的模型和较差的泛化。有各种Python库来帮助有效地处理不平衡数据。在本文中,我们将介绍用于处理机器学习中不平衡数据的十大Python库,并为每个库提供代码片段和解释。
deephub
2023/09/29
5550
处理不平衡数据的十大Python库
数据不平衡问题都怎么解?
类似bagging的思想,有多个基学习器,每个基学习器都抽取一部分majority class,并且使用全部的minority class。这样,每个majority样本都能够被利用上,不会有信息的损失。
NewBeeNLP
2021/12/02
8000
数据不平衡问题都怎么解?
学习| 如何处理不平衡数据集
分类是机器学习中最常见的问题之一。处理任何分类问题的最佳方法是从分析和探索数据集开始,我们称之为探索性数据分析(EDA)。唯一目的是生成尽可能多的关于数据的见解和信息。它还用于查找数据集中可能存在的任何问题。在用于分类的数据集中发现的一个常见问题是不平衡类问题。
陆勤_数据人网
2019/05/16
2.3K0
学习| 如何处理不平衡数据集
用R语言实现对不平衡数据的四种处理方法
在对不平衡的分类数据集进行建模时,机器学习算法可能并不稳定,其预测结果甚至可能是有偏的,而预测精度此时也变得带有误导性。那么,这种结果是为何发生的呢?到底是什么因素影响了这些算法的表现? 在不平衡的数据中,任一算法都没法从样本量少的类中获取足够的信息来进行精确预测。因此,机器学习算法常常被要求应用在平衡数据集上。那我们该如何处理不平衡数据集?本文会介绍一些相关方法,它们并不复杂只是技巧性比较强。 本文会介绍处理非平衡分类数据集的一些要点,并主要集中于非平衡二分类问题的处理。一如既往,我会尽量精简地叙述,在文
机器学习AI算法工程
2018/03/14
2.6K0
用R语言实现对不平衡数据的四种处理方法
相关推荐
[深度学习技巧]·数据类别不平衡问题处理
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档