如何解决机器学习中的数据不平衡问题?

在机器学习任务中,我们经常会遇到这种困扰:数据不平衡问题

数据不平衡问题主要存在于有监督机器学习任务中。当遇到不平衡数据时,以总体分类准确率为学习目标的传统分类算法会过多地关注多数类,从而使得少数类样本的分类性能下降。绝大多数常见的机器学习算法对于不平衡数据集都不能很好地工作。

本文介绍几种有效的解决数据不平衡情况下有效训练有监督算法的思路:

1、重新采样训练集

可以使用不同的数据集。有两种方法使不平衡的数据集来建立一个平衡的数据集——欠采样和过采样。

1.1. 欠采样

欠采样是通过减少丰富类的大小来平衡数据集,当数据量足够时就该使用此方法。通过保存所有稀有类样本,并在丰富类别中随机选择与稀有类别样本相等数量的样本,可以检索平衡的新数据集以进一步建模。

1.2. 过采样

相反,当数据量不足时就应该使用过采样,它尝试通过增加稀有样本的数量来平衡数据集,而不是去除丰富类别的样本的数量。通过使用重复、自举或合成少数类过采样等方法(SMOTE)来生成新的稀有样品。

注意到欠采样和过采样这两种方法相比而言,都没有绝对的优势。这两种方法的应用取决于它适用的用例和数据集本身。另外将过采样和欠采样结合起来使用也是成功的。

2、使用K-fold交叉验证

值得注意的是,使用过采样方法来解决不平衡问题时应适当地应用交叉验证。这是因为过采样会观察到罕见的样本,并根据分布函数应用自举生成新的随机数据,如果在过采样之后应用交叉验证,那么我们所做的就是将我们的模型过拟合于一个特定的人工引导结果。这就是为什么在过度采样数据之前应该始终进行交叉验证,就像实现特征选择一样。只有重复采样数据可以将随机性引入到数据集中,以确保不会出现过拟合问题。

K-fold交叉验证就是把原始数据随机分成K个部分,在这K个部分中选择一个作为测试数据,剩余的K-1个作为训练数据。交叉验证的过程实际上是将实验重复做K次,每次实验都从K个部分中选择一个不同的部分作为测试数据,剩余的数据作为训练数据进行实验,最后把得到的K个实验结果平均。

3、转化为一分类问题

对于二分类问题,如果正负样本分布比例极不平衡,我们可以换一个完全不同的角度来看待问题:把它看做一分类(One Class Learning)或异常检测(Novelty Detection)问题。这类方法的重点不在于捕捉类间的差别,而是为其中一类进行建模,经典的工作包括One-class SVM等,如下图所示:

如何解决机器学习中的数据不平衡问题?

One Class SVM 是指你的训练数据只有一类正(或者负)样本的数据, 而没有另外的一类。在这时,你需要学习的实际上你训练数据的边界。而这时不能使用最大化软边缘了,因为你没有两类的数据。 所以呢,在这边文章中,“Estimating the support of a high-dimensional distribution”, Sch?lkopf 假设最好的边缘要远离特征空间中的原点。左边是在原始空间中的边界,可以看到有很多的边界都符合要求,但是比较靠谱的是找一个比较紧的边界(红色的)。这个目标转换到特征空间就是找一个离原点比较远的边界,同样是红色的直线。当然这些约束条件都是人为加上去的,你可以按照你自己的需要采取相应的约束条件。比如让你data 的中心离原点最远。

说明:对于正负样本极不均匀的问题,使用异常检测,或者一分类问题,也是一个思路。

4、组合不同的重采样数据集

成功泛化模型的最简单方法是使用更多的数据,问题是像逻辑回归或随机森林这样开箱即用的分类器,倾向于通过舍去稀有类来泛化模型。一个简单的最佳实践是建立n个模型,每个模型使用稀有类别的所有样本和丰富类别的n个不同样本。假设想要合并10个模型,那么将保留例如1000例稀有类别,并随机抽取10000例丰富类别。然后,只需将10000个案例分成10块,并训练10个不同的模型。

如何解决机器学习中的数据不平衡问题?

如果拥有大量数据,这种方法是简单并且是可横向扩展的,这是因为可以在不同的集群节点上训练和运行模型。集合模型也趋于泛化,这使得该方法易于处理。

5、用不同比例重新采样

方法4 可以很好地将稀有类别和丰富类别之间的比例进行微调,最好的比例在很大程度上取决于所使用的数据和模型。但是,不是在整体中以相同的比例训练所有模型,所以值得尝试合并不同的比例。如果10个模型被训练,有一个模型比例为1:1(稀有:丰富)和另一个1:3甚至是2:1的模型都是有意义的。一个类别获得的权重依赖于使用的模型。

如何解决机器学习中的数据不平衡问题?

6、多模型Bagging

方法5 虽然能够选出最好的样本数据比例。但是它的鲁棒性不能够保证:它的鲁棒性取决于测试集样本的选取

为了解决上述方法的缺陷,增加模型鲁棒性。为此,我本人在 随机森林算法 思想的启发下,想出了在上述方法的基础上,将不同比例下训练出来的模型进行 多模型Bagging 操作,具体的步骤如下:

1. 对两类样本选取 N 组不同比例的数据进行训练并测试,得出模型预测的准确率: 

P={ P| i=1,2,...N }

2. 对上述各模型的准确率进行归一化处理,得到新的权重分布:

Ω={ ω| i=1,2,...N }

其中:

如何解决机器学习中的数据不平衡问题?

3. 按权重分布 Ω 组合多个模型,作为最终的训练器:

● 对于分类任务:

如何解决机器学习中的数据不平衡问题?

● 对于回归任务:

如何解决机器学习中的数据不平衡问题?

7、集群丰富类

Sergey Quora提出了一种优雅的方法,他建议不要依赖随机样本来覆盖训练样本的种类,而是将r个群体中丰富类别进行聚类,其中r为r中的例数。每个组只保留集群中心(medoid)。然后,基于稀有类和仅保留的类别对该模型进行训练。

7.1. 对丰富类进行聚类操作

首先,我们可以对具有大量样本的丰富类进行聚类操作。假设我们使用的方法是 K-Means聚类算法 。此时,我们可以选择K值为稀有类中的数据样本的个数,并将聚类后的中心点以及相应的聚类中心当做富类样本的代表样例,类标与富类类标一致。

如何解决机器学习中的数据不平衡问题?

7.2. 聚类后的样本进行有监督学习

经过上述步骤的聚类操作,我们对富类训练样本进行了筛选,接下来我们就可以将相等样本数的K个正负样本进行有监督训练。如下图所示:

如何解决机器学习中的数据不平衡问题?

8、设计适用于不平衡数据集的模型

所有之前的方法都集中在数据上,并将模型保持为固定的组件。但事实上,如果设计的模型适用于不平衡数据,则不需要重新采样数据,著名的XGBoost已经是一个很好的起点,因此设计一个适用于不平衡数据集的模型也是很有意义的。

通过设计一个代价函数来惩罚稀有类别的错误分类而不是分类丰富类别,可以设计出许多自然泛化为稀有类别的模型。例如,调整SVM以惩罚稀有类别的错误分类。

如何解决机器学习中的数据不平衡问题?




====================================分割线================================

本文作者:AI研习社
本文转自雷锋网禁止二次转载,原文链接

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

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

相关文章

四大技巧轻松搞定云容器

云容器技术,作为传统虚拟化管理程序的一种替代品,正称霸着云市场。容器是轻量级的,并提供增强的便携性,允许应用在平台之间迁移,而不需要开发者重做或重新架构应用。但是,尽管其好处让开发人员感到惊叹&…

Android 图文混排 通过webview实现并实现点击图片

在一个开源项目看到是用的webview 实现的 1. 这是在asset中的一个模板html <html> <head> <title>News Detail</title> <meta name"viewport" content"widthdevice-width, minimum-scale0.5, initial-scale1.2, maximum-scale2.0…

计算机硬件选型报价,组装电脑硬件该怎么选择?这几个硬件要舍得花钱,千万别买错了!...

原标题&#xff1a;组装电脑硬件该怎么选择&#xff1f;这几个硬件要舍得花钱&#xff0c;千万别买错了&#xff01;组装电脑是多硬件组合的产物&#xff0c;每一个硬件对于电脑的性能都是有影响的&#xff0c;影响的大小与电脑的硬件有直接关系&#xff0c;有些硬件就要舍得花…

高级会计师计算机考试中级,会计师需要计算机等级考试吗

尘伴考证达人06-19TA获得超过671个赞[color#000][font宋体][size3][alignleft]广东省高级会计师评审职称外语&#xff0c;执行《关于调整完善我省职称外语政策的通知》(粤人发〔2018〕120号)[/align][alignleft]三、报考职称外语考试的等级要求[b][size3](一)申报高教、科研、卫…

一 手游开发工具cocos2d-x editor初识

可学习的demo&#xff1a; 7个实战项目 flappybird&#xff08;飞扬小鸟&#xff09;、popstar&#xff08;消灭星星&#xff09;、fruitninja&#xff08;水果忍者&#xff09;、2048&#xff08;数度消除&#xff09;。 moonwarriors&#xff08;月亮战神&#xff09;、frui…

Provisioning Services 7.6 入门到精通系列之七:创建虚拟磁盘

在上一章节完成了主目标设备的准备&#xff0c;今天将揭晓如何通过映像向导创建虚拟磁盘。1.1 点击开始菜单”映像向导”1.2 在映像向导点击”下一步“1.3 输入PVS服务器信息&#xff0c;下一步1.4 点击”新建虚拟磁盘”1.5 输入新虚拟磁盘的相关信息&#xff0c;下一步1.6 配置…

全国职业院校技能大赛软件测试题目,我校喜获2018全国职业院校技能大赛“软件测试”赛项一等奖...

九江职院新闻网讯(信息工程学院)5月31日&#xff0c;从2018全国职业院校技能大赛传来喜讯&#xff0c;由我校信息工程学院教师艾迪、朱虎平指导&#xff0c;学生郭星宏、赖闽、吴宗霖组成的竞赛团队&#xff0c;代表江西省在高职组“软件测试”赛项中荣获团体一等奖的佳绩。为积…

两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];...

转自&#xff1a;http://blog.csdn.net/shandianling/article/details/8785269 问题描述&#xff1a;两个数组a[N]&#xff0c;b[N]&#xff0c;其中A[N]的各个元素值已知&#xff0c;现给b[i]赋值&#xff0c;b[i] a[0]*a[1]*a[2]…*a[N-1]/a[i]&#xff1b; 要求&#xff1a…

利用VOIP电话通信服务,他骗得18亿美元

VoIP电话服务公司TelexFree的CEO詹姆斯梅里尔承认他的公司是一个不折不扣的&#xff0c;拥有18亿美元金字塔式的旁氏骗局公司。 没想到VOIP技术也能成为诈骗犯罪的“工具” 本周一&#xff0c;在美国马萨诸塞州的一个地方法院&#xff0c;詹姆斯梅里尔被认定有罪。并具有九项罪…

三相滤波器怎么接线_单相电机和三相电机怎么接线?为什么三相电机有3或6个接线柱?...

于电机接线柱的链接方法&#xff0c;下面整理了从单相和三相的接法及三个接线柱和六个接线柱的区别等知识&#xff0c;跟各位电工朋友分享&#xff0c;希望在实际操作中能帮到各位。单相电机一般是指用单相交流电源(AC220V)供电的小功率单相异步电动机。这种电机通常在定子上有…

Android源码编译全过程记录(基于最新安卓5.1.0)【转】

本文转载自&#xff1a;http://blog.csdn.net/drg1612/article/details/44802533 我的编译条件&#xff1a; 1 Ubuntu Kylin 14.04 长期支持版 下载地址 &#xff1a; http://www.ubuntu-china.cn/download 2 我的电脑是联想G470 i3处理器 内存4G&#xff0c;120g固体硬盘&…

第三方登录接入-qq,weibo-java

开发之前 需求&#xff1a;网站接入qq,sina微博登录&#xff0c;本文最后付效果图&#xff1a; 说明&#xff1a;大部分网站本身是需要用户概念的&#xff0c;很多操作依附于用户&#xff0c;而qq或微博作为一种登录方式指向用户而已&#xff0c;我参考了一下其他网站的做法&am…

python替换img的路径为新的路径_以“五智”为核心 南宁电信打造5G时代数字家庭新路径...

来源&#xff1a;通信信息报本报讯(特约记者 许辉坚)近日&#xff0c;中国电信广西南宁分公司在协助广西自治区通信管理局主办的“电信用户委员会体验活动”中&#xff0c;以发挥用户委员会的平台和纽带作用&#xff0c;促进持续改善电信服务质量为主题&#xff0c;以“五智”能…

0118——RTLabel和正则表达式

RTLabel和RegexKitLite都要导入第三方库 使用Regexkitlite库进行正则表达式的解析 1.库是使用MRR&#xff0c;如果在ARC工程里面使用这个类&#xff0c;必须在project->build phases->compile resources里面将regexKitLite.m的编译指令设为&#xff1a;-fno-objc-arc 2.需…

热带雨林绘画软件测试,儿童画教程|色彩练习与思维创想——好热闹的热带雨林!...

课程类型综合创意绘画课程参考课时90分钟工具材料勾线笔、水彩笔、卡纸课程构思小朋友们知道吗&#xff1f;热带雨林是地球上抵抗力和稳定性最高的生态系统&#xff0c;常年气候非常的炎热&#xff0c;雨量充沛&#xff0c;没有明显的季节差异&#xff0c;生物群落演替速度极快…

Linux命令行编辑快捷键

2019独角兽企业重金招聘Python工程师标准>>> ctrl ? 撤消前一次输入 ctrl c 另起一行 ctrl r 输入单词搜索历史命令 ctrl u 删除光标前面所有字符相当于VIM里d shift^ ctrl k 删除光标后面所有字符相当于VIM里d shift$ 删除 ctrl d 删除光标所在位置上的字符…

思科查看服务器启动配置文件,启动配置检查UCS

本文解释如何使用UCS将启动功能和命令迅速执行配置状态检查。UCS将启动功能允许用户迅速执行一粗略检查为了保证刀片适当地配置允许BIOS继续。意志启动配置检查是验证CPU和DIMM配置。此检查迅速帮助用户调试启动问题。思科UCS在意志启动配置检查提供几个工具帮助。这些工具包括…

lnmp下配置虚拟主机

一&#xff1a;首先熟悉几个命令 which php ---> which是通过 PATH环境变量到该路径内查找可执行文件&#xff0c;所以基本的功能是寻找可执行文件 whereis php ----> 将和php文件相关的文件都查找出来 service php-fpm/nginx/mysqld restart 重启服务 二&…

datazen Active Directory AD 配置

今天苦心经营的datazen 链接AD&#xff0c;文档已经无法吐槽了简单的几句话&#xff0c;根本不够用。 先说一下链接AD 的好处吧&#xff0c; 1 首先免去设置密码的麻烦&#xff0c;因为直接用AD账号的密码。 2 更安全&#xff0c;因为客户可不想自己的自己的系统&#xff0c;开…

Android CardView卡片布局 标签: 控件

CardView介绍 CardView是Android 5.0系统引入的控件&#xff0c;相当于FragmentLayout布局控件然后添加圆角及阴影的效果&#xff1b;CardView被包装为一种布局&#xff0c;并且经常在ListView和RecyclerView的Item布局中&#xff0c;作为一种容器使用。CardView应该被使用在显…