数据不均衡往往可以导致一些问题,比如对一个两类分类问题,如果训练集中的正负样本比例为99:1,那么直接将所有样本都分为正样本,模型的准确度也可以达到99%。准确度通常是我们衡量一个模型性能的基本指标(starting point),但是它有时候并不客观(misleading),这个可以参考accuracy paradox。但其实这个训练的模型并没有什么用。那么在训练集中数据不均衡的条件下,如果避免训练的模型对于某一类出现过拟合的现象呢?
1.收集更多数据:
这个方法经常被忽略。事实上,如果可以收集到更多数据,那么它从两个方面来讲是有效的:首先大的数据集或许类别之间更加均衡;另外收集更多数据那么较少类里面的数据也会更多,这个在后面的策略里面会很有用。
2.改变使用的性能评价标准:
正如前面提到的accuracy paradox,简单的通过准确度来衡量模型的性能并不是客观的。这里还有其他可以用来衡量模型性能的指标,最常见的包括Precision(TP/TP+FP),Recall(TP/TP+FN),precision可以衡量模型对正样本识别的准确度,recall则可以衡量对正样本识别的完整性。F1-score指标是基于precision和recall,取二者的调和平均数。另外还有ROC曲线,ROC曲线涉及到两个指标:sensitivity(TP/TP+FN)和specificity(TN/TN+FP)。可以看出,这两个指标中sensitivity实际上跟recall是一致的,衡量模型对正样本的检测能力,specificity则是衡量模型对负样本的检测能力。在ROC曲线中,纵坐标是sensitivity,横坐标是1-specificity。如果一个模型的ROC曲线越贴近Y轴,那么它的性能越好,而越靠近斜率为1的直线,分类能力越差。具体的解释可以参考ROC curve.另外,也可以修改accuracy的计算方式0.5*(sensitivity+specificity)。这样就避免了偏向于某一类样本。
3.重采样(resampling):
重采样就是重新调整你所用的数据集,一般分为两种方式:
上采样(oversampling):复制观测值少的类的样本;数据少的时候常使用这个。
下采样(undersampling):删除观测值多的类的样本;数据多的时候常使用这个。
通常而言,这两种方式简单易行,所以可以都进行尝试比较两者的性能。采样的时候可以考虑random 或者non-random的方式,以及使用不同的重采样比例。
4.生成合成样本:
与resampling 的方式不同,这里不是复制样本,而是通过算法生成合成的样本。比较著名的算法是SMOTE:Synthetic minority over sampling techniques.它的基本方法是首先通过距离度量选择两个或多个比较相近的样本,然后通过在一个样本中添加随机扰动来生成新的样本,当然要求这个随机扰动必须在相邻实例的差异之间。
5.使用不同的算法:
不要在所有问题上使用同一个算法。
6.使用带惩罚的模型(penalized model):
可以为每类给定一个权重。比如通过给观测值少的类较大的代价。常见的比如penalized-SVM或者penalized-LDA。

另外作者还推荐一个很赞的答案:
In classification, how do you handle an unbalanced training set?
总结:
方法很多,最重要的在于开始做,从小的地方着手,然后不断尝试。

reference:
[1]http://machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/

处理数据不均衡的策略相关推荐

  1. 矢量切片_数据粒度均衡的二维矢量瓦片构建方法

    作 者 信 息 应 申1,2,王子豪1,杜志强3,丁火平4, 李翔翔4 (1. 武汉大学 资源与环境科学学院,湖北 武汉 430079:2. 自然资源部城市国土资源监测与仿真重点实验室,广东 深圳 5 ...

  2. 负载均衡—算法/策略

    负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 一.四层负载均衡 vs 七层负载均衡 四层负载均 ...

  3. Nginx系列之负载均衡算法策略

    负载均衡实际上是一种网络技术,主要是基于现有的网络结构,增加吞吐量.加强网络数据处理能力.提高应用系统的灵活和可用性.利用Nginx可实现负载均衡,Nginx支持加权Round-Robin负载均衡算法 ...

  4. 再议《反驳 吕震宇的“小议数据库主键选取策略(原创)” 》

    前天发表了篇文章叫<小议数据库主键选取策略(原创)>,随即有网友提出了反驳意见<反驳 吕震宇的"小议数据库主键选取策略(原创)" >,看到后,我又做了做实验 ...

  5. Isilon三款新品构建数据湖2.0策略

    公司的边缘数据一直是被忽略的存在,据ESG的报告显示,将近70%的公司存在边缘办公室,并且边缘数据达到了10PB.如何将这些边缘数据管理起来成为一个挑战,因为边缘数据在存储上存在一定的技术壁垒,Isi ...

  6. 集中式服务器模型无线网络,认知无线电中次用户在重试排队和共享服务器模型下的均衡止步策略...

    摘要: 近几十年来,无线通信技术不断发展,频谱空间被划分的所剩无几,频谱资源日趋紧张,而这种资源紧张更多是由于对不同无线接入技术的频谱分配不合理引起的,认知无线电技术基于此应运而生.认知无线电技术中的 ...

  7. HDFS数据副本的摆放策略

    HDFS数据副本的摆放策略 副本的存放位置对于HDFS的性能和可靠性是非常重要的,如果副本的存放机制不好的话,在计算的过程中很大可能会产生数据传输,这样对于带宽和磁盘的IO影响非常巨大.因此对于优化副 ...

  8. 计算机系统备份的原则和策略,计算机系统数据备份机制与策略

    计算机系统数据备份机制与策略 20年第5 05期 华中电力 第 l卷 8 计算机系统数据备份机制与策略 耿煜 (樊学院机械系,北襄樊襄湖 4 15 ) 4 03 摘要:针对当今计算环境中不断增长的数据 ...

  9. 如何解决回归任务数据不均衡的问题?

    摘要:现有的处理不平衡数据/长尾分布的方法绝大多数都是针对分类问题,而回归问题中出现的数据不均衡问题确极少被研究. 本文分享自华为云社区<如何解决回归任务数据不均衡的问题?>,原文作者:P ...

最新文章

  1. linux 把命令行结果赋值给变量;linux if语句 ; command log
  2. JavaScript数学,四舍五入到小数点后两位[重复]
  3. sharding-jdbc源码解析之sql解析
  4. oracledb_npm包的使用
  5. 成为程序员ing日记
  6. rpc 调用webservice怎样传递参数_五分钟让你了解RPC原理详解
  7. win32 socket的一个简单的例子 控制台
  8. CNSA与CASC和CASIC的区别
  9. Javascript特效:一个不停的表盘
  10. IDEA 集成配置 Jad
  11. Android N - Data Saver
  12. day03_雷神_文件操作
  13. 计算几何03_三次参数样条曲线与Cardinal曲线
  14. SCI科研论文配图插图绘制推荐-博图汇科研绘图
  15. 《缠中说禅108课》41:没有节奏,只有死
  16. 使用GEOquery 下载并读取数据
  17. 前景理论、灰靶决策的直觉模糊多属性决策方法及matlab应用
  18. html5 canvas纯js开发战棋类rpg游戏
  19. VHDL实现智能药盒
  20. [iOS]Charles工具

热门文章

  1. linux中的 127.0.0.1和0.0.0.0和::
  2. SSM中使用注解方式调用输入输出参数存储过程,输入参数为javabean方式,Boolean类型对应TINYINT类型
  3. sp_getapplock_sp_getapplock和sp_releaseapplock存储过程概述
  4. tSQLt单元测试的测试驱动数据库开发(TDDD)基础
  5. Visual Studio Code 使用Git进行版本控制
  6. Android-LayoutInflater
  7. 鼠标点击后的CSS3跑马灯效果
  8. 2015.12.20 自动化运维
  9. Linux操作系统PS命令详细解析
  10. 使用VS2012 C++ 进行单元测试