机器学习非平衡数据集概述

2023-05-16

定义:不平衡数据集:在分类等问题中,正负样本,或者各个类别的样本数目不一致。
这里写图片描述

研究不平衡类通常认为不平衡意味着少数类只占比10~20%。实际上,一些数据集远比这更不平衡。例如:

  1. 每年大约有2%的信用卡账户被欺骗。(大多数欺诈检测领域严重不平衡。)

  2. 状态医疗甄别通常在大量不存在此状态的人口中检测极少数有此状态的人(比如美国的HIV携带者仅占0.4%)。

  3. 磁盘驱动器故障每年约1%。

  4. 网络广告的转化率估计在10-3到10-6之间。

  5. 工厂生产故障率通常约0.1%。

直观的影响就是,用这些不平衡的数据训练出来的模型,其预测结果偏向于训练数据中数据比较多的那一类,在人脸检测的例子中,就是检测器的检测结果大部分都偏向于没有检测到人脸图像。
另外一个不平衡数据集,就是信用卡欺诈交易,如果平均的抽取数据,则大部分的数据都是非欺诈交易,只有非常少的部分数据是欺诈交易

影响:不平衡的数据集上做训练和测试,其得到的准确率是虚高的,比如在不平衡数据中,正负样本的比例为9:1时,当它的精度为90%时,我们很有理由怀疑它将所有的类别都判断为数据多的那一类。

  1. 不要用精确度(或错误率)去评估你的分类器。有两个严重的问题。第一,精确度简单的以0.5为阈值来处理二分类,但当数据非平衡时这通常是错的。第二,分类精确度是基于误差的一个简单计数,你应该知道得更多。你应该知道哪些类、在哪儿被混淆。如果你不明白这些点,阅读The Basics of Classifier Evaluation, Part 2可能会有用。你可以用一个ROC曲线,或者一个PR曲线来可视化你的分类器性能。

  2. 不要用score和predict从分类器获取硬分类(标签),而应该用proba和predict_proba获取概率估计。

  3. 当你获得概率估计后,不要盲目的以0.5为阈值来划分类别。观察性能曲线,来确定将要采样的阈值。早期的论文有许多错误发生就是因为研究人员简单的以0.5截断。

  4. 不管你训练什么,总是在自然分布上测试。见

sklearn.cross_validation.StratifiedKFold

  1. 你可能不需要概率估计来分类,但是当你需要时,使用校准。见

sklearn.calibration.CalibratedClassifierCV

以下是来自博客http://blog.csdn.net/chenriwei2/article/details/49227205 的解决方法

解决方法:8种

1.收集更多的数据:好处:更够揭露数据类别的本质差别,增加样本少的数目以便后面的数据重采样。

2.尝试改变性能评价标准:
当数据不平衡时,准确度已经失去了它原有的意义,
可以参考的度量标准有:1> 混淆矩阵CM 2>精度 3>召回率 4>F1 分数(权衡精度和召回率);5.Kappa 6,ROC曲线

3.重采样数据:
1,拷贝一部分样本偏少的数据多分,已达到平衡(过采样);
2,删除一部分样本偏多的数据,以使得达到平衡(欠采样);
在实际中,过采样和欠采样都会使用的。
在测试中,如果样本总数比较多,可以用欠采样的数据进行测试,如果样本总数比较少,可以用过采样的数据进行测试;另外应该测试随机采样的数据和非随机采样的数据,同时,测试不同比例正负样本的数据。

4.生成合成数据:
最简单的是,随机采样样本数目比较少的属性,
另外一个比较出名的方法为:SMOTE:它是一种过采样的方法,它从样本比较少的类别中创建新的样本实例,一般,它从相近的几个样本中,随机的扰动一个特征,

5.使用不同的算法:
不要试图用一个方法解所有的问题,尝试一些其他不同的方法,比如决策树一般在不平衡数据集上表现的比较的好。

6.尝试惩罚模型:
意思就是添加新的惩罚项到cost函数中,以使得小样本的类别被判断错误的cost更大,迫使模型重视小样本的数据。
比如:带惩罚项的SVM

7.使用不同的视角:
不平衡的数据集,有专门的邻域和算法做这个,可以参考他们的做法和术语。
比如:异常检测。

8.尝试新的改进:
比如:1.把样本比较多的类别,分解为一些更多的小类别,比如:原始我们想区分数字0和其它数字这二分类问题,我们可以把其它数字在分为9类,变成0–9的分类问题;

英文原文:https://www.svds.com/learning-imbalanced-classes/

原文翻译:http://blog.csdn.net/zhangf666/article/details/53364465

资源和进一步阅读

  1. 几种Jupyter notebooks说明了非平衡学习的各方面。

◎采样的高斯:Gaussians.ipynb

◎Wallance方法:blagging.py

◎ImbalancedClasses.ipynb

  1. MATLAB代码:http://web.mit.edu/rudin/www/code/BoxDrawingsCode.zip

  2. R孤立森林:https://sourceforge.net/projects/iforest/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习非平衡数据集概述 的相关文章

  • 数据结构试题

    数据结构300页最新试题 C语言实现 供个人学习 xff0c 严禁转载 xff0c 复制等 xff01 xff01 xff01 链接 xff1a http pan baidu com s 1kVHixan
  • 求n!的位数以及求n!具体的值(C or C++)

    首先我们先求n 位数 可以将n 表示成10的次幂 即n 61 10 M 10的M次方 则不小于M的最小整数就是 n 的位数 xff0c 对该式两边取对数 xff0c 有 M 61 log10 n 即 xff1a M 61 log10 1 4
  • AOJ-776 马的走法 动态规划

    马的走法 Time Limit 1000 ms Case Time Limit 1000 ms Memory Limit 64 MB Total Submission 14 Submission Accepted 10 Descriptio
  • AOJ-754 数根

    数根 Time Limit 1000 ms Case Time Limit 1000 ms Memory Limit 100 MB Total Submission 69 Submission Accepted 21 Description
  • AOJ-759 会绕圈的数

    会绕圈的数 Time Limit 1000 ms Case Time Limit 1000 ms Memory Limit 64 MB Total Submission 29 Submission Accepted 16 Descripti
  • 如何在win10 64位下搭载汇编环境(包含汇编dosbox和masm文件)

    网上的教程只能在win10中使用debug 命令 不能使用edit命令 找了半天终于找到了可以在64位机下使用的edit源文件并插入到网上下载的MASM包中 更多汇编及程序设计内容请访问omegaxyz com 汇编文件2019年7月 ht
  • JavaScript网页中动态显示时间

    本人网站 xff1a http www omegaxyz com 本文着重介绍一下如何在网页中使用JavaScript添加动态时间方法 Date对象的方法 Date 对象能够使你获得相对于国际标准时间 xff08 格林威治标准时间 xff0
  • 汇编语言实现简单的计算器

    欢迎访问我的网站 xff1a omegaxyz com 计算器实现简单的加减乘除运算 xff08 小于65536的正数 xff09 从键盘输入算数的等式 不接受复合算数如3 43 5 7 按 61 号输出结果 按 C 号作为CLEAR清零
  • 《汇编语言程序设计教程》人民邮电出版社第二版习题及参考答案

    网上的答案是第一版的 xff0c 重新整理了一下 汇编语言程序设计教程 人民邮电出版社第二版 刘慧婷 xff0c 王庆生 主编 习题及参考答案 更多汇编内容请访问 xff1a omegaxyz com 第一章至第五章 核对及编辑 xff1a
  • JavaScript和HTML及CSS的通俗解释

    1 什么是HTML xff08 超文本标记语言 Hyper Text Markup Language xff09 xff0c HTML 是用来描述网页的一种语言 2 CSS 层叠样式表 Cascading Style Sheets 样式定义
  • 计算机系统概论基本知识

    目录 chapter0 chapter1 binary system chapter2 chapter3 chapter4 chapter5 Pseudo Code or Program Design Language way to use
  • NSGA-Ⅱ算法C++实现(测试函数为ZDT1)

    在看C 43 43 实现之前 xff0c 请先看一下NSGA II算法概述 http www omegaxyz com 2017 04 14 nsga iiintro NSGA 就是在第一代非支配排序遗传算法的基础上改进而来 xff0c 其
  • 数据结构Huffman树及编码

    欢迎关注我的网站 xff1a http www omegaxyz com 一 实验目的 构造一个哈夫曼树 xff0c 并根据所构造的哈夫曼树求其哈夫曼树的编码 xff1b 二 基本思路 将每个英文字母依照出现频率由小排到大 xff0c 最小
  • 迷宫问题的通用解法C语言数据结构实现

    1 1问题描述 以一个m n的长方阵表示迷宫 xff0c 0和1分别表示迷宫中的通路和障碍 设计一个程序 xff0c 对任意设定的迷宫 xff0c 求出一条从入口到出口的通路 xff0c 或得出没有通路的结论 1 2基本要求 输入的形式和范
  • 如何用wordpress搭建个人博客

    欢迎访问我的网站 xff1a omegaxyz com WordPress是一种使用PHP语言开发的博客平台 xff0c 用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站 也可以把 WordPress当作一个内容管理系统
  • 课程设计哈夫曼编/译码系统

    欢迎访问我的网站 xff1a omegaxyz com 问题描述 xff1a 利用哈夫曼编码进行通信可以大大提高信道利用率 xff0c 缩短信息传输时间 xff0c 降低传输成本 但是 xff0c 这要求在发送端通过一个编码系统对待传数据预
  • JAVA“类”数组的创建与调用

    JAVA 类 数组的创建与调用和C 43 43 相比是不同的 先看这样一个类数组的创建 注 xff1a bookFeature 是一个类 错误1 xff1a class bookList span class hljs keyword pr
  • JAVA继承与多态概述

    更多JAVA及高级语言编程内容请访问omegaxyz com 1 可以从现有的类定义新的类 xff0c 这称为类的继承 新类称为次类 子类或继承类现有的类称为超类 父类或基类 2 构造方法用来构造类的实例 不同于属性和方法 xff0c 子类
  • 课程设计旅游景点咨询系统

    欢迎访问我的网站 xff1a omegaxyz com 问题描述 xff1a 创建一个至少有15个点的有向网表示的某个旅游景点的导游图 顶点代表景点 类型为字符串 xff08 例如 xff0c 泰山导游图 xff1a 天地广场门 xff0c

随机推荐

  • Android Studio程序无法加载到虚拟机解决方法

    阅读原文 xff1a 我的博客 xff1a omegaxyz com 安装玩Android studio之后创建一个项目 hello world 具体描述为 xff1a Waiting for target device to come o
  • windows系统C盘越来越大怎么办(包括win10)

    欢迎访问我的网站 xff1a omegaxyz com 对于Mac电脑来说 xff0c 不必太过担心垃圾清理 至于Windows用户电脑垃圾会越来越多 使用360和CCleaner已经满足不了用户的需求了 另外Win10在更新过程中会产生许
  • 企业信息化IT架构方法

    一 顶层业务架构 上 xff1a 打通上游供应商 中 xff1a 打通内部各业务部门 xff1b 打通各业务部门和财务部门 中 xff1a 打通各地区域 分支机构 下 xff1a 打通仓储物流 渠道分销 服务商 外 xff1a 打通电子商务
  • 教你用python高效刷leetcode

    由于Python语法的简洁性 xff0c 用python来刷leetcode往往能用比别的语言更少的代码量AC 但是如果不是对python很熟悉就会比较尴尬了 xff0c 如果有些功能明明有高效的内置方法因为不知道要自己实现 或者不了解其复
  • C语言和JAVA的区别在哪里?

    欢迎访问我的网站 xff1a omegaxyz com 1 Java与C语言各自的优势 C语言是面向过程的语言 xff0c 执行效率高 Java是面向对象的语言 xff0c 执行效率比C语言低 C语言最关键的是比Java多了指针 xff0c
  • 一分钟认识JAVA与Android的联系与区别

    欢迎访问我的网站 xff1a omegaxyz com Android是一种以Linux为基础的开放源码操作系统 JAVA是一种面向对象的编程语言 Android上的应用大多数是用JAVA开发的 xff0c 但是Android SDK引用了
  • 什么是前端开发工程师?

    欢迎访问我的网站 xff1a omegaxyz com 概述 前端工程师 xff0c 也叫Web前端开发工程师 他是随着web发展 xff0c 细分出来的行业 Web前端开发技术主要包括三个要素 xff1a HTML CSS和JavaScr
  • MATLAB常用数学函数

    欢迎访问我的网站 xff1a omegaxyz com abs x xff1a 纯量的绝对值或向量的长度 angle z xff1a 复数z的相角 Phase angle sqrt x xff1a 开平方 real z xff1a 复数z的
  • JAVA入门

    欢迎访问我的网站 xff1a omegaxyz com 工欲善其事 xff0c 必先利其器 首先先要下载JAVA IDE xff08 集成开发环境 xff08 IDE xff0c Integrated Development Environ
  • 编程语言(C语言,JAVA),程序设计,APP开发,算法

    更多精彩内容访问 我的网站omegaxyz com 或者关注我的公众号图灵技术域
  • 利用JavaScript批量删除QQ空间说说(只需一个浏览器)

    每个人都有历史 xff0c 记录说说是保存瞬间思想的最好方式 xff0c 但时间久了 xff0c 我们发现从前的灵光闪现是多么的好笑 xff0c 于是我们开始删说说 xff0c 可是说说那么多 xff0c 哎算了重注册一个QQ号吧 别这样
  • 浅析计算机科学在经济犯罪中的特征与表现

    原创文章 xff0c 转载请注明出处 xff1a http www omegaxyz com 2017 06 27 ecocriminallawessay 摘要 xff1a 大数据时代已经来临 与此同时计算机经济犯罪也呈现愈演愈烈的势态 它
  • 稳定排序和不稳定排序

    选择排序 快速排序 希尔排序 堆排序不是稳定的排序算法 xff0c 而冒泡排序 插入排序 归并排序和基数排序是稳定的排序算法 首先 xff0c 排序算法的稳定性大家应该都知道 xff0c 通俗地讲就是能保证排序前2个相等的数其在序列的前后位
  • 程序员必备网站

    1 CSDN http www csdn net CSDN Chinese Software Developer Network 创立于1999年 xff0c 是中国最大的IT社区和服务平台 xff0c 为中国的软件开发者和IT从业者提供知
  • ora 01017问题解决办法

    SQL gt startup ORACLE instance started Total System Global Area 914358272 bytes Fixed Size 2088184 bytes Variable Size 5
  • 数据结构串的基本操作及KMP算法

    将串的基本操作C语言实现 xff0c 实现KMP算法算出NEXT函数和NEXTVAL的值 SqString h的基本内容 span class hljs keyword typedef span span class hljs keywor
  • JAVA经典面试题(来源于互联网)

    面向对象编程 xff08 OOP xff09 Java是一个支持并发 基于类和面向对象的计算机编程语言 下面列出了面向对象软件开发的优点 xff1a 代码开发模块化 xff0c 更易维护和修改 代码复用 增强代码的可靠性和灵活性 增加代码的
  • 规则绝对公平时,社会财富的流向谁?

    从知乎有一个很有趣的问题 xff1a 房间里有100个人 xff0c 每人都有100元钱 xff0c 如果每过一分钟 xff0c 每个人都要拿出一元钱随机给另一个人 xff0c 最后这100个人的财富分布是怎样的 xff1f 这个问题 xf
  • 2017程序员综合素质调研测试

    只要志愿选得好 xff0c 年年期末是高考 高等数学 线性代数 C语言 计算机导论 数据结构 离散数学 电子技术 C 43 43 程序设计 汇编语言程序设计 计算机组成原理 编译原理 操作系统 数据库原理 JAVA程序设计 Python 下
  • 机器学习非平衡数据集概述

    定义 xff1a 不平衡数据集 xff1a 在分类等问题中 xff0c 正负样本 xff0c 或者各个类别的样本数目不一致 研究不平衡类通常认为不平衡意味着少数类只占比10 20 实际上 xff0c 一些数据集远比这更不平衡 例如 xff1