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

在分类问题中, 常见的数据预处理包括: 数据缺失(Missing), 奇值处理(Outlier), 数据变换(Transformation), 特征选择(Feature Selection), 特征提取(Feature Extraction), 非均衡数据预处理(Imbalanced/unbalanced)。

什么是非均衡数据?

这个问题很直观, 就是样本中数据的不同类别的样本的比例相差很大, 一般可以达到 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轴是RPR (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的比较推荐。

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

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

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

参考:

http://journal.frontiersin.org/article/10.3389/fncom.2014.00043/full

https://classeval.wordpress.com/introduction/basic-evaluation-measures/

本文分享自微信公众号 - AI2ML人工智能to机器学习(mloptimization)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-11-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习自然语言处理

【论文笔记】中文词向量论文综述(一)

最近在做中文词向量相关工作,其中看了一些中文词向量的相关论文,在这篇文章,将把近几年的中文词向量进展及其模型结构加以简述,大概要写3-4篇综述,每篇包含2-3篇...

14620
来自专栏一心无二用,本人只专注于基础图像算法的实现与优化。

《Single Image Haze Removal Using Dark Channel Prior》一文中图像去雾算法的原理、实现、效果(速度可实时)

      最新的效果见 :http://video.sina.com.cn/v/b/124538950-1254492273.html         可处理...

1K100
来自专栏AI科技大本营的专栏

XGBoost参数调优完全指南(附Python代码)

作者 | Aarshay Jain 简介 如果你的预测模型表现得有些不尽如人意,那就用XGBoost吧。XGBoost算法现在已经成为很多数据工程师的重要武器。...

2K60
来自专栏崔庆才的专栏

自然语言处理全家福:纵览当前NLP中的任务、数据、模型与论文

组合范畴语法(CCG; Steedman, 2000)是一种高度词汇化的形式主义。Clark 和 Curran 2007 年提出的标准解析模型使用了超过 400...

99800
来自专栏星回的实验室

图像处理智能化的探索[一]:人脸识别裁图

最近在对接公司一些新闻接口的时候,发现接口茫茫多:CMS接口、无线CMS接口、正文接口、列表接口……更令人捉急的是,由于新闻推送场景不同,每条新闻的配图尺寸也就...

24330
来自专栏杨熹的专栏

Kaggle 神器 xgboost

在 Kaggle 的很多比赛中,我们可以看到很多 winner 喜欢用 xgboost,而且获得非常好的表现,今天就来看看 xgboost 到底是什么以及如何应...

51150
来自专栏大数据文摘

机器学习算法一览(附python和R代码)

276140
来自专栏AI研习社

利用摇滚乐队学习TensorFlow,Word2Vec模型和TSNE算法

学习“TensorFlow方式”来构建神经网络似乎是开始机器学习的一大障碍。在本教程中,我们将一步一步地介绍使用Kaggle的Pitchfork数据构建Band...

20720
来自专栏海天一树

Python从0实现朴素贝叶斯分类器

朴素贝叶斯算法是一个直观的方法,使用每个属性归属于某个类的概率来做预测。你可以使用这种监督性学习方法,对一个预测性建模问题进行概率建模。 给定一个类,朴素贝叶斯...

96220
来自专栏量子位

Kaggle冠军告诉你,如何从卫星图像分割及识别比赛中胜出?

王小新 编译自 Kaggle 量子位 出品 | 公众号 QbitAI 在2016年12月至2017年3月期间,Kaggle网站举办了一场对英国国防科学与技术实...

86390

扫码关注云+社区

领取腾讯云代金券