如何训练分类器非平衡数据的分类器

机器学习分类算法中怎样处理非平衡数据问题 (更新中) - 简书
机器学习分类算法中怎样处理非平衡数据问题 (更新中)
  非平衡数据集是一个在现实世界应用中经常发现的一个问题,它可能会给机器学习算法中的分类表现带来严重的负面影响。目前有很多的尝试来处理非平衡数据的分类。在这篇文章中,我们同时从数据层面和算法层面给出一些已经存在的用来解决非平衡数据问题的简单综述。尽管处理非平衡数据问题的一个通常的做法是通过人为的方式,比如超采样或者降采样,来重新平衡数据,一些研究者证实例如修改的支持向量机,基于粗糙集的面向少数类的规则学习方法,敏感代价分类器等在非平衡数据集上面也表现良好。我们观察到目前在非平衡数据问题上面的研究正趋向于使用混合算法。
关键词:敏感代价学习,非平衡数据集,修改的SVM,超采样,降采样
1. Introduction
  如果一个数据集中某一个类别的样本远远多余其他的类别,那么我们就称这种数据为非平衡数据。当数据中至少一个类别代表了训练样例中很少的数量(称为少数类),而其他类别组成了大多数时,数据就会失衡。在这种状况下,分类器能够在多数类上面有很好的准确率,但是在少数类上准确率却很糟糕,主要是因为更大的多数类在传统训练标准上面的影响。很多原始的分类算法追求最小化错误率:不准确预测类别标记的百分比。他们往往忽视了不同种类的分类错误之间的不同。特别地,他们暗自的假定了所有的分类错误都有着相同的代价。
  在很多现实世界的应用中,这种假定是不正确的。不同分类错误之间的差异可能是相当大的。例如,在癌症的医疗诊断中,如果我们把有癌症视为正类别,无癌症(健康)视为负类别,那么漏诊(病人本身得了癌症,但是却预测其没得,这也被称为“假阴性”,false negtive)的代价要比误诊(假阳性,false positive)严重得多。
  病人可能失去他的生命仅仅是因为延误了最佳的诊断和治疗阶段。同样地,如果携带炸弹视为正类别,那么漏检掉一个携带炸弹上飞机的恐怖分子要比搜查一个无辜的人代价大得多。
  非平衡数据问题在现实世界的很多应用中都有出现,例如文本归类,故障监测,欺骗检测,卫星图像中的油田漏油监测,毒理学,文化建模,医疗诊断等[1]。很多关于非平衡数据集的研究论文通常都认为,由于不相等的类别分配,已经存在的分类器的表现都偏向于多数类。现存分类算法在非平衡数据集上表现糟糕的原因主要有这几点:1.它们是准确率驱动的,它们的目标是最小化整体的错误率,这样一来少数类在其中起到的作用就很小了。2.它们假设数据中所有的类别都有同等的分配。3.它们同时假设不同类别分类错误的代价是相同的[2]。由于数据的不平衡,数据挖掘学习算法往往产生退化的模型,它们并没有把少数类考虑进去,因为大多数数据挖掘算法都是假设数据是平衡的。
  很多非平衡数据分类问题的解决方案之前都有人同时从数据层面和算法层面上提出过[3]。在数据层面,这些解决方法包括多种不同形式的重采样,例如随机超采样放回,随机降采样,直接超采样(没有新的样例产生,但是样例被替换的选择是知道的,而不是随机的),直接降采样(同样样例被去除的选择是知道的),新样本迭代方式被告知的超采样以及以上所有技术的结合。在算法层面,解决方法包括调整不同类别的代价以反向的削减类别不平衡影响,调整树的叶节点的概率评估(当使用决策树时),调整决策阈值,基于识别(从一个类中学习)而不是基于辨别(两种类别)的学习。
  解决非平衡数据最普遍的技术包括重新调整训练接,使用代价敏感的分类器和雪球法。最近,不少在非平衡数据上有很好表现的方法被提出来了。这些方法包括修改的SVMs,K临近法(KNN),神经网络,遗传编程,基于粗糙集的算法,概率决策树和机器学习方法。下一节将介绍各种方法的细节。
2. Sampling Methods
  一种简单的数据层面的平衡不同类别的方法就是对原始数据集进行重采样,要么对少数类进行超采样,或者对多数类进行降采样,直到不同类别的数据差不多是相同的为止。这两种策略能够被用在任何学习系统中,因为它们相当于是一种预处理阶段,允许学习系统来接收训练实例就好像他们是属于一个已经平衡的数据集。这样一来,系统由于每一类别不同比例的训练样本而带来的对于多数类的任何偏向都能够被削减和抑制了。
  Hulse等人[4]提出重采样方法的作用取决于很多的因素……(待更新)
[Journal Paper] ,IJETAE_0412_07
[Data Science] ,(,)
[SimaFore]
[Analytics Vidhya]
[机器之心]
Stay Hungry Stay Foolish
常葆求知若饥 常存虚怀若愚
请移步主...工具类服务
编辑部专用服务
作者专用服务
基于多核函数SVM的非平衡数据分类研究
在这个被大量信息包围的世界里,对数据的识别和判定成为现如今数据挖掘和机器学习领域的研究热点。支持向量机以其坚实的理论基础和能解决高维数、非线性问题的技能成为众多研究者追捧的研究对象。尤其在样本数量很少的情况下,支持向量机的优越表现成为解决典型的小样本学习问题的首选。通常情况下,在数据呈现平衡分布时支持向量机能够取得良好的分类效果。可是数据由于实际应用中的人为或者内在原因常表现出严重的非平衡特性。研究表明,在样本数量不平衡的情况下支持向量机分类效果不理想。因此研究基于SVM的非平衡数据分类方法具有十分重要的意义。  
本文针对支持向量机在非平衡数据上分类准确率较低等问题展开研究,重点研究基于多核SVM的非平衡数据分类方法,论文的主要研究内容包括:  
(1)分析了支持向量机在非平衡数据上对少类样本分类准确率较低的原因,然后提出了一种带权重的支持向量机方法——uSVM。该方法将参数u引入到分类决策函数中,使得分类超平面向多数类样本偏移,扩大少数类样本的决策空间,提高了少数类样本的分类准确率。  
(2)针对多项式核或RBF核SVM不能很好地处理数据非平衡问题,提出了一种基于聚类多核uSVM的分类方法,该方法对多数类进行聚类后采用多核函数训练过的SVM对非平衡数据分类,进而得到决策函数,然后再对决策函数加权得到最终的分类结果。实验结果表明,聚类多核uSVM分类性能优于单独使用局部或全局核函数。  
(3)针对AdaBoost和Bagging集成方法在非平衡数据分类方面不能得到良好的结果,提出了一种基于聚类投票的多核SVM集成方法,该方法对多数类样本进行聚类后对N个多核SVM基分类器进行训练,然后对训练结果进行投票得到最终分类结果。实验结果表明,聚类投票多核SVM集成方法在非平衡数据分类性能方面优于其他几种集成方法。
学科专业:
授予学位:
学位授予单位:
导师姓名:
学位年度:
在线出版日期:
本文读者也读过
相关检索词
万方数据知识服务平台--国家科技支撑计划资助项目(编号:2006BAH03B01)(C)北京万方数据股份有限公司
万方数据电子出版社非平衡数据集分类算法及其应用--《山西大学》2008年硕士论文
非平衡数据集分类算法及其应用
【摘要】:
非平衡数据集是指同一个数据集中某些类的样本数远远少于其他类的样本数,它广泛存在于现实生活中.利用传统的机器学习方法分类,对于数目少的类来说分类准确率很低,而对于数目多的类则相对较高.但在非平衡数据集中,数目少的类往往是关注的对象,因此传统算法对于解决非平衡数据集分类问题的能力有限.近年来,非平衡数据集的分类问题得到了国内外专家的广泛关注,取得了一些成果,并在相关领域得到应用.
本文在KAIG模型的框架下,基于信息粒的观点,对非平衡数据集分类问题和知识获取做了进一步的研究,并将其应用于电信客户流失预测领域中.本文主要取得了以下研究成果:
(1)对KAIG算法进行了部分改进,引入了Purity参数来度量粒重叠的程度.实例表明它有利于确定粒重叠程度和在无法完全消除粒重叠现象时可以设定一个阈值来判断是否达到某种可接受的粒重叠程度,这为原有KAIG模型提供了一个新的度量工具.此外在利用次属性解决粒重叠问题时,若属性值为连续型数据,则将其转化为离散型数据再利用次属性来降低粒重叠程度,不断由Purity参数来决定是否校正次属性区间.虽然不能完全消除粒重叠,但是可以大大减少粒重叠的程度,有助于更有效地在属性值为连续型数值型数据中提取规则.实验表明改进的KAIG算法不仅对非平衡数据集分类性能较好,而且对于平衡数据集的分类性能也与其他传统分类算法基本相当,特别在当属性值是连续值时比原有KAIG算法分类性能更好.
(2)将改进的KAIG算法应用于电信客户流失预测问题.由于电信客户流失是较为典型的非平衡数据集,以山西省某市某电信运营商2007年4月至7月的固定电话用户的数据为训练集,对其提取规则,并预测了2007年8月的客户流失情况.同时与目前该运营商以C5.0和Logistic回归方法为核心的客户流失预测模型进行了对比,实验证明了该算法的有效性.在针对电信客户流失预测的实际问题中,首次将ROC曲线引入来度量电信客户流失预测的准确率.
本文对非平衡数据集的分类问题和电信客户流失的预测问题进行了一些研究.但是,如何对具有定性属性或者混合属性的非平衡数据集进行有效分类以及如何将竞争对手分析、服务质量等纳入电信客户流失预测模型中还值得研究.本文的研究工作只是一个尝试,相关工作还有待进一步研究.
【关键词】:
【学位授予单位】:山西大学【学位级别】:硕士【学位授予年份】:2008【分类号】:TP301.6【目录】:
中文摘要4-6
ABSTRACT6-12
第一章 绪论12-18
1.1 论文研究的目的和意义12-13
1.2 国内外研究现状13-16
1.2.1 类分布对传统分类算法的影响13
1.2.2 随机抽样方法13
1.2.3 改进传统分类算法13-16
1.3 本文主要内容与组织结构16-18
第二章 非平衡数据集分类器性能的评价方法18-22
2.1 Accuracy方法18-19
2.2 F-measure方法19
2.3 ROC曲线19-22
第三章 KAIG算法的改进与构建22-40
3.1 信息粒22-23
3.2 Fuzzy ART算法机理23-26
3.2.1 Fuzzy ART的输入和输出23-24
3.2.2 Fuzzy ART的组成结构和特性24-26
3.3 基于 Fuzzy ART算法的信息粒26-31
3.3.1 同质指数 H-index26-27
3.3.2 不可分辨率 U-ratio27-28
3.3.3 粒重叠问题与纯度参数Purity的引入28-30
3.3.4 次属性30-31
3.4 改进 KAIG模型的建立31-35
3.4.1 算法步骤31-32
3.4.2 算法举例32-35
3.5 对比实验35-38
3.6 结论38-40
第四章 电信客户流失预测模型的建立与实现40-54
4.1 电信客户流失研究的背景和意义40-41
4.2 电信客户流失的定义和类型41-42
4.3 电信数据仓库的建立42-45
4.3.1 主题设计42
4.3.2 数据仓库模型设计42-45
4.4 电信数据的准备45-48
4.4.1 电信数据抽取45-46
4.4.2 宽表46-48
4.4.3 电信数据清洗48
4.5 电信客户流失预测模型的建立和结果48-52
4.5.1 个人电话50-51
4.5.2 办公电话51-52
4.5.3 公用电话52
4.6 结论52-54
第五章 结束语54-56
参考文献56-60
个人简历64-66
欢迎:、、)
支持CAJ、PDF文件格式
【相似文献】
中国期刊全文数据库
吴克寿;曾志强;;[J];计算机技术与发展;2011年09期
孙宜贵;职为梅;;[J];信息技术与信息化;2011年03期
胡聪;黄剑华;张英涛;唐降龙;;[J];智能计算机与应用;2011年03期
汪婵;程玉虎;王雪松;;[J];中国科技论文在线;2011年07期
黄志华;李明泓;马原野;周昌乐;;[J];生物化学与生物物理进展;2011年09期
徐淑坦;王朝勇;孙延风;;[J];吉林大学学报(理学版);2011年04期
黄荣娟;姜佳欣;唐银凤;卢昕;;[J];计算机应用与软件;2011年08期
刘文霞;;[J];赤峰学院学报(自然科学版);2011年08期
夏火松;刘建;朱慧毅;;[J];情报杂志;2011年09期
张国梁;肖超锋;;[J];电子技术;2011年08期
中国重要会议论文全文数据库
林珠;邢延;;[A];2009年中国智能自动化会议论文集(第二分册)[C];2009年
刘咏梅;杨勤科;赵牡丹;;[A];中国水土保持探索与实践——小流域可持续发展研讨会论文集[C];2005年
李孟歆;吴成东;;[A];第二十届中国控制会议论文集(下)[C];2001年
李建平;潘若愚;李轶琳;;[A];2004年中国管理科学学术会议论文集[C];2004年
李耐根;;[A];第十七届全国测控计量仪器仪表学术年会(MCMI'2007)论文集(上册)[C];2007年
林堃;白清源;谢丽聪;谢伙生;张莹;;[A];第三届全国信息检索与内容安全学术会议论文集[C];2007年
刘菁菁;林鸿飞;;[A];2007年全国开放式分布与并行计算机学术会议论文集(上册)[C];2007年
刘全昌;贺国平;张妮娜;;[A];第九届中国青年信息与管理学者大会论文集[C];2007年
侯松;周斌;贾焰;;[A];全国计算机安全学术交流会论文集(第二十四卷)[C];2009年
张爱华;靖红芳;王斌;徐燕;;[A];第五届全国信息检索学术会议论文集[C];2009年
中国重要报纸全文数据库
中国科学院东北地理与农业生态研究所
李建平;[N];中国水利报;2008年
本报记者 文雯;[N];中国环境报;2005年
王鹏翔;[N];广东建设报;2004年
韩雪萌;[N];金融时报;2007年
李明慧;[N];中国信息报;2006年
记者  赵凤华;[N];科技日报;2006年
仲治国;[N];中国电脑教育报;2004年
中国博士学位论文全文数据库
易高翔;[D];华中科技大学;2006年
林伟;[D];西北工业大学;2007年
谷琼;[D];中国地质大学;2009年
李烨;[D];上海交通大学;2007年
徐和祥;[D];复旦大学;2008年
李伯宇;[D];复旦大学;2007年
陈景年;[D];北京交通大学;2008年
陈淑慧;[D];广州中医药大学;2008年
王海江;[D];电子科技大学;2008年
陈万海;[D];哈尔滨工程大学;2008年
中国硕士学位论文全文数据库
高嘉伟;[D];山西大学;2008年
李园;[D];哈尔滨工程大学;2005年
王礼想;[D];安徽大学;2006年
蒯澄宇;[D];吉林大学;2009年
谢亮;[D];燕山大学;2009年
齐振东;[D];吉林大学;2008年
吴珊珊;[D];东南大学;2006年
陈照阳;[D];上海交通大学;2008年
罗志磊;[D];河南大学;2007年
刘全昌;[D];山东科技大学;2008年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 大众知识服务
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备75号译者:钱亦欣
目前我们发展出了不少机器学习算法来对数据建模,基于数据进行一些预测已经不再是难事。不论我们建立的是回归或是分类模型,只要我们选择了合适的算法,总能得到比较精确的结果。然而,世事并不总是一帆风顺,某些分类问题可能比较棘手。
在对不平衡的分类数据集进行建模时,机器学习算法可能并不稳定,其预测结果甚至可能是有偏的,而预测精度此时也变得带有误导性。那么,这种结果是为何发生的呢?到底是什么因素影响了这些算法的表现?
答案非常简单,在不平衡的数据中,任一算法都没法从样本量少的类中获取足够的信息来进行精确预测。因此,机器学习算法常常被要求应用在平衡数据集上。那我们该如何处理不平衡数据集?本文会介绍一些相关方法,它们并不复杂只是技巧性比较强。
本文会介绍处理非平衡分类数据集的一些要点,并主要集中于非平衡二分类问题的处理。一如既往,我会尽量精简地叙述,在文末我会演示如何用R中的ROSE包来解决实际问题。
什么是不平衡分类
不平衡分类是一种有监督学习,但它处理的对象中有一个类所占的比例远远大于其余类。比起多分类,这一问题在二分类中更为常见。(注:下文中占比较大的类称为大类,占比较小的类称为小类)
不平衡一词指代数据中响应变量(被解释变量)的分布不均衡,如果一个数据集的响应变量在不同类上的分布差别较大我们就认为它不平衡。
举个例子,假设我们有一个观测数为100000的数据集,它包含了哈佛大学申请人的信息。众所周知,哈佛大学以极低的录取比例而闻名,那么这个数据集的响应变量(即:该申请人是否被录取,是为1,否为0)就很不平衡,大致98%的观测响应变量为0,只有2%的幸运儿被录取。
在现实生活中,这类例子更是不胜枚举,我在下面列举了一些实例,请注意他们的不平衡度是不一样的。
1、一个自动产品质量检测机每天会检测工厂生产的产品,你会发现次品率是远远低于合格率的。
2、某地区进行了居民癌症普查,结果患有癌症的居民人数也是远远少于健康人群。
3、在信用卡欺诈数据中,违规交易数比合规交易少不少。
4、一个遵循6 Sigma原则的生产车间每生产100万个产品才会产出10个次品。
生活中的例子还有太多,现在你可以发现获取这些非平衡数据的可能性有多大,所以掌握这些数据集的处理方法也是每个数据分析师的必修课。
为什么大部分机器学习算法在不平衡数据集上表现不佳?
我觉得这是一个很有意思的问题,你不妨自己先动手试试,然后你就会了解把不平衡数据再结构化的重要性,至于如何再结构化,我会在操作部分中讲解。
下面是机器学习算法在不平衡数据上精度下降的原因:
1、响应变量的分布不均匀使得算法精度下降,对于小类的预测精度会很低。
2、算法本身是精度驱动的,即该模型的目标是最小化总体误差,而小类对于总体误差的贡献很低。
3、算法本身假设数据集的类分布均衡,同时它们也可能假定不同类别的误差带来相同的损失(下文会详细叙述)。
针对不平衡数据的处理方法
这类处理方法其实就是大名鼎鼎的“采样法”,总的说来,应用这些方法都是为了把不平衡数据修正为平衡数据。修正方法就是调整原始数据集的样本量,使得不同类的数据比例一致。
而在诸多学者研究得出基于平衡数据的模型整体更优的结论后,这一类方法越来越受到分析师们的青睐。
下列是一些具体的处理方法名称:
欠采样法(Undersampling)
过采样法(Oversampling)
人工数据合成法(Synthetic Data Generation)
代价敏感学习法(Cose Sensitive Learning)
让我们逐一了解它们。
1、欠采样法
该方法主要是对大类进行处理。它会减少大类的观测数来使得数据集平衡。这一办法在数据集整体很大时较为适宜,它还可以通过降低训练样本量来减少计算时间和存储开销。
欠采样法共有两类:随机(Random)的和有信息的(Informative)。
随机欠采样法会随机删除大类的观测直至数据集平衡。有信息的欠采样法则会依照一个事先制定的准则来删去观测。
有信息的欠采样中,利用简易集成算法(EasyEnsemble)和平衡级联算法(BalanceCascade)往往能得到比较好的结果。这两种算法也都很直白易懂。
简易集成法:首先,它将从大类中有放回地抽取一些独立样本生成多个子集。然后,将这些子集和小类的观测合并,再基于合并后的数据集训练多个分类器,以其中多数分类器的分类结果为预测结果。如你所见,整个流程和无监督学习非常相似。(注:译者认为更像基于Bagging的随机森林)
平衡级联法:它是一种有监督的学习法,首先将生成多个分类器,再基于一定规则系统地筛选哪些大类样本应当被保留。(译者注:算法整体是一个迭代至收敛的过程)
但欠采样法有一个显而易见的缺陷,由于要删去不少观测,使用该方法会使得大类损失不少重要信息。
2、过采样法
这一方法针对小类进行处理。它会以重复小类的观测的方式来平衡数据。该方法也被称作升采样(Upsampling)。和欠采样类似,它也能分为随机过采样和有信息的过采样两类。
随机过采样会将小类观测随机重复。有信息过采样也是遵循一定的准则来人工合成小类观测。
使用该方法的一大优势是没有任何信息损失。缺点则是由于增加了小类的重复样本,很有可能导致过拟合(译者注:计算时间和存储开销也增大不少)。我们通过该方法可以在训练集上得到非常高的拟合精度,但在测试集上预测的表现则可能变得愈发糟糕。
3、人工数据合成法
简单说来,人工数据合成法是利用生成人工数据而不是重复原始观测来解决不平衡性。它也是一种过采样技术。
在这一领域,SMOTE法(Synthetic Minority Oversampling Technique)是有效而常用的方法。该算法基于特征空间(而不是数据空间)生成与小类观测相似的新数据(译者注:总体是基于欧氏距离来度量相似性,在特征空间生成一些人工样本,更通俗地说是在样本点和它近邻点的连线上随机投点作为生成的人工样本,下文叙述了这一过程但有些晦涩)。我们也可以说,它生成了小类观测的随机集合来降低分类器的误差。
为了生成人工数据,我们需要利用自助法(Bootstrapping)和K近邻法(K-neraest neighbors)。详细步骤如下:
计算样本点间的距离并确定其近邻。
生成一个0到1上的均匀随机数,并将其乘以距离。
把第二步生成的值加到样本点的特征向量上。
这一过程等价于在在两个样本的连线上随机选择了一个点。
R中有一个包专门用来实现SMOTE过程,我们将在实践部分做演示。
4.代价敏感学习(CSL)
这是另一种常用且有意思的方法。简而言之,该方法会衡量误分类观测的代价来解决不平衡问题。
这方法不会生成平衡的数据集,而是通过生成代价矩阵来解决不平衡问题。代价矩阵是描述特定场景下误分类观测带来的损失的工具。近来已有研究表明,代价敏感学习法很多时候比采样法更优,因此这种方法也值得一学。
让我们通过一个例子来了解该方法:给定一个有关行人的数据集,我们想要了解行人是否会携带炸弹。数据集包含了所有的必要信息,且携带炸弹的人会被标记为正类,不带炸弹的就是负类。现在问题来了,我们需要把行人都分好类。让我们先来设定下这一问题的代价矩阵。
如果我们将行人正确分类了,我们不会蒙受任何损失。但如果我们把一个恐怖分子归为负类(False Negative),我们要付出的代价会比把和平分子归为正类(False Positive)的代价大的多。
代价矩阵和混淆矩阵类似,如下所示,我们更关心的是伪正类(FP)和伪负类(FN)。只要观测被正确分类,我们不会有任何代价损失。
该方法的目标就是找到一个使得总代价最小的分类器
Total Cost = C(FN)xFN + C(FP)xFP
1、FN是被误分类的正类样本数
2、FP是被误分类的负类样本数
3、C(FN)和C(FP)分别代表FN和FP带来的损失。本例中C(FN) & C(FP)
除此之外,我们还有其他的比较前沿的方法来处理不平衡样本。比如基于聚类的采样法(Cluster based sampling),自适应人工采样法(adaptive synthetic sampling),边界线SMOTE(border line SMOTE),SMOTEboost,DataBoost-IM,核方法等。这些方法的基本思想和前文介绍的四类方法大同小异。还有一些更直观的方法可以帮助你提升预测效果:
1、利用聚类技术,把大类分为K个次类,每个此类的样本不重叠。再基于每个次类和小类的合并样本来训练分类器。最后把各个分类结果平均作为预测值。
2、聚焦于获取更多数据来提高小类的占比。
应当使用哪类评价测度来评判精度?
选择合适的评价测度是不平衡数据分析的关键步骤。大部分分类算法仅仅通过正确分类率来衡量精度。但在不平衡数据中,使用这种方法有很大的欺骗性,因为小类对于整体精度的影响太小。
混淆矩阵和代价矩阵的差异就在于代价矩阵提供了跟多的误分类损失信息,其对角元素皆为0。而混淆举证只提供了TP,TN,FP,FN四类样本的比例,它常用的统计量则为正确率和错误率:
Accuracy: (TP + TN)/(TP+TN+FP+FN)
Error Rate = 1 – Accuracy = (FP+FN)/(TP+TN+FP+FN)
如前文所提,混淆矩阵可能会提供误导性结果,并且它对数据变动非常敏感。更进一步,我们可以从混淆矩阵衍生出很多统计量,其中如下测度就提供了关于不平衡数据精度的更好度量:
准确率(Preciosion):正类样本分类准确性的度量,即被标记为正类的观测中被正确分类的比例。
Precision = TP / (TP + FP)
召回率(Recall):所有实际正类样本被正确分类的比率。也被称作敏感度(Sensitivity)
Recall = TP / (TP + FN)
F测度(F measure):结合准确率和召回率作为分类有效性的测度。具体公式如下(β常取1):
F measure = ((1 + β)? × Recall × Precision) / ( β? × Recall + Precision )
尽管这些测度比正确率和错误率更好,但总的说来对于衡量分类器而言还不够有效。比如,准确率无法刻画负类样本的正确率。召回率只针对实际正类样本的分类结果。这也就是说,我们需要寻找更好的测度来评价分类器。
谢天谢地!我们可以通过ROC(Receiver Operationg Characterstics)曲线来衡量分类预测精度。这也是目前广泛使用的评估方法。ROC曲线是通过绘制TP率(Sensitivity)和FP率(Specificity)的关系得到的。
Specificity = TN / (TN + FP)
ROC图上的任意一点都代表了单个分类器在一个给定分布上的表现。ROC曲线之所以有用是因为它提供了分类数据收益(TP)和损失(FP)的可视化信息。ROC曲线下方区域的面积(AUC)越大,整体分类精度就越高。
但有时ROC曲线也会失效,它的不足包括:
1、对于偏态分布的数据,可能会高估精度
2、没有提供分类表现的置信区间
3、无法提供不同分类器表现差异的显著性水平
作为一种替代方法,我们也可以选择别的可视化方式比如PR曲线和代价曲线。特别地,代价曲线被认为有以图形方式描述分类器误分类代价的能力。但在90%的场合中,ROC曲线已经足够好。
在R中进行不平衡数据分类
行文至此,我们已经学习了不平衡分类的一些重要理论技术。是时候来应用它们了!在R中,诸如ROSE包和EMwR包都可以帮助我们快速实现采样过程。我们将以一个二分类案例做演示。
ROSE(Random Over Sampling Examples)包可以帮助我们基于采样和平滑自助法(smoothed bootstrap)来生成人工样本。这个包也提供了一些定义良好的函数来快速完成分类任务。
让我们开始吧
ROSE包中内置了一个叫做hacide的不平衡数据集,它包括hacide.train和hacide.test两个部分,让我们把它读入R环境:
如你所见,数据集有3个变量的1000个观测。cls是响应变量,x1和x2是解释变量。让我们检查下cls的不平衡程度:
可以看到,数据集中只有2%的正样本,其余98%都属于负类。数据的不平衡性极其严重。那么,这对我们的分类精度会带来多大影响?我们先建立一个简单的决策树模型:
让我们看看这个模型的预测精度,ROSE包提供了名为accuracy.meas()的函数(F测度计算不对,感兴趣的读者自行查看帮助文档),它能用来计算准确率,召回率和F测度等统计量。
这些测度值看上去很有意思。如果我们设定阈值为0.5,准确率等于1说明没有被误分为正类的样本。召回率等于0.2意味着有很多样本被误分为负类。0.167的F值也说明模型整体精度很低。
我们再来看看模型的ROC曲线,它会给我们提供这个模型分类能力的直观评价。使用roc.curve()函数可以绘制该曲线:
AUC值等于0.6是个很槽糕的结果。因此我们很有必要在建模前将数据集修正平衡。在本案例中,决策树算法对于小类样本无能为力。
我们将使用采样技术来提升预测精度。这个包提供了ovun.sample()的函数来实现过采样和欠采样。
我们先试试过采样
上述代码实现了过采样方法。N代表最终平衡数据集包含的样本点,本例中我们有980个原始负类样本,所以我们要通过过采样法把正类样本也补充到980个,数据集共有1960个观测。
与之类似,我们也能用欠采样方法,请牢记欠采样是无放回的。
欠采样后数据是平衡了,但由于只剩下了40个样本,我们损失了太多信息。我们还可以同时采取这两类方法,只需要把参数改为method = “both”。这时,对小类样本会进行有放回的过采样而对大类样本则进行无放回的欠采样。
函数的参数p代表新生成数据集中正类的比例。
但前文已经提过两类采样法都有自身的缺陷,欠采样会损失信息,过采样容易导致过拟合,因而ROSE包也提供了ROSE()函数来合成人工数据,它能提供关于原始数据的更好估计。
这里生成的数据量和原始数据集相等(1000个观测)。现在,我们已经用4种方法平衡了数据,我们分别建模评评估精度。
是时候用roc.curve()函数来评估精度了!
下方就是输出的ROC曲线,其中:
黑线代表人工数据合成
红线代表过采样
绿线代表欠采样
蓝线代表双采样
因此,我们发现利用人工数据合成法可以带来最高的预测精度,它的表现比采样法要好。这一技术和更稳健的模型结合(随机森林,提升法)可以得到更高的精度。
这个包为我们提供了一些基于holdout和bagging的模型评估方法,这有助于我们判断预测结果是否有太大的方差。
可以发现预测精度维持在0.98附近,这意味着预测结果波动不大。类似的,你可以用自助法来评估,只要把method.asses改为”BOOT”。extr.pred参数是一个输出预测结果为正类的列的函数。
当我们面对不平衡数据集时,我们常常发现利用采样法修正的效果不错。但在本例中,人工数据合成比传统的采样法更好。为了得到更好的结果,你可以使用一些更前沿的方法,诸如基于boosting 的人工数据合成。
在本文中,我们讨论了关于不平衡数据的一些要点。对于R的使用者来说,由于有很多强大的包的支持,处理这类问题并非难事。
via:xueqing
转载请注明来自36大数据(): &
除非特别注明,本站所有文章均不代表本站观点。报道中出现的商标属于其合法持有人。请遵守理性,宽容,换位思考的原则。

我要回帖

更多关于 svm分类器训练特征 的文章

 

随机推荐