机器学习——下采样(under-sampling)「建议收藏」

下采样(under-sampling)什么是下采样?当原始数据的分类极不均衡时,如下图我们要想用这样的数据去建模显然是存在问题的。尤其是在我们更关心少数类的问题的时候数据分类不均衡会更加的突出,例如,信用卡诈骗、病例分析等。在这样的数据分布的情况下,运用机器学习算法的预测模型可能会无法做出准确的预测,最后的模型显然是趋向于预测多数集的,少数集可能会被当做噪点或被忽视,相比多数集,少数集被…

大家好,又见面了,我是你们的朋友全栈君。

下采样(under-sampling)

什么是下采样?

当原始数据的分类极不均衡时,如下图
在这里插入图片描述
在这里插入图片描述
我们要想用这样的数据去建模显然是存在问题的。尤其是在我们更关心少数类的问题的时候数据分类不均衡会更加的突出,例如,信用卡诈骗、病例分析等。在这样的数据分布的情况下,运用机器学习算法的预测模型可能会无法做出准确的预测,最后的模型显然是趋向于预测多数集的,少数集可能会被当做噪点或被忽视,相比多数集,少数集被错分的可能性很大。从本质上讲,机器学习算法就是从大量的数据集中通过计算得到某些经验,进而判定某些数据的正常与否。但是,不均衡数据集,显然少数类的数量太少,模型会更倾向于多数集。

常用的下采样方法

解决数据分布不均衡的下采样的目的就从多数集中选出一部分数据与少数集重新组合成一个新的数据集。那么如何在多数集中选出这样的数据呢?

1. 随机下采样

随机欠采样的思想同样比较简单,就是从多数类样本中随机选取一些剔除掉。这种方法的缺点是被剔除的样本可能包含着一些重要信息,致使学习出来的模型效果不好。

2. EasyEnsemble 和 BalanceCascade

EasyEnsemble和BalanceCascade采用集成学习机制来处理传统随机欠采样中的信息丢失问题。

  • EasyEnsemble将多数类样本随机划分成n个子集,每个子集的数量等于少数类样本的数量,这相当于欠采样。接着将每个子集与少数类样本结合起来分别训练一个模型,最后将n个模型集成,这样虽然每个子集的样本少于总体样本,但集成后总信息量并不减少。
  • 如果说EasyEnsemble是基于无监督的方式从多数类样本中生成子集进行欠采样,那么BalanceCascade则是采用了有监督结合Boosting的方式(Boosting方法是一种用来提高弱分类算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数)。在第n轮训练中,将从多数类样本中抽样得来的子集与少数类样本结合起来训练一个基学习器H,训练完后多数类中能被H正确分类的样本会被剔除。在接下来的第n+1轮中,从被剔除后的多数类样本中产生子集用于与少数类样本结合起来训练,最后将不同的基学习器集成起来。BalanceCascade的有监督表现在每一轮的基学习器起到了在多数类中选择样本的作用,而其Boosting特点则体现在每一轮丢弃被正确分类的样本,进而后续基学习器会更注重那些之前分类错误的样本。

3. NearMiss

NearMiss本质上是一种原型选择(prototype selection)方法,即从多数类样本中选取最具代表性的样本用于训练,主要是为了缓解随机欠采样中的信息丢失问题。NearMiss采用一些启发式的规则来选择样本,根据规则的不同可分为3类:

  • NearMiss-1:选择到最近的K个少数类样本平均距离最近的多数类样本
  • NearMiss-2:选择到最远的K个少数类样本平均距离最近的多数类样本
  • NearMiss-3:对于每个少数类样本选择K个最近的多数类样本,目的是保证每个少数类样本都被多数类样本包围

NearMiss-1和NearMiss-2的计算开销很大,因为需要计算每个多类别样本的K近邻点。另外,NearMiss-1易受离群点的影响,如下面第二幅图中合理的情况是处于边界附近的多数类样本会被选中,然而由于右下方一些少数类离群点的存在,其附近的多数类样本就被选择了。相比之下NearMiss-2和NearMiss-3不易产生这方面的问题。

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124688.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java字符串常量池_字符串常量池溢出

    Java字符串常量池_字符串常量池溢出包装类对象池是不是JVM常量池的一种?Java创建newString会产生多少个对象

    2022年7月28日
    5
  • pki体系包括_pct体系简介

    pki体系包括_pct体系简介1:PKI的概念        PKI(publickeyinfrastructure),即公钥基础设施,是一种以数字证书机制为基础,依托应用密码学技术(特别是公钥技术,包括加密、签名等应用技术模式)实施并提供安全服务的具体普遍适用性的网络安全基础设施。2:PKI的功能        一个有效的PKI系统必须是安全的和透明的,它的主要目的是通过自动管理密钥和证书,为用户建立起一个安全的

    2022年8月22日
    9
  • 三大主流芯片架构特点是_zachman架构

    三大主流芯片架构特点是_zachman架构根据以往互联网时代的经验,芯片永远都是产业链最上游的存在,是行业先导指标。众所周知,目前芯片领域有两大霸主,分别是Intel和Arm,Intel掌握着X86的架构,并且只授权给AMD一家公司,其他厂商都无法生产X86架构的芯片,而Intel与微软的windows系统结盟,称霸台式机市场并且牢不可破。Arm在移动领域是一家独大,不管是高通、三星或是华为、联发科都是基于Arm的架构开发。MIPS是一个…

    2025年9月30日
    3
  • pandas中使用fillna函数填充NaN值「建议收藏」

    pandas中使用fillna函数填充NaN值「建议收藏」1.参数解析1.1inplace参数取值:True、FalseTrue:直接修改原对象False:创建一个副本,修改副本,原对象不变(缺省默认)1.2method参数取值:{‘pad’,‘ffill’,‘backfill’,‘bfill’,None},defaultNonepad/ffill:用前一个非缺失值去填充该缺失值backfill/bfill:用下一个非缺失值填充该缺失值None:指定一个值去替换缺失值(缺省默认这种方式)1.3limit参数:限制

    2022年8月12日
    8
  • spring源码分析之如何解决循环依赖

    spring源码分析之如何解决循环依赖

    2021年8月4日
    51
  • 26Region_awing

    26Region_awing给出 n 个点的一棵树,多次询问两点之间的最短距离。注意:边是无向的。所有节点的编号是 1,2,…,n。输入格式第一行为两个整数 n 和 m。n 表示点数,m 表示询问次数;下来 n−1 行,每行三个整数 x,y,k,表示点 x 和点 y 之间存在一条边长度为 k;再接下来 m 行,每行两个整数 x,y,表示询问点 x 到点 y 的最短距离。树中结点编号从 1 到 n。输出格式共 m 行,对于每次询问,输出一行询问结果。数据范围2≤n≤104,1≤m≤2×104,0<k≤1

    2022年8月9日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号