作者 | Chilia

整理 | NewBeeNLP

本文主要讨论两种不平衡问题。

  • 一是数据的类别本来就不平衡,比如在广告CTR预估中,可能90%的广告都不会被点击,只有一少部分被点击;

  • 二是由于误分类cost的不对称性(asymmetric cost),例如把non-spam 分成spam的代价要远大于把spam分成non-spam。

在这篇文章中,我将介绍两大类方法:一是通过采样而改变数据集,二是修改训练策略。

1. 从数据层面解决 – 重采样 (Resampling)

1.1 随机欠采样(Random Under-Sampling)

通过随机删除多数类别的样本来平衡类别分布。

好处:

  • 当训练数据集很大时,可以通过减少训练数据样本的数量来帮助改善运行时间和存储问题

缺点:

  • 丢弃可能有用的信息

  • 随机欠采样选择的样本可能是有偏差的样本, 它不会是整体分布的准确代表。因此,可能导致实际在测试集上的结果不准确

1.2 随机重采样(Random Over-Sampling)

通过「随机重复取少数类别的样本」来平衡类别分布。

好处

  • 与欠采样不同,此方法不会导致信息丢失。此方法优于随机欠采样

缺点

  • 重复取少数类别的样本,因此增加了过拟合的可能性。

1.3 Ensemble 采样

类似bagging的思想,有多个基学习器,每个基学习器都抽取一部分majority class,并且使用全部的minority class。这样,每个majority样本都能够被利用上,不会有信息的损失。

1.4 合成少数类过采样技术 (Synthetic Minority Over-sampling Technique, SMOTE)

此方法用来解决直接复制少数类样本导致的过拟合问题。SMOTE算法的基本思想是对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中。

该算法的模拟过程采用了KNN技术,模拟生成新样本的步骤如下:

  1. 计算出每个少数类样本的K个近邻;

  2. 从K个近邻中随机挑选N个样本进行随机线性插值,从而构造新的少数类样本;

  3. 将新样本与原数据合成,产生新的训练集;

黄色点:minority;蓝色点:majority

2 从算法层面解决

2.1 改变loss的权重

重采样方法改变了数据集,可能导致数据集变得太大,或者丢弃了一些信息。所以,有没有一种方法能够从算法层面解决类别不平衡问题呢?

实际上,可以通过改变loss的方法来实现。对分类器的小类样本数据增加loss权值,降低大类样本的权值,从而使得分类器将重点集中在小类样本身上。具体做法就是,在训练分类器时,若分类器将小类样本分错时额外增加分类器一个小类样本分错代价,这个额外的代价可以使得分类器更加“关心”小类样本。

可以让majority的权重为1,minority权重为3

树模型

2.2 boosting 方法

在boosting方法中,分类器每一步会关心上一步分错的那些样本,这样分类器就会越来越关心少数类样本,把它们的权值提高。久而久之,就能够将少数样本正确分类了。

三句话不离本行

在搜索、推荐、广告的实际场景下,怎么选择正负样本也是大有讲究。

对于召回阶段,一般初始的训练集是只有正样本的。什么样的样本被选作正样本,这个标准在每个公司都不一样。

例如,facebook在其最新的文章 Que2Search: Fast and Accurate Query and Document Understanding for Search at Facebook中提到,他们选择正样本标准十分严格:对于一个query,只有当用户点击了一个product,进去和卖家聊天,卖家还回复了,这才算一个正样本。

但是在其另外一篇文章Embedding-based Retrieval in Facebook Search中却提到,其实可以把用户点击的商品都算作正样本。这是因为其实召回可以看作排序阶段的一个近似,我们只需要快速的把和query相关的物品都拿出来。

那么召回阶段的负样本怎么来呢?在实际的数据流场景中,一般是用in-batch采样,但是这样有一个问题:越热门的商品,越容易出现在batch中,所以越容易成为负样本。这样,就对热门商品施加了不必要的惩罚。

为了解决这个问题,Google在Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations一文中提出streaming frequency estimation方法。其实还有一些负采样方法,比如难负例采样。还可以把in-batch采样与随机负采样相结合。这里的门道很多,之后会专门出专题介绍。

对于排序阶段,一般都是多目标预测,目标有是否点击、是否关注、是否购买、观看时长、评分等等(engagement & satisfaction),负样本就是那些曝光未点击的,由于曝光的商品本来就比较少了(相对召回阶段而言),所以数据不平衡没有那么严重。

本文参考:

  • 哥伦比亚大学2021fall COMS 4995课件

END -

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载黄海广老师《机器学习课程》视频课黄海广老师《机器学习课程》711页完整版课件

本站qq群955171419,加入微信群请扫码:

【机器学习】数据不平衡问题都怎么解?相关推荐

  1. 数据不平衡问题都怎么解?

    作者 | Chilia 整理 | NewBeeNLP 本文主要讨论两种不平衡问题. 一是数据的类别本来就不平衡,比如在广告CTR预估中,可能90%的广告都不会被点击,只有一少部分被点击; 二是由于误分 ...

  2. 【转】训练数据不平衡问题都怎么解?

    作者 | Chilia 整理 | NewBeeNLP 本文主要讨论两种不平衡问题. 一是数据的类别本来就不平衡,比如在广告CTR预估中,可能90%的广告都不会被点击,只有一少部分被点击; 二是由于误分 ...

  3. 机器学习数据不平衡不均衡处理之SMOTE算法实现

    20201125 当多数类和少数类数量相差太大的时候,少数类不一定要补充到和多数类数量一致 最好的办法就是全部过采样到最大记录数的类别 调参 SMOTE:只是过采样 SMOTEENN:过采样的同时欠采 ...

  4. 机器学习中的数据不平衡问题----通过随机采样比例大的类别使得训练集中大类的个数与小类相当,或者模型中加入惩罚项...

    机器学习中的数据不平衡问题 摘自:http://wap.sciencenet.cn/blogview.aspx?id=377102 最近碰到一个问题,其中的阳性数据比阴性数据少很多,这样的数据集在进行 ...

  5. 如何解决机器学习中数据不平衡问题

    作者:无影随想  时间:2016年1月.  出处:https://zhaokv.com/machine_learning/2016/01/learning-from-imbalanced-data.h ...

  6. 从重采样到数据合成:如何处理机器学习中的不平衡分类问题? 转载 2017年08月01日 17:09:03 标签: 机器学习 / 数据 719 转自:http://www.sohu.com/a/12

    从重采样到数据合成:如何处理机器学习中的不平衡分类问题? 转载 2017年08月01日 17:09:03 标签: 机器学习 / 数据 719 转自:http://www.sohu.com/a/1293 ...

  7. 机器学习(二十四)——数据不平衡问题, 强化学习

    https://antkillerfarm.github.io/ 数据不平衡问题 https://mp.weixin.qq.com/s/e0jXXCIhbaZz7xaCZl-YmA 如何处理不均衡数据 ...

  8. 如何解决机器学习中的数据不平衡问题?

    在机器学习任务中,我们经常会遇到这种困扰:数据不平衡问题. 数据不平衡问题主要存在于有监督机器学习任务中.当遇到不平衡数据时,以总体分类准确率为学习目标的传统分类算法会过多地关注多数类,从而使得少数类 ...

  9. lightgbm 数据不平衡_不平衡数据下的机器学习(下)

    本文从不平衡学习的基础概念和问题定义出发,介绍了几类常见的不平衡学习算法和部分研究成果.总体来说,不平衡学习是一个很广阔的研究领域,但受笔者能力和篇幅的限制,本文仅对其中部分内容做了简单概述,有兴趣深 ...

最新文章

  1. animation的6个属性
  2. Pearson相关系数
  3. 来腾讯云开发者实验室 学习.NET
  4. [Diary]6.10
  5. JVM整体架构与调优参数说明
  6. Ubuntu下安装opencv3.4.6+opencv_contrib
  7. python 发邮件 timeout_python3 发送邮件 出现的问题(新手)
  8. ListView控件商城列表
  9. android软件画面共享,安卓两台手机怎么实现屏幕共享?安卓两台手机实现屏幕共享教程...
  10. CAD.net 根据句柄获取图元
  11. 普通显示器玩立体游戏|红蓝立体游戏|iZ3D设置办法
  12. KV杀毒软件创始人离世
  13. Android VideoView播放avi格式视频有声音无图像问题
  14. 对比自监督学习综述 - A Survey of Contrastive Self-Supervised Learning
  15. petalinux挂载88e1512、88e1111及base-t、base-x转换
  16. 2022年R2移动式压力容器充装考试模拟100题及在线模拟考试
  17. lpc1768ADC使用
  18. FPGA(四):FPGA通过查表的方式生成正弦波
  19. python 代码转程序_python2代码转python3
  20. 目前什么ip软件比较好用,国内ip最多呢

热门文章

  1. Educational Codeforces Round 10 A. Gabriel and Caterpillar 模拟
  2. codeigniter文件上传问题
  3. Ubuntu11.10配置Eclipse下Android开发环境
  4. Blueprint CSS Framework 学习笔记
  5. setTimeout使用问题
  6. Java数据校验(Bean Validation / JSR303)
  7. JavaScript中的各种宽高以及位置总结
  8. C#装箱和拆箱(值类型和引用类型之间的转换)
  9. 关于Ex010的改进
  10. 使用 MSBuild 和 Windows Installer XML 执行自动发布(转)