机器学习——下采样(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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python向量叉乘_矢量的点乘和叉乘公式

    python向量叉乘_矢量的点乘和叉乘公式向量的内积(点乘)定义概括地说,向量的内积(点乘/数量积)。对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,如下所示,对于向量a和向量b:a和b的点积公式为:这里要求一维向量a和向量b的行列数相同。注意:点乘的结果是一个标量(数量而不是向量)定义:两个向量a与b的内积为a·b=|a||b|cos∠(a,b),特别地,0·a=a·0=0;若a,b是非零向量,则a…

    2022年9月24日
    2
  • Linux虚拟主机通过FTP软件创建目录时提示550 Create Directory Operation Failed

    Linux虚拟主机通过FTP软件创建目录时提示550 Create Directory Operation Failed

    2021年10月7日
    57
  • 大数据平台建设

    大数据平台建设分布式系统基础架构Hadoopauthor:time:2018-12-12分布式系统基础架构HadoopHadoop详细介绍Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem…

    2022年4月30日
    33
  • qtcpsocket write_c文件读写

    qtcpsocket write_c文件读写QTcpSocket的读写函数一般是异步的,即write函数执行后,其实不一定会把数据写入socket,可能要等到事件循环(main函数的returna.exec())才会写入。如果需要立即写入,要执行QTcpSocket的flush函数。QTcpSocket的读函数也类似,我们定义一个槽函数voidslot_readyRead响应信号readyRead,槽函数中,能够读取的数据,也只有这

    2025年10月15日
    3
  • Group by 分组详解[通俗易懂]

    Group by 分组详解[通俗易懂]先来看下表1,表名为test: 表1  执行如下SQL语句: 1 2 SELECT name FROM test GROUP BY name   你应该很容易知道运行的结果,没错,就是下表2: 表2  可是为了能够更好的理解“groupby”多个列“和”聚合函数“的应用,我建议在思考的过程中,由表1到表2的过程中…

    2022年5月25日
    31
  • [分享]Ubuntu12.04安装基础教程(图文)

    [分享]Ubuntu12.04安装基础教程(图文)

    2021年12月4日
    49

发表回复

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

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