6个处理数据不均衡的策略

数据不均衡往往可以导致一些问题,比如对一个两类分类问题,如果训练集中的正负样本比例为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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值