模型构建<2>:不平衡样本集的处理
分类预测建模都有一个基本的假设,即样本集中不同类别的样本个数基本相同,但是在实际任务中,经常会出现各类样本个数差别较大的情况,这样的样本集就是不平衡样本集,它对学习建模的性能会带来很大的影响,因此必须掌握常用的处理方法,本文针对这一点进行总结梳理。
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>:不平衡样本集的处理的更多相关文章
- 员工离职困扰?来看AI如何解决,基于人力资源分析的 ML 模型构建全方案 ⛵
作者:韩信子@ShowMeAI 数据分析实战系列:https://www.showmeai.tech/tutorials/40 机器学习实战系列:https://www.showmeai.tech/t ...
- CSS3之简易的3D模型构建[原创开源]
CSS3之简易的3D模型构建[开源分享] 先上一张图(成果图):这个是使用 3D建模空间[源码之一] 制作出来的模型之一 当然这是一部分模型特写, 之前还制作过枪的3D模型等等. 感兴趣的朋友可以自己 ...
- ArcGIS Pro 简明教程(4)工具和模型构建器
ArcGIS Pro 简明教程(4)工具和模型构建器 by 李远祥 工具箱中的工具 ArcGIS Pro 在1.3版本基本上已经继承了ArcMap的所有工具,而且会不断加入一些它自身才有的工具,例如适 ...
- wiki中文语料的word2vec模型构建
一.利用wiki中文语料进行word2vec模型构建 1)数据获取 到wiki官网下载中文语料,下载完成后会得到命名为zhwiki-latest-pages-articles.xml.bz2的文件,里 ...
- Microsoft宣布为Power BI提供AI模型构建器,关键驱动程序分析和Azure机器学习集成
微软的Power BI现在是一种正在大量结合人工智能(AI)的商业分析服务,它使用户无需编码经验或深厚的技术专长就能够创建报告,仪表板等.近日西雅图公司宣布推出几款新的AI功能,包括图像识别和文本分析 ...
- MXNET:深度学习计算-模型构建
进入更深的层次:模型构造.参数访问.自定义层和使用 GPU. 模型构建 在多层感知机的实现中,我们首先构造 Sequential 实例,然后依次添加两个全连接层.其中第一层的输出大小为 256,即隐藏 ...
- ArcGIS模型构建器案例教程-批量复制工作空间所有要素类
ArcGIS模型构建器案例教程-批量复制工作空间所有要素类 目的:批量复制工作空间所有要素类 工具名称:WorkspaceCopyFeatureClasses 使用方法:输入工作空间,指定输出工作空间 ...
- ArcGIS模型构建器案例教程-批量修改工作空间所有要素类的空间参考
ArcGIS模型构建器案例教程-批量修改工作空间所有要素类的空间参考 目的:批量修改工作空间所有要素类的空间参考(坐标系) 工具名称:WorkspaceChangeSpatialReference 使 ...
- ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理
ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理 计划时间:第二天下午 背景:数据量大,工程大 目的:自动化,批处理,定制业务流程,不写程序 教程:Pdf/343 数据:chap8/ex5 ...
随机推荐
- [Openwrt 扩展上篇]USB挂载&U盘启动&Samba共享
最近偷懒,没学习,反想起自己的路由刷了Openwrt,正好闲置了一个硬盘想拿来做个网络硬盘,于是开始了折腾....这里将不谈论如何刷Openwrt,如何ssh,如何添加PPOE,如何添加相对应服务的包 ...
- C#之WinForm基础 新建一个不可编辑的comboBox
慈心积善融学习,技术愿为有情学.善心速造多好事,前人栽树后乘凉.我今于此写经验,愿见文者得启发. 1.拉控件 2.添加可选数据 3.改变基本样式 4.效果图 C#优秀,值得学习.Winform,WPF ...
- 25 The Go image/draw package go图片/描绘包:图片/描绘包的基本原理
The Go image/draw package go图片/描绘包:图片/描绘包的基本原理 29 September 2011 Introduction Package image/draw de ...
- js点击页面其他地方如何隐藏div元素菜单
web页面常用的一个需求,写下拉菜单是我们往往不是用select_option,而是自定义一个元素列出选项来满足需求,当我们点击按钮出现菜单, 点击按钮或菜单以外页面空白地方隐藏该菜单,这里提供一种简 ...
- Nginx - Header详解
1. 前言 通过 HttpHeadersModule 模块可以设置HTTP头,但是不能重写已经存在的头,比如可能相对server头进行重写,可以添加其他的头,例如:Cache-Control,设置生存 ...
- IOS使用命令行打包
1.安装证书 develop:调试证书,包含调试信息 安装时需要证书已加入设备UDID或是越狱设备才能安装. distribution:正式证书,发布到appstore所用,屏蔽了调试信息,要想测试安 ...
- git ——本地项目上传到git
1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2.把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点 ...
- ZOJ 3781 Paint the Grid Reloaded(DFS连通块缩点+BFS求最短路)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5268 题目大意:字符一样并且相邻的即为连通.每次可翻转一个连通块X( ...
- ZOJ 3962 Seven Segment Display(数位DP)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3962 题目大意: 有t组数据. 给你一个n,和8位的十六进制数s ...
- POJ 3376 Finding Palindromes(manacher求前后缀回文串+trie)
题目链接:http://poj.org/problem?id=3376 题目大意:给你n个字符串,这n个字符串可以两两组合形成n*n个字符串,求这些字符串中有几个是回文串. 解题思路:思路参考了这里: ...