班级失衡问题的根本原因是什么?


30

最近,我一直在思考机器/统计学习中的“班级不平衡问题”,并且越来越深地感觉到我只是不了解发生了什么。

首先让我定义(或尝试)定义我的术语:

机器/统计学习中的类不平衡问题是观察到,当0类与1类的比例非常不正确时,某些二进制分类算法(*)不能很好地执行。

因此,例如,在上面的示例中,如果每一个类有100个类,那么我会说类不平衡为到或。0111001%

我见过的大多数问题陈述都缺乏我认为足够的资格(什么模型在挣扎,问题如何失衡),这是我感到困惑的原因之一。

对机器/统计学习中的标准文本的调查几乎没有:

  • 统计学习统计学习入门的要素在索引中不包含“班级失衡”。
  • 用于预测数据分析的机器学习在索引中也不包含“类不平衡”。

  • 墨菲的机器学习:概率观点 的确在索引包含“类不平衡*。参考是关于SVM的一节,我在其中找到了以下诱人的评论:

    值得记住的是,所有这些困难,以及为解决这些困难而提出的大量启发式方法,都从根本上出现,因为SVM无法使用概率对不确定性进行建模,因此它们的输出得分在各个类别之间不具有可比性。

此评论确实符合我的直觉和经验:在我以前的工作中,我们通常将逻辑回归和梯度增强树模型(以最小化二项式对数似然性)拟合到不平衡数据(类不平衡程度为),在性能上没有明显的问题。1%

我已经(在某处)阅读了基于分类树的模型(树本身和随机森林)也确实遭受了类不平衡问题的困扰。从某种意义上讲,这会使水有些混乱,树木确实有返回概率:在树的每个终端节点中目标类的投票记录。

因此,总的来说,我真正想要的是导致班级失衡问题(如果存在)的力量的概念性理解

  • 我们使用错误选择的算法和惰性默认分类阈值对自己做了什么吗?
  • 如果我们始终拟合优化适当评分标准的概率模型,它会消失吗?换句话说,原因仅仅是损失函数的选择不正确,即基于硬分类规则和整体准确性评估模型的预测能力吗?
  • 如果是这样,那么没有优化适当评分规则的模型就没有用(或者至少没有用处)吗?

(*)分类是指适合二进制响应数据的任何统计模型。我没有假设我的目标是对一个班级或另一个班级进行艰巨的任务,尽管可能是这样。


1
当学习者对每个班级的损失进行同样的惩罚时,可能会出现一个明显的问题。从理论上讲,归还相同类别的所有内容可以使总损失最小化。
Firebug

1
我忘记添加poor choice of loss function列表了。因此,即使对于适当的计分规则作为损失函数,您是否认为这是正确的?
马修·德鲁里

我认同。我猜我们可以提出一个问题,其中将较大阶层的损失最小化也只会将整个问题的损失最小化,而一般而言,少数群体的利益更大。
Firebug

3
我同意这个问题的看法。我有一个有效的假设(尽管很乐意拒绝它),本质上不存在类不平衡问题,只是我们使用损失函数进行训练,这些损失函数不代表我们将用来度量测试数据成功的函数。很难将其称为错误,因为这几乎是标准做法:例如,直接优化AUC或F1分数不是标准,但是这些是解决班级失衡问题的常见成功指标。那也许是班级失衡的问题吗?
DavidR

9
类不平衡问题的原因是使用精度作为损失函数的惯例。班级失衡是一个问题特征(例如,罕见病诊断),可以使用几种策略来解决。其中之一是在计算损失函数时使用与班级规模成反比的班级权重。除此之外,作为损失函数的AUC是一个好主意,因为它明确区分了真阳性和假阳性。因此,类不平衡问题的核心问题是损失函数。不过,这是一个很大的问题,我不敢回答。
Nikolas Rieble,

Answers:


4

机器学习百科全书https://cling.csd.uwo.ca/papers/cost_sensitive.pdf)中的条目有助于解释所谓的“类不平衡问题”最好理解为三个独立的问题:

 (1) assuming that an accuracy metric is appropriate when it is not

 (2) assuming that the test distribution matches the training 
     distribution when it does not

 (3) assuming that you have enough minority class data when you do not

作者解释:

类不平衡数据集出现在许多实际应用中,其中数据的类分布高度不平衡。同样,在不失一般性的前提下,我们假定少数派或稀有类为肯定类,而多数类为否定类。通常,少数派类别非常小,例如占数据集的1%。如果我们在数据集上应用大多数传统的(对成本不敏感的)分类器,它们将很可能将一切预测为否定(多数类)。在从高度不平衡的数据集中学习时,这通常被视为一个问题。

但是,正如(Provost,2000)指出的那样,在传统的对成本不敏感的分类器中,经常会做出两个基本假设。首先,分类器的目标是使准确性最大化(或使错误率最小化)。第二个是训练和测试数据集的类分布是相同的。在这两个假设下,对于高度不平衡的数据集,将一切预测为负通常是正确的选择。(Drummond和Holte,2005年)表明,在这种情况下,通常很难胜过这个简单的分类器。

因此,仅当上述两个假设中的一个或两个都不成立时,阶级失衡问题才有意义。也就是说,如果不同类型错误的成本(二进制分类中的假阳性和假阴性)的成本不相同,或者测试数据中的类别分布与训练数据中的类别分布不同。第一种情况可以使用对成本敏感的元学习中的方法进行有效处理。

在错误分类成本不相等的情况下,将少数(阳性)样本错误分类为多数(否定)类别通常要比将多数例子(错误类别)分类为少数(少数)类别更为昂贵(否则,将所有内容预测为负)。即,FN> FP。因此,给定FN和FP的值,可以并且已经使用各种对成本敏感的元学习方法来解决班级失衡问题(Ling和Li,1998; Japkowicz和Stephen,2002)。如果FN和FP的值不是明确未知的,则可以将FN和FP分配为与p(-):p(+)成比例(Japkowicz和Stephen,2002年)。

如果训练数据集和测试数据集的类别分布不同(例如,如果训练数据高度不平衡而测试数据更加平衡),则一种明显的方法是对训练数据进行采样,以使其训练类别与测试数据(通过对少数群体进行过度采样和/或对多数群体进行过度采样)(Provost,2000年)。

请注意,有时少数类的示例数量太少,无法使分类器充分学习。这是训练数据不足(较小)的问题,这与不平衡数据集的问题不同。

因此,正如墨菲(Murphy)所暗示的那样,使用不平衡类并没有固有的问题,只要您避免了这三个错误。产生后验概率的模型比诸如SVM的判别模型更容易避免错误(1),因为它们使您能够将推理与决策分开。(有关最后一点的进一步讨论,请参见Bishop的1.5.4 推理和决策部分。)

希望能有所帮助。


1
我打算发布类似的内容。一个小评论-我认为对较大的类进行低采样是疯狂的。这将丢弃您的数据,并且肯定不会提供更好的结果。我喜欢将推理和分类分开的概念。推理部分不受不平衡的影响,但决策(分类)可能会受到很大影响。
概率

@probabilityislogic(和Bill Vander Lugt):还有另一个可能的问题没有在本文中讨论:区分性Ansatz是否足够。如果采用歧视性的模型,而采用一类更适合的模型,则可能会导致“类不平衡问题”。
cbeleites支持Monica

8

任何涉及优化以最小化损失函数的方法,如果足够凸,将给出的解决方案是该损失函数的全局最小值。我说“足够凸”是因为深度网络并不是整体上凸,而是在实践中给出合理的最小值,并精心选择学习率等。

因此,此类模型的行为由我们在损失函数中输入的任何内容定义。

想象一下,我们有一个模型,它为每个示例分配一些任意的实数标量,这样更多的负值倾向于表示A类,而更多的正数倾向于表示B类。F

yf=f(x)

我们使用创建模型,该模型隐式或显式地为的输出分配阈值,以便当输出的值大于模型预测类B,否则模型预测。FGbFFbG

yg={Bif f(x)>bAotherwise

通过改变模型学习到的阈值,我们可以改变被分类为A类或B类的示例的比例。对于每个类,我们可以沿着精度/召回率曲线移动。较高的阈值会降低B类的召回率,但可能会提高精度。bG

想象一下,如果模型是这样,如果我们选择一个给出相同精度的阈值并调用任一类,则对于任何一个类(对称),模型G的准确性均为90%。因此,给定一个训练示例,无论基础真理A或B是什么,都将在90%的时间内正确地进行示例。这大概是我们想要达到的目标?我们称其为“理想阈值”或“理想模型G”或。FGG

现在,我们有一个损失函数:

L=1Nn=1NIyig(xi)

其中是指示变量,当为true 时为,否则为,是例如的真实类,而是模型G 的预测类,例如。Ic1c0yiig(xi)i

想象一下,我们有一个数据集,其中A类训练示例的数量是B类的100倍。对于A的每99个示例,我们期望得到正确示例,而示例不正确。同样,对于B的每1个示例,我们期望得到示例正确,而示例不正确。预期的损失将是:99 * 0.1 = 9.9 1 * 0.9 = 0.9 1 * 0.1 = 0.1990.9=89.1990.1=9.910.9=0.910.1=0.1

L=(9.9+0.1)/100=0.1

现在,让我们看一下设置阈值的模型,以便系统地选择A类。现在,对于A的每99个示例,所有99个都是正确的。零损失。但是将不会系统地选择B的每个示例,从而损失,因此在训练集上的预期损失将是:1 / 100G1/100

L=0.01

设置阈值(例如为每个类别分配相等的召回率和精度)时,损失比损失低十倍。

因此,损失函数将驱动模型选择一个阈值,该阈值选择A的可能性要高于B类,从而提高了A类的召回率,但降低了B类的召回率。结果模型不再符合我们的期望,没有再匹配我们的理想模型。G *GG

为了校正模型,我们需要例如修改损失函数,以至于使B错误比使A错误花费更多。然后,这将修改损失函数,使其最小值更接近于较早的理想模型,后者为每个类别分配了相同的精度/召回率。G

或者,我们可以通过将每个B实例克隆99次来修改数据集,这也将导致损失函数在不同于我们先前理想阈值的位置不再具有最小值。


4
您能否尝试使您的回答更加具体一些?尽管很周到,但它主要是作为评论而非答案。例如,仅出于评论目的,可以说使用不正确的评分规则(如定义的损失函数)从根本上是错误的,因此后续分析无效。
usεr11852恢复单胞菌说,

我不认为有人会在不知道模型的实际目的的情况下说损失函数是“对”还是“错”。如果目标是让机器学习模型“看起来很酷/很有用”,那么模型会更好,但是如果要最大化,例如在某个测试/考试中得分,则其中99个问题的答案为A,而一个有答案B,而我们只有90%的机会正确预测答案,我们最好只为所有内容选择A,这就是上面的损失函数所做的。G
休·帕金斯

2
我普遍同意;我对适当的评分规则的必要性并不完全确信,但另一方面,任何分类模型的“实际目的”都是对类成员资格的有用预测,即。您需要一个明智的实用程序功能。我认为,通常用于分配成本/增益失衡的问题FPTP等等。可能是有一个合理的效用函数的最佳方式; 在缺乏相关领域知识的情况下,这可能是多毛的。由于这个原因,我几乎总是将Cohen的(一种比较保守的“协议”度量)用作我的第一选择。k
usεr11852恢复单胞菌说,

我在Google上搜索了“实用功能”,但没有任何反应。您有链接/参考吗?我认为从上下文来看,您所说的“效用函数”实质上就是上面的模型?模型在各种情况下都是不变的。一个有趣的问题可能是,如果一个人使用不平衡数据直接训练模型,那么底层的,可能是隐式的模型是否与通过训练模型在平衡数据上训练的模型相似/相同?F G F F GFFGFFG
休·帕金斯

3
这隐含地假设(1)我们试图最大化的KPI是准确性,以及(2)准确性是用于分类模型评估的适当KPI。不是。
S. Kolassa-恢复莫妮卡

0

请注意,一类分类器不会出现不平衡的问题,因为它们独立于所有其他类查看每个类,并且它们可以通过不建模而应对“非类”。(当然,他们可能会因为样本量太小而遇到问题)。

当使用区分方法时,由一类分类器更恰当地建模的许多问题会导致定义不明确的模型,其中“类不平衡问题”是一种症状。

例如,考虑一些可以出售或不出售的产品。这种情况通常表现为

class         | "good"                        | "not good"
--------------+-------------------------------+------------------------------------------
sample size   | large                         | small
              |                               |
feature space | single, well-delimited region | many possibilities of *something* wrong 
              |                               | (possibly well-defined sub-groups of
              |                               |    particular fault reasons/mechanisms) 
              |                               | => not a well defined region, 
              |                               | spread over large parts of feature space
              |                               |
future cases  | can be expected to end up     | may show up *anywhere* 
              | inside modeled region         | (except in good region)

因此,“好”类定义良好,而“不好”类定义不明确。如果这种情况是由判别式分类器建模的,那么我们会遇到两个“不平衡问题”:不仅“小”类的样本量小,而且样本密度甚至更低(更少的样本分布在特征空间的较大部分)。

当将任务建模为定义良好的“好”类的一类识别时,这种类型的“类不平衡问题”将消失。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.