机器学习:如何解决类别不平衡问题

news2025/7/4 1:14:09

类别不平衡是一个常见问题,其中数据集中示例的分布是倾斜的或有偏差的。

1. 简介

类别不平衡是机器学习中的一个常见问题,尤其是在二元分类领域。当训练数据集的类分布不均时会发生这种情况,从而导致训练模型存在潜在偏差。不平衡分类问题的示例包括欺诈检测、索赔预测、违约预测、客户流失预测、垃圾邮件检测、异常检测和异常值检测。为了提高我们模型的性能并确保其准确性,解决类不平衡问题很重要。

在这篇文章[1]中,我们将研究解决此问题的三种方法,以提高我们模型的性能和准确性。我们还将讨论为这些类型的任务选择正确指标的重要性。

alt

2. 从多分类到二分类

我们将介绍二元分类的概念以及如何利用它来解决类别不平衡的挑战。二元分类涉及将数据集分为两组:正组和负组。通过将问题分解为多个二类问题,这些原则也可以扩展到多类问题。这种技术使我们能够解决类不平衡问题,并利用一系列方法来增强我们模型的性能。

3. 常用方法

有几种方法可用于解决机器学习中的类不平衡问题。一种方法是欠采样或过采样,也称为“类增强”,它涉及调整少数类或多数类中的样本数量以改善数据集的平衡。另一种选择是改变损失函数的权重,这可以帮助模型在训练过程中更多地关注少数类。最后,可以初始化最后一层的偏差来预测不等概率,让模型更好地预测少数类。这些方法可以单独使用或组合使用,具体取决于具体问题的需要。

3.1. 欠/重采样

重采样是一种用于解决机器学习中类别不平衡的常用技术。它涉及通过从原始数据集中选择示例来创建具有不同类别分布的新版本训练数据集。一种流行的重采样方法是随机重采样,其中为转换后的数据集随机选择示例。重采样通常被认为是解决不平衡分类问题的一种简单有效的策略,因为它允许模型在训练期间更均匀地考虑来自不同类别的示例。但是,重要的是要仔细考虑重采样的权衡和局限性,因为它还会在数据集中引入额外的噪声和偏差。下图提供了过采样(上)和欠采样(下)的图示。

alt

3.2. 权重修改

解决类不平衡的第二种方法是修改损失函数的权重。在平衡数据集中,损失函数的梯度(即朝向局部最小值的方向)被计算为所有样本的平均梯度。

alt

但是,在不平衡的数据集中,该梯度可能无法准确反映少数类的最佳方向。为了解决这个问题,我们可以通过作为优化过程的一部分的过采样或使用加权损失来分解梯度。

alt

过采样涉及人为地增加数据集中少数类示例的数量,这可以帮助模型在训练过程中更准确地考虑这些示例。

alt

或者,使用加权损失涉及为少数类示例分配更高的权重,以便模型更加强调正确分类这些示例。

alt

这两种方法都可以帮助提高模型在不平衡数据集上的性能。

3.3. 初始化偏置

我们在这篇文章中介绍的解决机器学习中类不平衡问题的最后一种技术是偏差初始化,它涉及调整模型参数的初始值以更好地反映训练数据的分布。更具体地说,我们将设置最终层偏差。例如,在具有 softmax 激活函数的不平衡二元分类问题中,我们可以将最后一层的初始偏差设置为 b=log(P/N),其中 P 是正例的数量,N 是正例的数量反面例子。这可以帮助模型在训练过程的初始化时更准确地衡量正类和负类的概率,提高其在不平衡数据集上的性能。

仔细考虑偏置初始化的权衡和局限性很重要,因为如果初始化错误,它可能会在模型中引入额外的偏置。然而,如果使用得当,这种技术可以成为解决类不平衡和提高模型性能的有效方法。

4. 分类指标

在机器学习中处理不平衡数据集时,选择正确的评估指标以准确评估模型的性能至关重要。例如,在包含 99,000 张猫图像和仅 1,000 张狗图像的数据集中,模型的初始准确度可能为 99%。但是,此指标可能无法真实地表示模型准确分类少数类(狗)的能力。

评估分类器在不平衡数据集上的性能的一个有用工具是基于混淆矩阵的指标。该矩阵提供了模型做出的真阳性、真阴性、假阳性和假阴性预测的细分,从而可以更细致地了解其性能。在不平衡数据集上评估模型时,考虑各种指标非常重要,以便全面了解其功能。

混淆矩阵的快速回顾:在评估分类器的性能时,考虑各种指标很有帮助。混淆矩阵是理解真阳性 (TP) 预测和假阴性 (FN) 预测的有用工具,在真阳性 (TP) 预测中,模型正确识别了阳性类,在假阴性 (FN) 预测中,模型错误地将样本分类为负类实际上是积极的。混淆矩阵还提供有关假阳性 (FP) 预测的信息,其中模型错误地将样本识别为实际上是阴性的阳性类,以及真阴性 (TN) 预测,其中模型正确识别了阴性类。通过考虑这些不同类型的预测,我们可以更全面地了解模型的性能。

alt

为了了解分类器的性能,重要的是要考虑一系列评估指标。准确率、精确率和召回率是三个常用的指标,可以从混淆矩阵中计算出来。

准确度反映了模型预测的整体准确度,计算方式为正确预测的数量除以预测总数。精度测量实际正确的正预测的比例,计算为真正的正预测数除以模型做出的正预测总数。而召回率,也称为灵敏度或真阳性率,捕获模型正确预测的实际阳性样本的比例,计算为真阳性预测的数量除以实际阳性样本的总数。

alt
  • 对苹果和香蕉进行分类的示例 (90:10):
alt
alt

在此示例中,指标可能表明苹果类别的表现出色。然而,考虑香蕉类的性能也很重要,因为模型的整体性能可能并不一致。仍然有必要评估模型在香蕉类上的表现,以充分了解其能力。通过考虑这两个类别的性能,我们可以识别任何潜在的不平衡以改进模型。我们将使用两个额外的指标,误报率和负率。

假阳性率表示被模型错误预测为阳性的实际负样本的比例,计算为假阳性预测的数量除以实际负样本的总数。假阴性率反映了被模型错误预测为阴性的实际阳性样本的比例,计算为假阴性预测的数量除以实际阳性样本的总数。

alt

在这种情况下,很明显存在不平衡的类别问题。检测和诊断类不平衡可能具有挑战性,使用适当的指标来识别它很重要。

总结

类不平衡是机器学习中的一个常见问题,当数据集中的示例分布倾斜或有偏差时,就会发生这种情况。这可能会导致训练模型出现偏差,从而对其性能产生负面影响。在这篇文章中,我们探讨了解决类不平衡的各种方法,包括重采样、修改损失函数的权重以及初始化最后一层的偏差。这些技术可以单独或组合使用。我们还强调了选择正确的评估指标(例如准确性、精确度和召回率)以准确评估这些模型的性能的重要性。通过理解和解决类不平衡问题,我们可以大大提高模型的可靠性和有效性。


欢迎Star -> 学习目录


参考资料

[1]

Source: https://towardsdatascience.com/solving-the-class-imbalance-problem-58cb926b5a0f

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/145648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity云消散】理论基础:实现SDF的8SSEDT算法

距离元旦假期已经过去5天了(从31号算起!),接着开始学习! 游戏中的很多渲染效果都离不开SDF,那么SDF究竟是什么呢?到底是个怎么样的技术?为什么能解决那么多问题? 1 SD…

git介绍及环境搭建

git介绍及环境搭建Git介绍Git安装流程配置用户信息git工作流程与常用命令问题点总结主要工作流程git工作流程与原理总结Git介绍 1.Git是什么? Git版本控制系统是一个分布式的系统,是用来保存工程源代码历史状态(游戏存档)的命令行工具 GIT是一个命令行工具,用于版…

基于Java+Spring+vue+element社区疫情服务平台设计和实现

基于JavaSpringvueelement社区疫情服务平台设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源…

Django+channels -> websocket

Django+channels -> websocket 学习视频: https://www.bilibili.com/video/BV1J44y1p7NX/?p=10 workon # 查看虚拟环境 mkvirtualenv web -p python3.10 # 创建虚拟环境 workon web # 进入虚拟环境pip insatll django channelsdjango-admin startproject ws_demo python …

【NI Multisim 14.0原理图环境设置——元器件库管理】

目录 序言 一、元器件库管理 🍉1.“元器件”工具栏 🍊(1)电源/信号源库 🍊(2)基本器件库 🍊(3)二极管库 🍊(4)晶体管…

seL4 背景知识

1 seL4 演变 1.1 微内核 微内核发展到目前为止经历了三代, 这里做一些归纳。参考《现代操作系统: 原理与实现》中操作系统结构一章, 关于微内核架构发展的介绍。 第一代微内核设计将许多内核态功能放到用户态, Mach 微内核是第一代微内核的代表。第二代微内核设计将对 IPC 优…

C++学习记录——일 C++入门(1)

C入门(1) 文章目录C入门(1)一、C关键字二、C第一个程序三、命名空间1、域作用限定符2、了解命名空间3、命名空间的使用四、C输入输出五、缺省参数六、函数重载七、引用1、引用符号2、引用的部分使用场景一、C关键字 关键字有98个&…

filebeat采集nginx日志

背景我们公司项目组用的是elastic的一整套技术栈,es,kibana,filebeat和apm,目前已经可以采集网关各个微服务的日志。架构图现在需要在原来的基础上把nginx这的日志也采集上来,方便做链路跟踪问题与思路原先traceId是在…

数字经济时代,“8K+”开拓行业新格局

2023深圳国际8K超高清视频产业发展大会召开,大会以“超清互联 数智创新”为主题,汇聚两院院士、产业领袖、领军企业共同深入探讨超高清产业发展现状、关键问题和未来趋势,并集中发布《深圳市超高清视频显示产业白皮书(2023版&…

「数据密集型系统搭建」开卷篇|什么是数据密集型系统

在我们开发的诸多系统,基本都可以视为“数据密集型系统”,数据是一切物质的载体,我们依靠数据做存储记录,通过数据进行信息传递交换,最终还要数据来呈现和展示等,从一定视角而言,系统中最核心、…

临时用网搞不定?别着急,5G网络“急救车”来啦

如何在1天时间内,用不超过5名装维人员,完成超过200间宿舍的网络覆盖,让即将踏上考场的高三学子们尽快用上网络? 近期,这个问题一直困扰着重庆电信客户经理周睿。原来,由于疫情原因,重庆市某中学…

WINDOWS安装Oracle11.2.0.4

(一)Oracle服务器端安装 1.运行Oracle11g服务器端安装程序setup.exe,弹出如下界面: 2.如上界面中,把默认打上的勾去掉,然后点击【下一步】,弹出如下界面: 3.如上界面中,选择跳过软件更新,然后点击【下一步…

指针进阶(三)再谈数组与串函数

🌞欢迎来到C语言的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 🌠本阶段属于练气阶段,希望各位仙友顺利完成…

【阶段二】Python数据分析数据可视化工具使用01篇:数据可视化工具介绍、数据可视化工具安装、折线图与柱形图

本篇的思维导图: 数据可视化工具介绍 Matplotlib是最著名的绘图库,主要用于二维绘图,当然也可以进行简单的三维绘图。它提供了一整套丰富的命令,让我们可以非常快捷地用Python可视化数据,而且允许输出达到出版质量的多种图像格式。 Seaborn是在matplo…

国内电容市场份额达七成,松下如何抢占高地?

01 电容市场发展 电容器是三大电子被动元器件之一,是电子线路中不可缺少的基础元件,约占全部电子元件用量的40%,产值的66%。中国电容器行业规模增速持续高于全球规模增速,中国市场的快速增长成为拉动全球电容器行业规模增长的主要…

【Python从入门到进阶】2、Python环境的安装

接上篇《1、初识Python》 上一篇我们对Python这门编程语言进行了一个基本的了解,本篇我们来学习如何下载安装Python编程环境,以及如何使用pip管理Python包。 本篇讲解的是Windows环境下安装Python编程环境的步骤。 一、Python安装包下载 想要使用Pyth…

vue框架、element-ui组件库、font awesome图表库

一、vue 创建一个新vue项目。 vue create ProjectName 然后cd到该目录下,npm run serve启动服务器,即可打开。 二、组件库 element-ui是饿了么的,ArcoDesign是字节的,有很多。 install见官方文档:组件 | Element 导入…

黑马学SpringAMQP

目录: (1)SpringAMQP的基本介绍 (2)SpringAMQP-入门案例的消息发送 (3) SpringAMQP-入门案例的消息接收 (4)SpringAMQP-WorkQueue模型 (5)Sp…

408数据结构考点总结

第一章 绪论 考点 1:时间复杂度与空间复杂度 时间复杂度 定义:将算法中基本运算的执行次数的数量级作为时间复杂度,记为O(n)O(n)O(n)。 计算原则 加法法则:T(n)T1(n)T2(n)O(f(n))O(g(n))O(max⁡(f(n),g(n)))T(n)T_{1}(n)T_{2…

安全—02day

XMLHttpRequest 对象 AJAX 通过原生的XMLHttpRequest对象发出 HTTP 请求,得到服务器返回的数据后,再进行处理。现在,服务器返回的都是 JSON 格式的数据, XMLHttpRequest本身是一个构造函数,可以使用new命令生成实例。…