当前位置: 首页 > news >正文

【机器学习】数据均衡学习笔记

文章目录

      • 序言
      • 1. 样本不均衡
      • 2. 样本不均衡的影响以及样本均衡的意义
      • 3. 什么时候需要进行样本均衡/数据均衡
      • 4. 数据不均衡的解决办法

序言

  • 数据集制作过程中需要关注样本均衡问题,学习笔记,简单记录

1. 样本不均衡

  • 分类任务中不同类别样本数差别很大的情况,样本比例大于比如4:1可以认为样本不均衡,样本不均衡现象比较常见
  • 那么到底差异多少才算失衡呢,按照google developer的说法,我们一般可以把失衡分为三个程度:
    • 少数类 : 多数类 = 20%~40%, 轻度不均衡
    • 少数类 : 多数类 = 1%~20%, 中度不均衡
    • 少数类 : 多数类 < 1%, 极度不均衡

2. 样本不均衡的影响以及样本均衡的意义

  • 样本不均衡的影响

    • 假如”好、坏”两类样本占比是1000:1,只要预测为”好”,就能得到很高的准确率,那么模型学到的不是如何分别好坏,而是”好远比坏多”这样的先验信息,这样就背离了用模型去分别好坏的初衷;
    • 导致模型不能学习更本质的特征,影响模型的鲁棒性;
  • 样本均衡的意义

    • 通过解决样本不均衡,可以减少模型学习样本比例的先验信息,以获得能学习到辨别好坏这种本质特征的模型

3. 什么时候需要进行样本均衡/数据均衡

  • (1) 简单的线性可分任务,样本是否均衡可能影响不大
  • (2) 判断样本与真实样本分布是否一致且稳定,如果不是,数据如果带有先验信息可能就有副作用
  • (3) 某一类样本非常稀少的情况,模型很可能学习不好

4. 数据不均衡的解决办法

  • 数据均衡本质上是:通过某种方法使得不同类别的样本对于模型学习中的loss(或梯度)贡献是比较均衡的。以消除模型对不同类别的偏向性,学习到更本质的特征

  • 数据均衡的方法简单记录:

  • (1) 样本层面

    • 过采样和欠采样
      • 过采样会导致样本重复,可能导致过拟合:最直接的方法是简单的复制少数类样本形成多条记录,这种方式可能导致样本特征少而可能出现过拟合的问题;经过改进的过抽样方法通过在少数类中加入随机噪声、干扰数据或者通过一定规则产生新的合成样本
      • 欠采样可能导致类别间有重要差别的重要实例丢失,在过滤少量样本不影响模型训练的情况下,随机的删除一些多数类样本
    • 数据增强:
      • 使用常见的数据增强方法增加样本数据,如翻转、旋转、改变对比度、随机裁剪等
  • (2) loss层面: 主流的是代价敏感学习法cost sensitive,为不同的分类错误给与不同惩罚力度/权重

    • scikit的’class weight’方法
      • 为不同样本提供不同权重,少数类有更高权重,从而平衡各类别的学习,避免决策边界偏重多数类的现象
    • OHEM和focal loss
      • OHEM: Online Hard Example Mining, 算法的核心是选择一些困难样本(多样性和高损失的样本)作为训练的样本,针对性地改善模型学习效果;对于数据的类别不平衡问题,OHEM的针对性更强
      • Focal Loss: 在交叉熵损失函数CE的基础上增加了类别的不同权重以及困难样本的权重,使训练时更专注于难分类的样本,以改善模型的学习效果
  • (3) 模型层面:模型层面主要是选择一些对样本不均衡比较不敏感的模型,比如 逻辑回归在利用反向传播来优化参数时,数量少的那一类在反向传播求梯度时影响比较小,梯度容易向数量多的样本方向下降,所以对样本分布不均衡比较敏感。决策树基于特征的划分去创建分类树,可以强制的将不同类别样本分开,在样本不均衡上比较不敏感一些

    • 采样 + 集成学习的方法,训练若干分类器进行集成学习;采样过程是必须的,否则同样会有利于多数类
    • 异常检测:在样本类别极端不均衡的情况下,比如少数类只有几十个样本,分类问题考虑成异常检测问题可能会更好
  • (4) 决策及评估指标层面:采用不均衡的数据训练模型时,采用更好的决策和客观的评估,比如对比分类问题采用recall precision F1分数 混淆矩阵,样本不均衡时会明显改变这些指标的表现

    • 分类阈值移动:对于不均衡下模型的预测,调整模型对于不同类别偏好的的情况,如模型偏好预测负样本,偏向0,则我们分类阈值也往下调整,达到决策时类别平衡的目的
    • 低于类别不均衡的模型评估,可以采用AUC、AUPRC评估模型表现,对正负样本的比例情况不敏感

 


【参考文章】
样本不均衡的解决办法
样本不均衡介绍及解决办法

created by shuaixio, 2023.10.24

相关文章:

【机器学习】数据均衡学习笔记

文章目录 序言1. 样本不均衡2. 样本不均衡的影响以及样本均衡的意义3. 什么时候需要进行样本均衡/数据均衡4. 数据不均衡的解决办法 序言 数据集制作过程中需要关注样本均衡问题&#xff0c;学习笔记&#xff0c;简单记录 1. 样本不均衡 分类任务中不同类别样本数差别很大的…...

【软件教程】如何用C++交叉编译出能在Android运行的ELF程序或so动态库

一、配置NDK交叉编译平台 1. 打开Android的官方ndk下载链接https://developer.android.com/ndk/downloads?hlzh-cn&#xff0c;下载windows 64位ndk环境包。 2. 解压后将具有以下文件的路径加入到系统环境变量。 3. 配置好环境变量&#xff0c;如下图所示&#xff0c;Path中存…...

进阶JAVA篇- Map 系列集合的遍历方法与常用API

目录 1.0 Map 集合的说明 1.1 Map 集合的常用方法 1.2 Map 系列集合的特点 2.0 Map 系列集合的遍历方法&#xff08;三种方法&#xff09; 2.1 使用 keySet() 方法遍历 2.2 使用 entrySet() 方法遍历 2.3 使用 forEach() 方法遍历&#xff08;Java 8&#xff09; 1.0 Map 集合的…...

Auth.js:多合一身份验证解决方案 | 开源日报 No.60

nodejs/node Stars: 96.2k License: NOASSERTION Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。它具有以下关键特性和核心优势&#xff1a; 强大&#xff1a;Node.js 提供了强大且高效的服务器端运行能力&#xff0c;可以处理并发请求&#xff0c;并支持异步编程…...

SpringBoot整合Activiti7——任务监听器(七)

文章目录 一、任务监听器事件类型配置方式(选)代码实现xml文件创建监听器class方式expression方式delegateExpression 测试流程部署流程启动流程完成任务 一、任务监听器 任务监听器可以在任务创建、任务分配、任务完成、任务删除发生时触发&#xff0c;从而执行相应的逻辑。 事…...

电解电容寿命与哪些因素有关?

电解电容在各类电源及电子产品中是不可替代的元器件&#xff0c;这些电子产品中由于应用环境的原因&#xff0c;使它成为最脆弱的一环&#xff0c;所以&#xff0c;电解电容的寿命也直接影响了电子产品的使用寿命。 一、电解电容失效模式与因素概述 铝电解电容器正极、负极引出…...

Opencv-图像插值与LUT查找表

图像像素的比较 白色是255&#xff0c;黑色是0 min(InputArray src1,InputArray src2,OutputArray dst) max(InputArray src1,InputArray src2,OutpurArray dstsrc1:第一个图像矩阵&#xff0c;通道数任意src2&#xff1a;第二个图像矩阵&#xff0c;尺寸和通道数以及数据类型…...

我为什么写博客?写博客给我带来了什么?

1、写博客的契机 &#xff08;1&#xff09;刚开始接触CSDN&#xff0c;是大三的时候开始学习嵌入式开发&#xff0c;经常需要到网上百度查资料&#xff0c;由此经常游览CSDN上的博客&#xff1b; &#xff08;2&#xff09;在嵌入式的过程中&#xff0c;需要总结学习过的知识。…...

jdk11的HttpClient

我们都知道在jdk11之前都在用okhttp或者org.apache.httpcomponents 其实早在jdk9的时候这个方案就在孵化中 上面的截图来自openjdk的官网&#xff0c;注&#xff1a;openjdk是个开源项目&#xff0c;不存在侵权现象 这是openjdk的官网&#xff1a;JEP 110: HTTP/2 Client (In…...

Redis的优势

高性能 Redis是一种基于内存的数据存储系统&#xff0c;读写性能非常高&#xff0c;因此适用于对性能要求较高的应用场景。 数据结构丰富 Redis支持多种数据结构&#xff0c;如字符串、列表、集合、散列、有序集合等&#xff0c;可以满足不同的业务需求。还有一些特殊数据结…...

C++ string 类的其他操作

4.3.2 string 类的其他操作 在C新增string类之前,程序员也需要完成诸如给字符串赋值等工作。对于C语言式的字符串,程 序员使用C语言库中的函数来完成这些任务。头文件cstring(以前为string.h)提供了这些函数。例如,可 以使用函数 strcpy()将字符串复制到字符数组中,使用函数…...

structs2 重构成SpringBoot架构

# 目录 structs2 重构成SpringBoot架构 1.1 structs2架构&#xff1a; 1.2 springboot 架构 1.3 演化要点&#xff1a; 1.基于前端的展示层不需要修改 2.HttpServlet 将会有SpringBoot annotation 来处理 3.构建前置的Structs url 转发器&#xff0c;适配 4.ActionSupport将由…...

【MATLAB源码-第56期】基于WOA白鲸优化算法和PSO粒子群优化算法的三维路径规划对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1.粒子群算法&#xff08;Particle Swarm Optimization&#xff0c;简称PSO&#xff09;是一种模拟鸟群觅食行为的启发式优化方法。以下是其详细描述&#xff1a; 基本思想&#xff1a; 鸟群在寻找食物时&#xff0c;每只鸟都…...

【WinForm详细教程一】WinForm中的窗体、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox

文章目录 1.WinForm文件结构2. 窗体的常用属性、方法与事件2.1 常用属性&#xff08;可直接在属性中设置&#xff09;2.2 常用方法2.3 常用事件 3.Label、TextBox及Button控件4.RadioButton和CheckBox5.ListBox&#xff08;列表框&#xff09; 1.WinForm文件结构 .sln文件 &am…...

【SwiftUI模块】0060、SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建TabBar

SwiftUI模块系列 - 已更新60篇 SwiftUI项目 - 已更新5个项目 往期Demo源码下载 技术:SwiftUI、SwiftUI4.0、Instagram、Firebase 运行环境: SwiftUI4.0 Xcode14 MacOS12.6 iPhone Simulator iPhone 14 Pro Max SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建Tab…...

PureFlash云原生存储部署方法

PureFlash云原生存储 PureFlash是一个开源存储系统&#xff0c;它能为云计算和传统应用提供块存储服务。PureFlash最显著的优势是其高性能&#xff0c;每节点能提供超过100万IOPS随机写IO。 PureFlash可以以云原生的方式部署&#xff0c;并为云原生应用提供持久存储。 PureFl…...

SqueezeNet 一维,二维网络复现 pytorch 小白易懂版

SqueezeNet 时隔一年我又开始复现神经网络的经典模型&#xff0c;这次主要复的是轻量级网络全家桶&#xff0c;轻量级神经网络旨在使用更小的参数量&#xff0c;无限的接近大模型的准确率&#xff0c;降低处理时间和运算量&#xff0c;这次要复现的是轻量级网络的非常经典的一…...

Java 数据结构

枚举 Java枚举是一种特殊的类&#xff0c;它用于定义有限个特定的值&#xff0c;例如一周的星期或者性别。枚举在Java中被视为数据类型&#xff0c;你可以使用它们来创建枚举类型的变量&#xff0c;然后使用那些枚举值等。 在Java中&#xff0c;声明枚举类型需要使用enum关键字…...

python sqlalchemy(ORM)- 02 表关系

文章目录 表关系ORM表示 1v1ORM表示 1vm 表关系 1:1&#xff0c;表A 中的一条记录&#xff0c;仅对应表B中的一条记录&#xff1b;表B的一条记录&#xff0c;仅对应表A的一条记录。1:m&#xff0c;表A中的一条记录&#xff0c;对应表B中的多条记录&#xff0c;表B中的一条记录…...

Http长连接同一个socket多个请求和响应如何保证一一对应?

HTTP/2引入二进制数据帧和流的概念&#xff0c;其中帧对数据进行顺序标识&#xff0c;如下图所示&#xff0c;这样浏览器收到数据之后&#xff0c;就可以按照序列对数据进行合并&#xff0c;而不会出现合并后数据错乱的情况。同样是因为有了序列&#xff0c;服务器就可以并行的…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...