过采样,欠采样和SMOTE可以解决什么问题?


25

在最近一个广为接受的问题中,Tim问不平衡的数据何时真正成为机器学习中的问题?问题的前提是,有很多机器学习文献讨论班级平衡班级不平衡的问题。这个想法是,正负类之间不平衡的数据集会导致某些机器学习分类(这里包括概率模型)算法出现问题,应该寻求方法来“平衡”数据集,以恢复完美的50/50在正面和负面类别之间进行划分。

赞成的答案的一般含义是“不是,至少如果您在建模时考虑周全”。M. Henry L.在对已接受答案的投票中说:

[...]使用不平衡数据没有低级问题。以我的经验,“避免不平衡数据”的建议要么是特定于算法的,要么是继承的智慧。我同意AdamO的观点,即通常来说,不平衡的数据不会对特定模型造成任何概念上的问题。

AdamO认为阶级平衡的“问题”确实是阶级稀有性之一

因此,至少在回归分析中(但我怀疑在所有情况下),数据不平衡的唯一问题是有效地减少了样本量。如果有任何一种方法适合于稀有阶层的人数,那么他们的比例成员不平衡就不会有问题。

如果这确实是一个真正的问题,那么将有一个悬而未决的问题:所有旨在平衡数据集的重采样方法的目的是什么:过采样,欠采样,SMOTE等? 显然,它们不能解决隐含样本量较小的问题,您不能一无所有地创建信息!


那正是我将其更改为...谢谢。它并没有涵盖您问题的全部范围,但标题却没有必要-它确实可以弄清楚您要问的是哪种问题。
Glen_b-恢复莫妮卡

当然,在某些情况下,自举和二次采样方法很有用,有时甚至比其他非参数方法更好。有关引导程序和二次抽样的书籍对此进行了介绍。该站点上的讨论都在讨论这一问题,包括即使在相对较小的样本中,判别分析中引导程序优于留一法的优势。当然,在某些情况下,引导程序会失败,我的书中也提到了其他情况。
Michael R. Chernick

@MichaelChernick我不是在谈论引导程序,这就是Glen所说的。我说的是“类平衡”方法,例如过采样和欠采样,以便从数据集中平等地代表正负类。
马修·德鲁里

您是否包含子采样?您是指样本量不相等吗?您的陈述一般吗?
Michael R. Chernick

@MichaelChernick我在第一段和最后一段中添加了一些澄清的说明,希望对您有所帮助。
马修·德鲁里

Answers:


0

一些抽样技术是为了调整偏差(如果已知和不同的人口比率),但是我同意这样的观念,即不平衡的阶级本身并不是问题所在。主要原因之一是处理性能。例如,如果我们的目标类别在1:100000处是极少数情况,那么我们的建模数据集将是庞大的,并且计算将很困难。无论采取何种策略,抽样始终会丢弃一些数据以减小数据集的总大小。我想所有不同采样策略之间的区别只是在不损失预测可能性的前提下,我们抛弃了哪些数据的聪明之处。


4
都是如此,但是我正在讨论的许多方法都会创建更大的数据集。上采样通过复制现有数据点创建更多正类实例,而SMOTE创建稀有类的“合成”数据点。这些肯定不会帮助提高计算效率。
马修·德鲁里


0

这些方法试图解决的问题是增加少数群体对成本函数的影响。这是因为算法试图很好地拟合整个数据集,然后适应大多数。另一种方法是使用类权重,并且这种穿孔在大多数情况下会提供更好的结果,因为不会因欠采样或性能损失而丢失信息,也不会因过采样而引入噪声。


2
我不明白你的答案。
Michael R. Chernick

我的意思是,分类器的性能是在整个数据集上进行评估的(正例和负例的平均误差),其中每个例子的误差均被平均加权。因此,算法(例如Logistic回归)将其假设函数调整为可最大程度减少错误的示例。在这种情况下,对于多数类而言,实际上不考虑少数(否定类),因为它对整个数据集的错误影响不大。这就是为什么过采样,欠采样或类别加权可以更好地将算法应用于少数类别。
米兰·伏基切维奇

0

我会给你一个更极端的例子。考虑以下情况:您有一个数据集,其中99个数据点标记为正,而只有一个数据标记为负。在训练过程中,您的模型将意识到,如果将所有分类都归类为肯定,则最终会摆脱它。解决此问题的一种方法是对代表性不足的类进行过度采样,而另一种方法是对代表性不足的类进行过度采样。例如,在一个包含70个阳性标签和30个阴性标签的数据集中,我可能对带有替换的阴性标签和没有替换的阳性标签进行采样,这将导致我的模型在训练期间遇到更多的阴性标签。这样,如果我的模型尝试将所有内容归类为正,则将蒙受更大的损失。

与采样无关的另一种方法是调整成本函数,以使具有少数标签的数据点具有更高的权重。例如,如果您在标签中1代表过多而不是0代表的数据集中使用NLL损失,则可以将损失函数调整为:

大号X一世ÿ一世=-αÿ一世lnX一世-β1个-ÿ一世ln1个-X一世

β>αβ-α


0

我将不同意这样的前提,即不平衡的数据不是机器学习中的问题。在回归中也许不是这样,但是在分类中肯定是这样。

数据失衡在机器学习应用中很重要,因为在类失衡的情况下算法的性能下降了(我正在考虑的研究专门针对分类器)。

以一个简单的二元分类问题为例,A类培训样本与B类培训样本的比例为25:1。研究表明,与B类分类有关的准确性之所以受到打击,仅仅是因为训练数据的比率降低了。很有道理,因为您拥有的训练示例数量越少,分类器就越难以训练该数据。正如一位评论者所说,您不能一无所有。从我所看到的论文来看,在多类分类问题中,似乎需要达到10:1的比例,才能开始对少数类的准确性产生重大影响。也许阅读与我所见文学不同的人们有不同的看法。

因此,建议的解决方案是:对少数群体进行过度采样;对多数群体进行欠采样;或者对少数群体使用SMOTE。是的,除非您要进入少数类的综合数据创建过程(没有简单方法),否则您不能真正地无处不在地创建数据(SMOTE排序确实可以,但并非完全如此)。其他技术(例如MixUp等)可能会落入这个概念,但是我认为它们比类不平衡解决方案更能使规则化。在我读过的论文中,过采样> SMOTE>欠采样。

无论使用哪种技术,您都在改变多数派和少数派之间的关系,这可能会影响发病率。换句话说,如果您要创建一个分类器以检测发生率在100,000中的1的超罕见脑部疾病X,并且您的分类器的比例为1:1,那么您可能会更敏感,更不具体,且出现大量误报。如果稍后发现这些案件并进行仲裁很重要,那么您就可以了。如果没有,您会浪费很多其他人的时间和金钱。最终将需要解决此问题。

所以要回答这个问题:

tl / dr:存在类平衡操作,例如过/欠采样和SMOTE(以及合成数据),以通过解决由不平衡本身导致的算法固有性能下降,从而提高机器学习算法(分类器)的性能

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.