前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习中的类不平衡问题

机器学习中的类不平衡问题

作者头像
狼啸风云
修改2022-09-04 21:14:18
5450
修改2022-09-04 21:14:18
举报

如果不同类别的训练样例数目稍有差别,通常影响不大,但若差别很大,则会对学习过程造成困扰。例如有998个反例,但正例只有2个,那么学习方法只需返回一个永远将新样本预测为反例的学习器,就能达到99.8%的精度;然而这样的学习器往往没有价值,因为它不能预测出任何正例。

类别不平衡(class-imbalance)就是值分类任务中不同类别的训练样例数目差别很大的情况。不是一般性,本节假定正类样例较少,反类样例较多。在现实的分类任务中,我们经常会遇到类别不平衡,例如在通过拆分法解多分类问题时,即使原始问题中不同类别的训练样例数目相当,因此有必要了解类别不平衡性处理的基本方法。

从线性分类器的角度讨论容易理解,在我们用y=w^{T} w+b 对新样本x进行了分类时,事实上在用预测出的y值与一个阈值进行比较,例如通常在y>0.5时判别为正例。y实际上表达了正例的可能性,几率y/(1-y)则反映了正例可能性与反例可能性之比值,阈值设置为0.5恰表明分类器认为真实正、反例可能性相同,即分类器决策规划为:

若y/(1-y) > 1则,预测为正例 (1)

然而,当训练集中正、反例的数目不同时,令m^{+} 表示正例数目,m^{-} 表示反例数目,则观测几率是m^{+} / m^{-} ,由于我们通常假设训练集是真实样本总体的无偏估计,因此观测几率就代表了真实几率。于是只要分类器的预测几率高于观测几率就应判定为正例,即,若 \frac{y}{1-y}>\frac{m^{+}}{m^{-}} 则 预测为正例。

但是,我们的分类器是基于式(1)进行比较决策,因此,需对其预测值进行调整,使其基于式(1)决策时,实际上是在执行式(2),要做到这一点很容易,只需令\frac{y^{\prime}}{1-y^{\prime}}=\frac{y}{1-y} \times \frac{m^{-}}{m^{+}}

这就是类别不平衡学习的一个基本决策------"再缩放"(rescaling)。

再缩放的思想虽简单,但实际操作却不平凡,主要是因为“训练集是真实样本总体的无偏采样”这个假设往往并不成立,也就是说,我们未必能有效地基于训练集观测几率来推断出真实几率。现有技术大体有三类:

  • 第一类是直接对训练集里的反类进行“欠采样(undersampling)",即去除一些反例使得正、反例数目接近,然后再进行学习;
  • 第二类是对训练集里的正类样例进行“过采样(oversampling)”,即增加一些正例使得正、反例数目接近,然后再进行学习;
  • 第三类则是直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将式(3)嵌入到其决策过程中,称为“阈值移动”(thresholding-moving)。

欠采样法的时间开销通常远小于过采样法,因为前者丢弃了很多反例,使得分类器训练集远小于初始训练集,而过采样法增加了很多正例,其训练集大于初始训练集。需注意的是,过采样法不能简单地对初始样本进行重复采样,否则会招致严重的过拟合;过采样法的代表性算法SMOTHE是通过对训练集里的正例进行插值来产生额外的正例。另一方面,欠采样法若随机丢弃反例,可能丢失一些重要信息;欠采样法的代表性算法EasyEnsemble则是利用集成学习机制,将反例划分为若干个集合供不同学习器使用,这样对每个学习器来看都进行了欠采样,但在全局来看却不会丢失重要信息。值得一提的是,“再缩放”也是“代价敏感学习”(cost-sensitive learning)的基础,在代价敏感学习中将式(3)中的m^{-} / m^{+}\operatorname{cost}^{+} / \operatorname{cost}^{-} 代替即可,其中\cos ^{+} 是将正例误分为反例的代价,\operatorname{cost}^{-} 是将反例误分为正例的代价。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年08月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档