0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详细介绍数据均衡的方法以及运用的不同场景

新机器视觉 来源:CSDN 作者:fanstuck 2022-07-20 09:44 次阅读

前 言

对于整个数据建模来看,数据均衡算法属于数据预处理一环。当整个数据集从调出数据库到拿到手的时候,对于分类数据集来说类别一般都是不均衡的,整个数据集合也是较为离散的。因此不可能一拿到数据集就可进行建模,类别的不均衡会极大影响建模判断准确率。

其中,我们希望整个数据集合的类别数目都是相似的,这样其特征数据权重能够更好的计算出来,便于分类。对于预测模型也是如此。数据均衡是整个数学建模以及研究最重要不得不重视的一环,下面我将详细介绍数据均衡的方法以及运用的不同场景。

一、为什么要做数据均衡?

首先在进行实验之前我们要了解数据均衡的重要性,这是一件值得我们去投入众多精力的事。一旦数据均衡做的不好将极大可能影响模型的准确性。数据预处理决定我们模型的上限,在一些重要的数学建模比赛或者是SCI论文中,数据均衡绝对是浓墨重彩的一环。我们可以这样思考:

我们现在需要对一种疾病进行甄别,该病的发病概率为2%,而且很严重,100个人之间就可能会有2个人携带病毒。现在我们需要根据该病的特征数据构建能够判断患病的人。如果我们不进行数据均衡,倘若我们获得了10000份人的检测指标数据,其中有200人被标记为患病。那么我们立刻进行建模,因为患病人群数量极少,那么模型根据每一次特征权重计算反复迭代,获取最优的结果。那该模型为何不直接把判断人员数据归为健康人群呢。这样一来不管是判断的人群是否有无此病都能够得到98%的正确率甚至更高。那么我们的模型意义何在?

若是根据这个模型,再给10份数据其中有5份是患病者数据,那么此时建立的模型丝毫没有用处,甚至造成严重的后果。所以说数据均衡是整个建模中很重要的一环。如果我们一开始就把这200份患病者的指标进行数据填充与健康数据均衡,那样我们还能够发现获得该病之后的指标显著特征,为后续医生的判断提供有力的支持。因此数据均衡是必不可少的一环,现在让我们来了解根据数据集场景的不同我们该如何进行数据均衡。

二、数据场景

1.大数据分布不均衡

拿两个我所遇到过的场景建模来说,第一个网络用户购买行为数据集来说,共拥有十三万行的数据中仅3千条用户购买行为数据,如图所示。这样大数据量的不均衡情况,即为大数据量不均衡。

e6eb5fd4-0767-11ed-ba43-dac502259ad0.png

2.小数据分布不均衡

大数据量的不均衡情况居多,但难免有一些指标很难测量的场景。就如医学疾病检测。

e6fe81b8-0767-11ed-ba43-dac502259ad0.png

如图所示,该数据量小,仅有一万数据量,患病人数仅只有百名。这样的数据情况就为小数据分布不均衡。

这两类数据不均衡情况都有适合它们的处理算法。

三、均衡算法类型

机器学习深度学习中两者含义不同,但是思想方法类似。一个为数据中的采样方法,一个为图片的缩小和放大,这里重点解释机器学习的采样类型。

1.过采样

过采样也被称为上采样,这个方法更适用于小数据分布不均衡。如果是大数据分布不均衡,则将原来的小份类别不同的数据集扩充到与类别不同的数据集对等大小的情况。如第一个例子的数据,若进行过采样,则将会有超过26万的数据生成。与欠采样相比计算权重比例以及运算时间都会大大增加。甚至可能造成过拟合现象。而小数据分布不均衡运用该方法还能避免数据量太少引起的欠拟合。

以下是过采样效果图,图一为原始数据集。

e711601c-0767-11ed-ba43-dac502259ad0.png

2.欠采样

欠采样也被称为下采样,一般将将较大的类别数据进行缩减,直至和类型不同的小量数据集相对等。如我们将例子一的数据进行欠采样,13w的用户行为数据将缩减至6730条数据,进行建模的速度将会大大的加快。

以下是欠采样算法效果图:

poYBAGLXXkeAc5YsAADCrOfRUTk661.jpgpYYBAGLXXl-AFlQnAADBGnl_v4E362.jpg

3.组合采样

不论是过采样和欠采样都会与原数据集存在一定的误差,过采样会导致很多样本的数据特征与原样本数据重叠导致难以分类清楚。而数据清洗技术恰好可以处理掉重叠样本,所以可以将二者结合起来形成一个组合采样,先过采样再进行数据清洗。

poYBAGLXXnSAFdTbAADLG54eMDU706.jpgpoYBAGLXXoeASxlvAADKzrk22ec998.jpgpoYBAGLXXp2AaWzFAADVIV9JfpA363.jpg

四、算法具体种类

以Imbalancd sklearn库收录的算法来看,过采样共有11种方法,欠采样共有8种方法,组合采样有2种方法。

e7e08cde-0767-11ed-ba43-dac502259ad0.png

下面我们将从过采样-欠采样-组合采样大体三个类型的算法逐个了解其重算法种类的大致功能作用,以及使用场景:

1.欠采样算法

(1)RandomUnderSampler

随机欠采样是十分快捷的方式,从多数类样本中随机选取一些剔除掉。但是随着采样方法的研究和发展随机欠采样已经很少使用。随机欠采样会损失大量的数据,可能被剔除的样本可能包含着一些重要信息,导致后续建模模型质量并不是很好。

poYBAGLXYnyAP3rSAADEKl8avKY888.jpg

pYYBAGLXXseAboRRAADKQW3X1EQ994.jpg

(2)ClusterCentroids

通过使用K-Means聚类质心代替一个多数类的聚类,从而对多数类进行欠采样。通过带有N个聚类的KMeans算法拟合到多数类,并以N个聚类质心的坐标作为新的多数样本,从而保留N个多数样本。这和K-means方法原理是一样的。

poYBAGLXYmqAC4d7AADc7Lzimk4843.jpg
poYBAGLXXvOAWpyaAADQgJRPpX8159.jpg

(3)CondensedNearestNeighbour

CondensedNearestNeighbour 使用1近邻的方法来进行迭代, 来判断一个样本是应该保留还是剔除, 具体的实现步骤如下:

集合C: 所有的少数类样本;

1 选择一个多数类样本(需要下采样)加入集合C, 其他的2 这类样本放入集合S;

3 使用集合S训练一个1-NN的分类器, 对集合S中的样本进行分类;

4 将集合S中错分的样本加入集合C;

5 重复上述过程, 直到没有样本再加入到集合C.

poYBAGLXXxyAFjLUAAEDKFqTnM0404.jpg

(4)EditedNearestNeighbours

(5)RepeatedEditedNearestNeighbours

EditedNearestNeighbours删除其类别与其最近邻之一不同的多数类别的样本。这就是原理 RepeatedEditedNearestNeighbours。通过更改内部最近邻算法的参数,在每次迭代中增加它,与AllKNN略有不同 。

poYBAGLXX0GAVYEnAAEc5_Furvs322.jpgpYYBAGLXX1OAHEvBAAEfo69xjMg099.jpg

(6)AllKNN

与RepeatedEditedNearestNeighbours不同的是,该算法内部的最近邻算法的近邻数在每次迭代中都会增加。

代码在上面统一概括了,此三类算法类似,只不过都以EditedNearestNeighbours为基础在此上进行优化:

poYBAGLXX2aAR9uHAAEOQx_nAeM183.jpg

(7)InstanceHardnessThreshold

InstanceHardnessThreshold使用分类器的预测来排除样本。所有以低概率分类的样本都将被删除。

pYYBAGLXX5KAQJJkAAER0UHhUi8102.jpg

(8)NearMiss

NearMiss算法实施一些启发式规则以选择样本。NearMiss-1 从多数类中选择最近的少数类样本的平均距离最小的样本。NearMiss-2 从多数类中选择与负类最远样本的平均距离最小的样本。NearMiss-3 是一个两步算法:首先,对于每个少数样本, 将保留其最近邻;然后,选择的大多数样本是与最近邻居的平均距离最大的样本。


pYYBAGLXX-SAIKM1AAD_ly7QWMg664.jpgpoYBAGLXX-uAJnHIAAD8cbOgrUU174.jpg

(9)NeighbourhoodCleaningRul

NeighbourhoodCleaningRule使用 EditedNearestNeighbours删除一些样本。此外,他们使用 3 个最近邻删除不符合此规则的样本。

代码已贴在CondensedNearestNeighbour那一栏:

pYYBAGLXX_GAaY07AAEzFuVUDew655.jpg

(10)OneSidedSelection

使用了 1-NN 并用于TomekLinks删除被认为有噪声的样本。

代码已贴在CondensedNearestNeighbour那一栏:

poYBAGLXX_mAQrQ3AAEUj01c-PI354.jpg

(11) TomekLinks

TomekLinks :样本x与样本y来自于不同的类别,满足以下条件,它们之间被称之为TomekLinks:不存在另外一个样本z,使得d(x,z) < d(x.y)或者d(y,z) < d(x,y)成立.其中d(.)表示两个样本之间的距离,也就是说两个样本之间互为近邻关系.这个时候,样本x或样本y很有可能是噪声数据,或者两个样本在边界的位置附近。

TomekL inks函数中的auto参数控制Tomek' s links中的哪些样本被剔除.默认的ratio= 'auto'’ 移除多 数类的样本,当ratio='ll'时,两个样本均被移除。

2.过采样算法

在随机过采样的基础上,通过样本构造一方面降低了直接复制样本代理的过拟合的风险,另一方法实现了样本的均衡。比如样本构造方法 SMOTE(Synthetic minority over-sampling technique)及其衍生算法。

(1)SMOTE

通过从少量样本集合中筛选的样本 和 及对应的随机数 ,通过两个样本间的关系来构造新的样本 。SMOTE算法的基本思想是对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中,具体如下图所示,算法流程如下:

1 对于少数类中每一个样本 ,以欧氏距离为标准计算它到少数类样本集中所有样本的距离,得到其 k 近邻。

2 根据样本不平衡比例设置一个采样比例以确定采样倍率N,对于每一个少数类样本 ,从其k近邻中随机选择若干个样本,假设选择的近邻为 。

3 对于每一个随机选出的近邻 ,分别与原样本 按照如下的公式构建新的样本。

poYBAGLXYE6AGQAdAADMgfs8vAA621.jpg

伪代码: pYYBAGLXYH2AU2geAAFoaHyDH3I430.jpgpYYBAGLXYISAC8IQAADElNMDvg4232.jpg

SMOTE会随机选取少数类样本用以合成新样本,而不考虑周边样本的情况,这样容易带来两个问题:

1 如果选取的少数类样本周围也都是少数类样本,则新合成的样本不会提供太多有用信息。这就像支持向量机中远离margin的点对决策边界影响不大。

2 如果选取的少数类样本周围都是多数类样本,这类的样本可能是噪音,则新合成的样本会与周围的多数类样本产生大部分重叠,致使分类困难。

总的来说我们希望新合成的少数类样本能处于两个类别的边界附近,这样往往能提供足够的信息用以分类。

poYBAGLXYJyAdAaeAACRTws6yh8541.jpg

(2)RandomOverSampler

从样本少的类别中随机抽样,再将抽样得来的样本添加到数据集中。然而这种方法如今已经不大使用了,因为重复采样往往会导致严重的过拟合,因而现在的主流过采样方法是通过某种方式人工合成一些少数类样本,从而达到类别平衡的目的。

poYBAGLXYOeAV1D6AADtbI_Eazw662.jpg

BorderlineSMOTE、KMeansSMOTE、SVMSMOTE

SMOTE通过识别在重采样期间要考虑的特定样本来提出几种变体。边界版本 ( BorderlineSMOTE) 将检测在两个类之间的边界中选择哪个点。SVM 版本 ( SVMSMOTE) 将使用使用 SVM 算法找到的支持向量来创建新样本,而 KMeans 版本 ( KMeansSMOTE) 将在之前进行聚类,根据每个集群密度在每个集群中独立生成样本。


pYYBAGLXYSCADvs2AAGqMSHO_gs594.jpgpoYBAGLXYTyAGv6LAAGS91zxjmU591.jpgpoYBAGLXYVGAWScYAADYYU8Ob10332.jpg

在处理连续和分类特征的混合时, SMOTENC是唯一可以处理这种情况的方法。


但是,如果数据集仅由分类特征组成,则应使用SMOTEN.:

(4)ADASYN

不平衡学习的自适应综合采样方法,

ADASYN思想:基于根据少数类数据样本的分布自适应地生成少数类数据样本的思想:与那些更容易学习的少数类样本相比,更难学习的少数类样本会生成更多的合成数据。ADASYN方法不仅可以减少原始不平衡数据分布带来的学习偏差,还可以自适应地将决策边界转移到难以学习的样本上。

关键思想是使用密度分布作为标准来自动决定需要为每个少数类样本生成的合成样本的数量。从物理上来说,是根据不同少数族的学习难度来衡量他们的权重分布。ADASYN后得到的数据集不仅将提供数据分布的平衡表示(根据β系数定义的期望平衡水平),还将迫使学习算法关注那些难以学习的样本。

pYYBAGLXYa-ABbRJAAD4k4QUBtc837.jpg

3.组合采样

分别在Kinetic数据集和NTU-RGB+D数据集上进行实验。

(1)SMOTETomek、SMOTEENN

SMOTE允许生成样本。但是,这种过采样方法对底层分布没有任何了解。因此,可能会生成一些噪声样本,例如,当不同的类别不能很好地分离时。因此,应用欠采样算法来清理噪声样本可能是有益的。文献中通常使用两种方法:(i)Tomek 的链接和(ii)编辑最近邻清理方法。不平衡学习提供了两个即用型采样器SMOTETomek和 SMOTEENN.

pYYBAGLXYd2ACjTEAADMLrMS0wY995.jpgpYYBAGLXYeqAS1ZxAADDiHu3x7Q234.jpgpoYBAGLXYfGAeGcGAADX-tfW6hg080.jpg



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4610

    浏览量

    92860
  • 过采样
    +关注

    关注

    0

    文章

    21

    浏览量

    9584
  • 均衡算法
    +关注

    关注

    0

    文章

    13

    浏览量

    8907

原文标题:机器学习丨数据均衡算法种类大全+Python代码一文详解

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    EPS应急电源中均衡式充电装置的设计

    简要介绍均衡式充电装置的结构原理及特点, 详细阐述了应用于这种均衡充电模式的单元充电模块的设计要求、工作原理及设计方法,最后给出了试验
    发表于 11-10 10:40 3912次阅读
    EPS应急电源中<b class='flag-5'>均衡</b>式充电装置的设计

    80SJNB Advanced 均衡和串行数据分析方法

    3380SJNB Advanced 均衡和串行数据分析方法“本应用指南介绍了在有损耗或者耗散的信道上运行的串行数据标准使用的测试和测量
    发表于 11-26 10:44

    详细介绍R329开发环境搭建的方法

    本教程详细介绍了全志 R329 开发环境搭建的方法
    发表于 12-14 06:00

    ADC模块剩余代码的编写以及模块的运用方法

    剩余代码的编写以及模块的运用方法。1、补全模块C文件#include "reg52.h"#include "intrins.h"#define DELAY_TIME 5#define S...
    发表于 01-12 08:00

    DS1302模块剩余代码的编写以及运用方法

    以下DS1302模块剩余代码的编写以及模块的运用方法。1、补全模块C文件#include #include ***it SCK=P...
    发表于 01-12 08:26

    介绍EEPROM模块剩余代码的编写以及模块的运用方法

    以下EEPROM模块剩余代码的编写以及模块的运用方法。1、补全模块C文件#include "reg52.h"#include "intrins.h"#define DELAY_TIME 5...
    发表于 02-18 06:58

    串联锂离子电池组的均衡详细介绍

    串联锂离子电池组的均衡详细介绍 作为为电动汽车提供动力的大功率锂电池组,为了保证整个电池组的容量,对电池进行均衡管理是必要的。
    发表于 12-01 08:30 6210次阅读

    多租户环境下多机群网格数据负载均衡方法

    和网格数据表提出了矢量数据网格化负载均衡算法。根据数据的负载范围,采用四叉树网格化方法,将外包矩阵范围进行矫正,获取
    发表于 12-21 15:52 0次下载
    多租户环境下多机群网格<b class='flag-5'>数据</b>负载<b class='flag-5'>均衡</b><b class='flag-5'>方法</b>

    详细!使用 LVS 实现负载均衡原理及安装配置详解

    是学习 LVS 并对其进行了详细的总结记录。 一、负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用户的请求根据设置好
    发表于 01-21 14:01 1213次阅读

    均衡器数字代表什么_均衡器的调整方法详解

    本文首先解答了均衡器数字代表的是什么,其次阐述了均衡器的调整方法,分别从平衡悦耳的声音以及频率的音感特征方面来详细
    的头像 发表于 05-24 14:21 5w次阅读
    <b class='flag-5'>均衡</b>器数字代表什么_<b class='flag-5'>均衡</b>器的调整<b class='flag-5'>方法</b>详解

    一文看懂电视声音均衡器调节方法

    本文首先介绍了电视声音均衡器调节方法,其次阐述了声音均衡器调整方法,最后介绍了声音
    的头像 发表于 05-24 15:11 10.6w次阅读

    蓝牙耳机原理运用图的详细资料免费下载

    本文档的主要内容详细介绍的是蓝牙耳机原理运用图的详细资料免费下载。
    发表于 10-26 08:00 125次下载
    蓝牙耳机原理<b class='flag-5'>运用</b>图的<b class='flag-5'>详细</b>资料免费下载

    如何确定适合的负载均衡比例

    路由器的负载均衡是一种应用于网络中的技术,它可以平衡网络流量的分配,提高网络的性能和稳定性。在配置路由器的负载均衡时,选择合适的负载均衡比例非常重要。本文将详细
    的头像 发表于 12-15 10:36 1572次阅读

    信道均衡有哪些实现方式?

    信道均衡的实现方式主要包括线性自动应均衡、盲均衡和半盲均衡等。这些方法各有特点,选择哪种方法取决
    的头像 发表于 03-02 14:05 1394次阅读

    nginx负载均衡配置介绍

    代理 安装Keepalived 配置Keepalived 编写脚本监控Keepalived和nginx的状态 配置keepalived加入监控脚本的配置 nginx负载均衡介绍 nginx应用场景之一
    的头像 发表于 11-10 13:39 234次阅读
    nginx负载<b class='flag-5'>均衡</b>配置<b class='flag-5'>介绍</b>