博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据不均衡问题
阅读量:5229 次
发布时间:2019-06-14

本文共 1769 字,大约阅读时间需要 5 分钟。

非均衡数据处理--如何评价?

什么是非均衡数据?

 

这个问题很直观, 就是样本中数据的不同类别的样本的比例相差很大, 一般可以达到 9:1 或者更高。 这种情况其实蛮常见的, 譬如去医院看病的人,最后当场死亡的比例(大部分人还是能活着走出医院的, 所以要对医生好点)。 或者搞大数据的人员中男女比例。再或者, 生长线上的正品和次品。 如下图就是, 两种样本非常不成比例, 就失衡了(Imbalanced/unbalanced) 。

 

 

 

 

为什么非均衡是个大问题?

 

主要的原因就是非均衡影响到了分类算法的效果。是怎么影响的呢? 首先我们看一下如何评价一个分类算法。 一般来说会用到Confusion Matrix。

 

 

 

一般来说,一个分类器要正确率高。 那么正确率(Accuracy,ACC)是什么呢?

 

 

 

但是如果是非均衡的情况下, 如果选择绝对分类器(absolute classifier), 简单全部判别成主要(Major)的类别, 那么 (TP+TN)/ (P + N) = P / (P + N) > 90% 。

 

 

 

另外一个原因, 因为目前大部分分类器是按平衡数据的正确率来进行优化的, 那么很容易忽视较小(Minor)的类别, 使得分类器对Minor失效。

 

因此两个问题放在我们面前了:

1): 如何评价非均衡数据分类效果。

2): 如何学习到一个适合分类器。

 

 

非均衡数据分类的评价?

 

有个最早在自信号处理领域发明, 但是生物医学领域发扬光大的标准叫受试者操作特征曲线 Receiver operating characteristic (ROC) curve的标准。受试者, 一听就像药物测试的对象。 对的,这正是前面提到在生物医药领域, 非均衡情况特别普遍, 这也是ROC curve标准广泛应用的原因吧。

 

ROC 曲线是坐标系上的曲线, X轴是FPR (Specificity), Y轴是TPR(Sensitivity / Recall)。

 

 

 

一般情况下, 这个曲线采用描点法(4个点)来确定这个曲线。 而这个曲线下面和X轴的面积,就叫Area Under Curve(AUC)。 AUC是衡量分类器好坏的标准。

 

 

 

为什么ROC有效呢?因为我们选择一个随机分类器(random classifier), 这是比较一个分类器好坏的最好办法。 因为比随机分类器稍好的叫弱分类器(weak classifier), 要好很多的叫强分类器(strong classifier)。ROC在随机分类器情况下,刚好是对角线。

 

 

 

ROC 曲线在absolute classifier把全部数据分到major类别时候, 不存在Accuracy的问题。 因为AUC=0, 是很差的情况。

 

 

因此, 把ACC受到非均衡影响的叫imbalance sensitive的标准, 而把AUC这类的叫imbalance non-sensitive标准。 所以要选这non-sensitive的标准来衡量非均衡数据。 和ACC相关的F-Measure, 或者相关系数Correlation Coefficient(CC), 以及决策树用的Mutual Information(MI)这些都是sensitive的,不推荐使用。 而G-Mean, AUC, 以及基于ROC衍生的PCF-EC图(Probility Cost Function - Expected Cost)等是non-sensitive的比较推荐。

 

大致情况,如下图所示, 更多细节就不在这里展开了。

 

 

 

 

 

 

 

 

根据Chris Chen的提醒, 加入“Cumulative Gains Curve and lift chart” 和 “Area Under Lift, AUL”:

 

 

 

 

 

 

小结, 这样我们总结了如何评价非均衡数据分类的情况, 该选用non-sensitive的标准。 但是如何学习的问题?后续会继续介绍, 主要有三种方式:

  1. 通过sampling技术,生成均衡的样本
  2. 调整算法,允许算法改变权重weight变得cost-sensitive。
  3. 采用集成学习思想, 将major类进行横向划分,形成小的均衡的样本集群。

转载于:https://www.cnblogs.com/yumoye/p/10535026.html

你可能感兴趣的文章
requireJs搭建
查看>>
安装Newton版Swift,配合keystone认证
查看>>
Ubuntu系统添加搜狗输入法
查看>>
使用JQuery对页面进行绑值
查看>>
JDK并发包
查看>>
单网卡多网段访问设置(内外网共用)
查看>>
javascript 之基本数据类型、引用数据类型区别--02
查看>>
剑指offer--17.第一个只出现一次的字符
查看>>
最近找工作面的面试题目汇总(一)
查看>>
20不努力,30做助理(转载)
查看>>
程序员如何描述清楚线上bug
查看>>
再读c++primer plus 004
查看>>
OpenSSL 1.0.1 TLS/DTLS heartbeat information disclosure漏洞 测试
查看>>
软工课评价
查看>>
UIDeviceOrientationDidChangeNotification和UIApplicationDidChangeStatusBarFrameNotification
查看>>
Test is dead
查看>>
SPEC CPU2006的安装和使用
查看>>
webRTC脱坑笔记(二)— webRTC API之MediaStream(getUserMedia)
查看>>
Factory Design Pattern
查看>>
5-hadoop的运行模式(伪分布式)
查看>>