样本不均衡问题

概述

learning-imbalanced-classes 非常好的一篇文章,里边提到了指标评估、不同解决方法的难易程度。核心是关注数据本身的特点,来进行选择。

主流方法

采样Sampling-based methods

  • 上采样
    增加少数类的样本/正样本),如SMOTE,这种方法应用较多

  • 下采样
    减少多数类的样本/负样本

  • 混合
    增加正样例、同时减少负样例)(实际中,用的不多)

惩罚权重Cost function based methods

即代价敏感学习,在cost function中,增加少数类样本的权重,减少多样本的权重。涉及到算法的实现,改动起来还是比较麻烦。
在sklearn中,像svm这样的算法有个class_weight参数,可以直接用来配置权重,默认是与样本数的比例成反比。

通过组合/集成的方法Ensemble-based Methods

在构建训练集的时候,将大类随机抽样和小类合并得到多个较均衡的训练集,训练得到多个模型之后,投票打分得到最终的预测结果。

One-Class Learning or Novelty Detection Methods

(略,没太清楚具体应用)

改变比较/评估指标

  1. bu用accracy(精度),改用AUC/F值这样的评估指标来衡量分类器的效果
  2. 一般的逻辑回归中,y+/y- > 1就认为是正样本,改为判定y+/y- > m+/m-才判定为正样本,即调节比较值,来规避数据不平衡的问题。
  3. FTRL中,直接改动W值的系数。

CTR 预估正负样本 不平衡,请问怎么解决 ?

引自[http://blog.csdn.net/losteng/article/details/50947161]的说法,在实际应用中做些变通

解决数据不平衡问题的方法有很多,上面只是一些最常用的方法,而最常用的方法也有这么多种,如何根据实际问题选择合适的方法呢?接下来谈谈一些我的经验。

在正负样本都非常之少的情况下,应该采用数据合成的方式;在负样本足够多,正样本非常之少且比例及其悬殊的情况下,应该考虑一分类方法;在正负样本都足够多且比例不是特别悬殊的情况下,应该考虑采样或者加权的方法。

采样和加权在数学上是等价的,但实际应用中效果却有差别。尤其是采样了诸如Random Forest等分类方法,训练过程会对训练集进行随机采样。在这种情况下,如果计算资源允许上采样往往要比加权好一些。

另外,虽然上采样和下采样都可以使数据集变得平衡,并且在数据足够多的情况下等价,但两者也是有区别的。实际应用中,我的经验是如果计算资源足够且小众类样本足够多的情况下使用上采样,否则使用下采样,因为上采样会增加训练集的大小进而增加训练时间,同时小的训练集非常容易产生过拟合。对于下采样,如果计算资源相对较多且有良好的并行环境,应该选择Ensemble方法。

应用

算法的修正

例如在FTRL中,就可以根据采样的比例,还原实际的点击率
CVR-不平衡类的处理

#

个人理解

样本不均衡,对算法层面的影响应该不是主要的。之所以提出这个问题,是因为有写情况下,我们对算法的性能评估使用了诸如精度这样的指标。这样的指标,错误的评估了整体的算法性能,但具体到每一个类别,其精度本身还是有价值的。样本不平滑问题,会影响到我们对指标的选择。
而破解这个问题的根本方法在于思考,不均衡的数据,到底怎样影响了我们的算法逻辑。我们的算法逻辑,在训练阶段,有哪些关键点是会受样本分布影响的,能清楚当训练数据一条条流过来的时候,我们的算法流程、细节有怎样的变化,这个问题自然就能够得到解决。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值