lightgbm 数据不平衡_不平衡数据下的机器学习(下)

本文从不平衡学习的基础概念和问题定义出发,介绍了几类常见的不平衡学习算法和部分研究成果。总体来说,不平衡学习是一个很广阔的研究领域,但受笔者能力和篇幅的限制,本文仅对其中部分内容做了简单概述,有兴趣深入学习或研究的读者可以参阅下文所列参考文献或其他相关资料。来自: 哈工大讯飞联合实验室

3.5 不平衡学习算法的实际应用效果对比

上面4小节已经给出了很多针对数据不平衡问题的处理算法,下面将对这些算法的实际应用效果进行对比,本节的所有数据与图表都来自于Buda, M.等人于2017年发表在Arxiv上的文章《A systematic study of the class imbalance problem in convolutional neural networks》。

28508fbf586dbd8de2ef2d4cab9eb565.png

图 3.10 数据不平衡的形式。(a)和(b)为阶梯性不平衡,(c)为线性不平衡。

在这篇文章中,作者定义了2种数据不平衡的形式:阶梯性不平衡和线性不平衡,两种形式见图 3.10。评价指标为ROC AUC,实验了四种不平衡学习算法:

1)随机过采样

2)随机降采样

3)使用随机过采样方法预训练CNN模型,然后再使用原始数据集对模型最后一层做微调

4)使用随机降采样方法预训练CNN模型,然后再使用原始数据集对模型最后一层做微调

作者在MNIST、CIFAR-10和ImageNet这3个数据集上分别进行了实验,实验配置均在下表中列出:

f097c1b79dfda641325240de862c0804.png

3.5.1 在阶梯性不平衡数据上的实验结果

a91d4c2823ff8c2ddc9772be81a93a13.png

图 3.11 在阶梯状不平衡数据上,随不平衡比例变化的各个算法的表现。(a)(b)(c)为在MNIST上的结果,(d)(e)(f)为在CIFAR-10上的结果

从图 3.11中可以看到:相比于简单任务(MNIST),数据不平衡对CNN在复杂任务(CIFAR-10)上的表现影响更大;随机过采样方法在几乎所有情况下都要优于其他方法。

137d9a8b5e5a22e97aa6c74d4b681af8.png

图 3.12在阶梯状不平衡数据上,随少数类数量变化的各个算法的表现。(a)(b)(c)为在MNIST上的结果,(d)(e)(f)为在CIFAR-10上的结果

从图 3.12中也可以看出:使用随机过采样之后效果几乎始终优于原始的不使用任何不平衡学习算法的效果;预训练方法的效果始终介于非预训练方法和原始方法之间。

3.5.2 在线性不平衡数据上的实验结果

893b56142d84008ebf5054b3545dd478.png

图 3.13 线性不平衡数据上的实验效果

从图 3.13可以看出:随机过采样对于实验效果始终有促进能力;随机降采样的效果则会随着不均衡比例的提升而逐渐下降。

b8b60a7b914feedb0e79fef0aa2aa3d6.png

上表给出了作者在ImageNet上的实验效果,可以看到,随机过采样方法还是始终优于随机降采样方法,但要差于不使用任何不平衡学习算法的Baseline方法。因为,我们在将采样方法应用于复杂任务时,需要格外小心。

3.5.4 过采样/降采样比例对实验结果的影响

8e76154de071988b45feb4e09ccb46e9.png

图 3.14 过采样/降采样比例对实验结果的影响

从图 3.14可以看到:随机过采样方法会在过采样到各类别完全均衡的情况下取得较好效果;随机降采样方法所需的较佳降采样比例则随着数据变化而变化。

3.5.5 对采样方法泛化能力的研究

32db14cbaeb901caf975d0e3dd5624a1.png

图 3.15 在CIFAR-10 阶梯性不平衡数据集上的实验结果

图 3.15比较了不使用任何不平衡学习算法、随机过采样和随机降采样的泛化能力。从图中可以看出,对于该任务中使用的CNN模型,随机过采样方法可以在测试集上取得最优的分类准确率,并且不会导致更严重的过拟合。


4、不平衡学习的成果

上一节给出了不平衡学习算法的分类、几个经典算法的介绍和性能比较。本节将关注不平衡学习的研究进展,着重介绍两篇论文:

1)Lin, H.等人2018年发表在ACL上的《Adaptive Scaling for Sparse Detection in Information Extraction》

2)Huang, C.等人2016年发表在CVPR上的《Learning Deep Representation for Imbalanced Classification》

4.1 《Adaptive Scaling for Sparse Detection in Information Extraction》

4.1.1 引言

检测任务是信息抽取领域非常常见的任务,典型的任务如命名实体识别、关系抽取和事件检测等。在做检测任务时,我们可以把待检测的标签作为正例,其他标签作为反例,从而将检测任务转换为标准的分类任务。在这种分类任务中,一般使用交叉熵作为损失函数,正例的F值作为评价指标。由于正例(待检测的标签)往往非常稀疏,因此这是一个数据不平衡的分类任务。

9fb583d8b6c320c6a1284ec1fc57c738.png

可以看到,在计算F值时,正例和反例并非是等价的,这导致评估指标和优化目标出现了背离。因此在设计模型训练方法时,需要考虑到这种差异,尽量保证训练目标与评估指标的一致性。

一种做法是使用cost-sensitive的方法,对不同类别样本设置不同的损失权重,但在权重的设置上,过去的研究一般是手动设置或者是在大规模数据集上多次实验搜索得到,这些方法费时费力而且可迁移性较差。论文针对这一问题,提出一种自适应调整权重的算法,称为Adaptive Scaling。

4.1.2 Adaptive Scaling

Adaptive Scaling算法借鉴了经济学中的边际效用理论:指每新增(或减少)一个单位的商品或服务,它对商品或服务的收益增加(或减少)的效用。在分类任务中,将边际效用理论中的“商品或服务”替换为分类样本,收益即为评估指标(F值),此时的边际效用定义为:每新增(或减少)一个分类正确(错误)的样本,它对评估指标F值增加(或减少)的效用。由此,可以使用每个类别对F值的边际效用作为其重要程度的衡量。

实际计算时,可以将评估指标对TP和TN的偏导值作为正例和反例的边际效用值。如果是把Accuracy作为目标,计算正例和反例的边际效用可以得到:

可以看到,当把Accuracy作为目标时,正例和反例的边际效用始终是恒定而且相等的,如果是将F值作为目标,可以得到:

1a901f6b5d1191d55fe8bbf619535087.png

这样就得到了能够自动在训练过程中调整样本权重的Adaptive Scaling算法,而且该算法不需要引入任何额外的超参数。相比于传统的cost-sensitive方法,其特点在于:

1)正例和反例的相对重要程度既与正反例的比例有关,也会受到当前模型的分类能力影响

2)反例的重要性会随着正例分类准确率的提升而增加

3)反例的重要性也会随着反例分类准确率的提升而增加

4)当precision比recall更重要时,反例的重要性也会增加

4.1.3 Batch-wise Adaptive Scaling

在训练神经网络时,最常用的是batch-wise的方法,如果用TP和TN在当前batch下的预测值作为近似,我们就得到了Batch-wise Adaptive Scaling算法。

具体来说,当前batch下,TP和TN的近似值按照下式计算:

5d4976d70b32e22dde17cb1546351c60.png

再忽略掉PE对结果的影响(比较微弱),得到:

7abaae36cfbaac628a043a5d1abcaad1.png

由此,在每个batch训练时,首先可以根据前向预测结果估计得到正例和反例的相对权重,然后计算cost-sensitive的交叉熵损失,最后反向传播更新模型参数。

可以将Batch-wise Adaptive Scaling视为一个插件,运行在前向预测和反向传播之间,不会影响到前后流程的正常运行。

4.1.4 实验验证

9a2382858894a1cc71a87ab5c0356645.png

图 4.1 实验效果验证

论文在事件检测任务上进行了验证实验。测试数据为TAC KBP 2017 Event Nugget Detection Evaluation(LDC2017E55)官方提供的验证集,包含167篇英文文档和167篇中文文档。

图 4.1给出了多种算法的效果比较,可以看到,Adaptive Scaling(A-Scaling)算法几乎在各项指标上都达到了State-of-the-Art的效果。

4593c2bcd4c68416c43f4c9b214a8974.png

图 4.2 稳定性分析

图 4.2给出了多次实验下,不同算法结果的稳定性比较,同样可以看到,Adaptive Scaling算法在稳定性上也要好于传统的采样方法或者代价敏感型方法,尤其是在数据不平衡程度更高的中文数据集上,Adaptive Scaling表现明显更加稳定。


4.2 《Learning Deep Representation for Imbalanced Classification》

4.2.1 引言

计算机视觉领域的很多数据集都存在数据不平衡的问题。例如在人脸识别任务中,正例和反例的数据就极为不平衡。传统的应对数据不平衡的算法有采样方法和代价敏感型方法等,这些方法在经典的“浅层”机器学习算法上已经有充分的研究,但在深度学习模型上还缺乏系统的研究。

针对计算机视觉领域的数据不平衡问题,论文提出一种在不平衡数据下的更有效的深度表征并结合kNN做分类的算法:Large Margin Local Embedding (LMLE)-kNN(LMLE-KNN)。该算法包括2个步骤:首先使用CNN模型从不平衡数据集中学习得到每个样本的深度表征(embedding向量),然后使用改进的k近邻分类算法对embedding向量分类。

4.2.2 从不平衡数据中学习深度表征

给定一个数据不均衡的计算机视觉数据集,论文希望先对每个样本学习一个embedding向量表示f(x),学习到的embedding既具有区分性又能不包含本地的类别不均衡。为了实现这一目标,论文首先从不平衡数据中采样获取多个五元组,如图 4.3所示。

c5e144b30ed94328fe525e4483528970.png

图 4.3 (a)传统的三元组表示 (b)五元组表示

5d414c611dcac6e8fdbd95129cb80326.png

相比于传统的三元组方法,这种五元组方法的优势在于:

1)五元组包括四个距离,这四个距离的大小需要满足一定的排序关系,这种排序关系可以提供更加丰富的信息和更强的约束。

2)尽管在做五元组采样时,我们会限制锚样本的采样概率分布使得来自少数类和多数类的数量尽量均衡,这种做法与降采样有些类似。但与降采样不同的是,由于这个采样过程会重复很多次,所以实际上并不会有降采样的信息丢失。

为了满足五元组四个距离的不等式要求,论文设计了一种三头的Hinge loss,表示如下:

7350ffd33b9e75545f4a1db667113c94.png

这个损失函数应用了Large Margin的思想,引入3个松弛变量限制了五元组四个距离的3个间隔。

论文使用CNN来生成对每张图片的深度表征,图 4.4示意了该CNN的的训练方法。

11c46f18548df0b0052e9b83fe031a60.png

图 4.4 CNN模型训练

训练时,五元组的五个样本分别由同一个CNN做编码,获得5个embedding向量,然后计算三头的Hinge loss,最后经过反向传播更新CNN参数。

fe25a9636eb6c109576702a77adc69c4.png

图 4.5 整体训练流程

图 4.5给出了训练获得样本数据深度表征的整体流程。

4.2.3 kNN不平衡数据分类

使用上一小节训练的CNN,可以获得对于数据集中每个样本的深度表征,在此基础上,论文设计了一种基于聚类cluster的kNN分类算法,用于做最终的分类。由于这一部分的算法与本文“不平衡学习”的主题没有关联,这里不再赘述,有兴趣的读者可以参阅Huang, C.等人的公开论文。

4.2.4 实验结果

论文在CelebA面部特性识别和BSD500边缘检测两个数据集上进行了实验,并与State-of-the-Art的方法做了比较。

a079611fd9bfcd76aa60a5a87a3d8403.png

图 4.6 CelebA上的实验结果。Imbalance level的值越大,该特性数据的不平衡程度越高;评估指标为balanced accuracy=(TP/P + TN/N)/2。

cfd556b71b37cc59729481f7ee975ae1.png

图 4.7 随数据不平衡程度增加的相对性能提升变化

图 4.6和图 4.7分别给出了在CelebA数据集上的实验效果比较和随数据不平衡程度增加的相对性能提升变化。可以看到,LMLE-kNN的分类效果明显优于其他State-of-the-Art方法,并且数据不平衡程度越高,LMLE-kNN在效果上的提升更加明显。

f054efd7a1afd3662b1efe999a8097f1.png

图 4.8 BSD500上的实验结果

图 4.8给出了在BSD500上的实验结果,LMLE-kNN算法同样取得了与State-of-the-Art方法相当的效果。需要说明的是,图中的HFL、HED等方法都使用了大型的VGGNet模型,而LMLE-kNN只使用了一个小型的6层CNN。

62a5d94ad629455160ff965786114250.png

图 4.9 一个边缘检测的例子。从左到右依次为原始图像、理想结果、Sketch Token、DeepContour和LMLE-kNN的检测结果

图 4.9给出了一个具体的边缘检测例子,相比于其他算法,LMLE-kNN算法不会受到太多噪声边缘的影响。

5、总结

本文从不平衡学习的基础概念和问题定义出发,介绍了几类常见的不平衡学习算法和部分研究成果。总体来说,不平衡学习是一个很广阔的研究领域,但受笔者能力和篇幅的限制,本文仅对其中部分内容做了简单概述,有兴趣深入学习或研究的读者可以参阅下文所列参考文献或其他相关资料。

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

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

相关文章

netty实现高性能文件服务器,通用文件服务组件(Netty实现版本)

本文所述文件服务组件在笔者此前一篇文章中已有阐述(基于netty的文件上传下载组件),不过本文将基于之前这个实现再次进行升级改造,利用基于注解的方式进行自动装配。1. 简介1.1 Netty简介Netty是一个异步事件驱动的网络应用程序框架,用于快速…

PHP 小数点保留两位【转】

最近在做统计这一块内容&#xff0c;接触关于数字的数据比较多&#xff0c; 用到了三个函数来是 数字保留小数后 N 位&#xff1b; 接下来简单的介绍一下三个函数&#xff1a; 1、number_format echo number_format("5000000")."<br>"; echo number_…

华为杯数学建模2020获奖名单_我校在2020年全国大学生数学建模竞赛中再获佳绩(内附获奖名单)...

# 近日&#xff0c;从全国大学生数学建模竞赛组委会获悉&#xff0c;我校在2020年全国大学生数学建模竞赛中获得5项国家二等奖。国家奖获奖数量在全国农林院校中并列排名第二。在黑龙江省高校中位居第三名。1你的喜悦&#xff0c;我们的欣慰# 2020年全国大学生数学建模竞赛于9月…

fn映射 mac 键盘_【新鲜评测】高颜值、低延迟、多模式跨平台办公神器-米物蓝牙键盘...

首先&#xff0c;要例行感谢糖纸众测&#xff0c;感谢麻麻酱给我这次评测机会。大家可以微信搜索【糖纸】小程序免费体验更多科技产品。小米旗下生态链公司米物最近出了一款蓝牙双模键盘&#xff0c;它作为一个85全键键盘&#xff0c;可以完成蓝牙和USB转换&#xff0c;以及PC和…

小程序 input 换行_小程序 input双向数据绑定

小程序 双向绑定数据&#xff08;单个&#xff09;<小程序 双向绑定数据&#xff08;多个&#xff09;<

Suricata的初始化脚本

见官网 https://suricata.readthedocs.io/en/latest/initscripts.html

jpa在自己创建表的是字段名不一致_用 数据透视表 完成 Excel多表合并

一般情况下&#xff0c;数据透视表只能汇总一个表格中的数据。即使使用多区域汇总&#xff0c;也只能对多表的单列内容进行数据汇总&#xff0c;而多列却无法实现。前段时间也推送过Power Query的方法&#xff0c;但它有版本限制。而今天宏兴会计培训小编推送的是一个通用的多表…

使用栈实现队列 Implement Queue using Stacks

为什么80%的码农都做不了架构师&#xff1f;>>> 问题&#xff1a; Implement the following operations of a queue using stacks. push(x) -- Push element x to the back of queue.pop() -- Removes the element from in front of queue.peek() -- Get the front…

550什么意思_研报翻译官第二期:带你了解什么是CPI

欢迎收看“第二期”研报翻译官&#xff0c;临近年末&#xff0c;各类金融研报接踵而至&#xff0c;我们也常会看到GDP、CPI、PPI这类字眼。过年回家跟亲戚朋友唠嗑的时候&#xff0c;如果不扯上几句CPI或PPI&#xff0c;都显自己得不够专业。听你们吹牛&#xff0c;我炒菜都有劲…

jieba库的使用

jieba库的使用: jieba库是一款优秀的 Python 第三方中文分词库&#xff0c;jieba 支持三种分词模式&#xff1a;精确模式、全模式和搜索引擎模式&#xff0c;下面是三种模式的特点。 精确模式&#xff1a;试图将语句最精确的切分&#xff0c;不存在冗余数据&#xff0c;适合做文…

mysql结果集相减_MySQL_(Java)使用JDBC向数据库发起查询请求

课程相关链接&#xff1a;JDBC编程和MySQL数据库课程源代码在文章末尾~Java Database Connectivity简单来说就是使用Java里面提供的一些类和方法&#xff0c;利用程序链接数据库&#xff0c;进行增删改查操作。这个过程就叫做JDBC编程接下来我们便分五步通过JDBC对MySQL中的数据…

在双系统(Windows与Ubuntu)下删除Ubuntu启动项

问题概述&#xff1a;因为在自己学习Linux的时候&#xff0c;按照网上的教程错误的删除了Ubuntu的一个内核驱动&#xff0c;导致Ubuntu不能启动。我想到的办法是重新安装系统&#xff0c;重装系统的第一步便是将Ubuntu从电脑中卸载。该笔记是有关如何删除Ubuntu启动项的。 使用…

神舟笔记本bios_海尔雷神(蓝天)神舟战神游戏本风扇狂转掉电大写灯狂闪维修实例...

昨天收到一台网友寄过来的海尔雷神游戏本。说到这个游戏本品牌&#xff0c;其实有几个品牌的笔记本&#xff0c;它们的主板和模具是一模一样的&#xff0c;也就是我们看到的品牌log不一样而已。比如神舟的战神 &#xff0c;机械师&#xff0c;机械革命&#xff0c;麦本本等等。…

“康园圈--互联网+校园平台“项目之成果展示及项目总结

一、总体效果&#xff08;ipad端截图&#xff09; 网站前台页面网站后台管理台页面二、前台访问链接&#xff08;用pc访问效果最佳&#xff09;&#xff1a;http://www.liangzhilin.cn:9100/kangyuanquan/ &#xff08;为保证数据安全&#xff0c;后台管理链接不对外公开&#…

java中二进制怎么说_面试:说说Java中的 volatile 关键词?

volatile 这个关键字可能很多朋友都听说过&#xff0c;或许也都用过。在 Java 5 之前&#xff0c;它是一个备受争议的关键字&#xff0c;因为在程序中使用它往往会导致出人意料的结果。在 Java 5之后&#xff0c;volatile 关键字才得以重获生机。volatile 关键字虽然从字面上理…

类的详解

面向对象是一种编程方式&#xff0c;此编程方式的实现是基于对类和对象的使用。类是一个模板&#xff0c;模板中包装了多个“函数”供使用&#xff08;可以讲多函数中公用的变量封装到对象中&#xff09;。对象&#xff0c;根据模板创建的实例&#xff08;即对象&#xff09;&a…

什么情况不能办理房产抵押贷款 房产抵押贷能贷多少?

所谓房产抵押贷款是指以自己或亲友的房产作为抵押物向贷款机构申请贷款&#xff0c;款项可用于企业经营、买房、买车、装修及其他用途的融资方式。但是有些情况是规定不能申请房产抵押贷款的&#xff0c;而且贷款的数额是有限的&#xff0c;不是想贷多少就多少。那么&#xff0…

2数据库表增加一个字段_14个实用的数据库设计技巧!

1. 原始单据与实体之间的关系可以是一对一、一对多、多对多的关系。在一般情况下&#xff0c;它们是一对一的关系&#xff1a;即一张原始单据对应且只对应一个实体。在特殊情况下&#xff0c;它们可能是一对多或多对一的关系&#xff0c;即一张原始单证对应多个实体&#xff0c…

错误: 找不到或无法加载主类 helloworld_全面剖析虚拟机类加载机制

1.引言java源文件经过编译后生成字节码class文件&#xff0c;需要经过虚拟机加载并转换成汇编指令才能执行&#xff0c;那么虚拟机是如何一步步加载这些class文件的对于java程序员是完全透明的&#xff0c;本文尝试全面分析jvm类加载机制。2.思考开始之前我们来简单思考一下&am…

200道物理学难题——038蚱蜢跃树

转载于:https://www.cnblogs.com/hanford/p/6168514.html