分类预测建模都有一个基本的假设,即样本集中不同类别的样本个数基本相同,但是在实际任务中,经常会出现各类样本个数差别较大的情况,这样的样本集就是不平衡样本集,它对学习建模的性能会带来很大的影响,因此必须掌握常用的处理方法,本文针对这一点进行总结梳理。

1.什么是不平衡样本集?

不平衡样本集(class-imbalance dataset)是指分类预测任务中不同类别的训练样本的数量差别较大的数据集。
举例:比如一个样本集中正例10例,反例990例,正例占比仅为1%,是一个严重的不平衡样本集。
理想情况下,总希望训练集中各类样本分布均匀,但在实际情况中,样本集不平衡就是一个实实在在的现实而且合理的问题。比如流失预警模型中,真正流失的用户相对未流失的用户比例就是极小的;信用卡欺诈模型中,发生信用欺诈的用户也是极少的。

2.不平衡样本集带来的影响?

样本集不平衡会导致模型很难从样本量较少的一方中提取到有用的规律,使得模型的学习结果偏向于样本量较多的一方。比如上面这个例子,正例10例,反例990例,即使一个模型将全部样例预测为反例,正确率也可以达到99%,但是对于我们想找到的正例这一目标来说,这个模型是无效的。
一般地,对于一个二分类问题,正反例比例在1:5以内是可以不处理的,超过1:5就需要考虑处理这个问题。

3.不平衡样本集的处理方法

以二分类任务为例,介绍不平衡样本集的处理方法。主要分为三种处理方法:

3.1 对正例过抽样

对训练集中的正例进行过抽样(oversampling),即增加一些正例,使得正反例数目相接近。最简单的做法是直接复制正例的样本使样本数翻倍,但是这种方法带来的问题是,样本数的增加并没有带来新的特征,容易使模型产生较严重的过拟合。
一种改进的做法是SMOTE(Synthetic Minority Over-sampling Technique)算法,它是通过在正例中加入随机噪声、干扰数据或者一定规则来产生新的合成样本。

3.2 对反例欠抽样

对训练集中的反例进行欠抽样(undersampling),即减少一些反例,使得正反例数目相接近。最直接的做法是直接随机提出到一些反例来减少反例的规模,但是这种方法带来的问题是,会丢失反例的一些重要信息。
一种改进的做法是EasyEnsemble算法,它是利用集成学习的思路,将反例划分成若干个子集,将各个子集分别与正例组合成均衡的训练集,进行学习产生多个模型,每个模型相当于都进行了欠抽样,但整体上又没有丢失反例的重要信息。

3.3 阈值移动

一般地,分类预测模型都会产生一个实值或者概率值,同时需要设定一个阈值(threshold),将模型的预测值与这个阈值进行比较,来判定预测结果是正例还是反例。默认情况下,这个阈值会设为0.50。为什么是0.50?是因为上文中提到的一个基本假设,假定训练集中的正反样例个数基本相同。但是实际情况中,正反例并不都是0.50,所以此时如果仍然将阈值设定为0.50就显得不太合适,应该认为,只要模型预测的概率大于随机抽取的概率(即训练集中正例的占比)都应该被判定为正例。
按照这一思想,就产生了一种针对不平衡样本集的处理方法,即阈值移动(threshold-moving)
它是指,直接使用原始训练集进行学习,但是在用这个学习到的模型进行预测时,要将原始的正例比例考虑到正例识别的阈值设定中。

4.参考与感谢

[1] 机器学习
[2] Python数据分析与数据化运营
[3] 在分类中如何处理训练集中不平衡问题
[4] 如何处理分类中的训练数据集不均衡问题

模型构建<2>:不平衡样本集的处理的更多相关文章

  1. 员工离职困扰?来看AI如何解决,基于人力资源分析的 ML 模型构建全方案 ⛵

    作者:韩信子@ShowMeAI 数据分析实战系列:https://www.showmeai.tech/tutorials/40 机器学习实战系列:https://www.showmeai.tech/t ...

  2. CSS3之简易的3D模型构建[原创开源]

    CSS3之简易的3D模型构建[开源分享] 先上一张图(成果图):这个是使用 3D建模空间[源码之一] 制作出来的模型之一 当然这是一部分模型特写, 之前还制作过枪的3D模型等等. 感兴趣的朋友可以自己 ...

  3. ArcGIS Pro 简明教程(4)工具和模型构建器

    ArcGIS Pro 简明教程(4)工具和模型构建器 by 李远祥 工具箱中的工具 ArcGIS Pro 在1.3版本基本上已经继承了ArcMap的所有工具,而且会不断加入一些它自身才有的工具,例如适 ...

  4. wiki中文语料的word2vec模型构建

    一.利用wiki中文语料进行word2vec模型构建 1)数据获取 到wiki官网下载中文语料,下载完成后会得到命名为zhwiki-latest-pages-articles.xml.bz2的文件,里 ...

  5. Microsoft宣布为Power BI提供AI模型构建器,关键驱动程序分析和Azure机器学习集成

    微软的Power BI现在是一种正在大量结合人工智能(AI)的商业分析服务,它使用户无需编码经验或深厚的技术专长就能够创建报告,仪表板等.近日西雅图公司宣布推出几款新的AI功能,包括图像识别和文本分析 ...

  6. MXNET:深度学习计算-模型构建

    进入更深的层次:模型构造.参数访问.自定义层和使用 GPU. 模型构建 在多层感知机的实现中,我们首先构造 Sequential 实例,然后依次添加两个全连接层.其中第一层的输出大小为 256,即隐藏 ...

  7. ArcGIS模型构建器案例教程-批量复制工作空间所有要素类

    ArcGIS模型构建器案例教程-批量复制工作空间所有要素类 目的:批量复制工作空间所有要素类 工具名称:WorkspaceCopyFeatureClasses 使用方法:输入工作空间,指定输出工作空间 ...

  8. ArcGIS模型构建器案例教程-批量修改工作空间所有要素类的空间参考

    ArcGIS模型构建器案例教程-批量修改工作空间所有要素类的空间参考 目的:批量修改工作空间所有要素类的空间参考(坐标系) 工具名称:WorkspaceChangeSpatialReference 使 ...

  9. ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理

    ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理 计划时间:第二天下午 背景:数据量大,工程大 目的:自动化,批处理,定制业务流程,不写程序 教程:Pdf/343 数据:chap8/ex5 ...

随机推荐

  1. Python练习-猜年龄的LowB游戏

    Alex大神今天让我做一个猜年龄的游戏: 第一个游戏是你只能猜三次:真的很LowB啊~ # 编辑者:闫龙 #猜年龄游戏,3次后程序自动退出! ages = 29; #for循环3次 for i in ...

  2. 使用solrJ管理索引——(十四)

    a)          什么是solrJ solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务,如下图:

  3. C++ 和 MFC的学习

    1. 在Windows应用程序设计中,既可以使用个C的基本数据类型,也可以使用Windows自定义的数据类型.但要注意,凡是Windows自定义的关键字都要大写. 2. 什么是句柄? 在Windows ...

  4. aarch64_fc26_url

    http://linux.yz.yamagata-u.ac.jp/pub/linux/fedora-projects/fedora-secondary/releases/26/Everything/a ...

  5. 查看linux服务器内存信息

    查看服务器内存信息 dmidecode|grep -P -A5 "Memory\s+Device"|grep Size [root@localhost home]# dmideco ...

  6. python几种装饰器的用法

    用函数装饰函数 这种比较常见首先定义装饰器函数 def cache(func): data = {} @wraps(func) def wrapper(*args, **kwargs): key = ...

  7. Python 正则表达式提高

    re模块的高级用法 search re.search(pattern, string[, flags]) ​ 若string中包含pattern子串,则返回Match对象,否则返回None,注意,如果 ...

  8. IntelliJ IDEA + Tomcat ;On Upate Action 与 On Frame Deactivation

    On Upate Action 与 On Frame Deactivation  这两个选项的设置,依赖于 项目的部署方式 是war包 还是 exploded ,看下面的gif: 这里实在是太灵活了, ...

  9. Sql Server2005 Transact-SQL 新兵器学习总结之-排名函数

    Transact-SQL提供了4个排名函数: rand() , dense_rand() , row_number() , ntile() 下面是对这4个函数的解释:rank() 返回结果集的分区内每 ...

  10. (转载)solr实现满足指定距离范围条件的搜索

    配置schema.xml <?xml version="1.0" encoding="UTF-8" ?> <schema name=" ...