我什么时候应该在培训数据集中平衡课程?


29

我有一个在线课程,据我了解,训练数据中的班级不平衡可能会导致问题,因为分类算法遵循多数原则,因为如果不平衡过多,分类结果就会很好。在一项作业中,必须通过对多数类进行欠采样来平衡数据。

但是,在此博客中,有人声称平衡数据甚至更糟:

https://matloff.wordpress.com/2015/09/29/unbalanced-data-is-a-problem-no-balanced-data-is-worse/

那么是哪一个呢?我应该平衡数据吗?它是否取决于所使用的算法,因为某些算法可能会适应不平衡的类比例?如果是这样,哪一个对不平衡数据是可靠的?

Answers:


28

博客文章中已经解释了直观推理:

如果我们的目标是预测,这将导致一定的偏差。更糟糕的是,这将是永久偏差,因为随着样本量的增加,我们将无法获得一致的估计。

因此,可以说,(人为)平衡数据的问题比不平衡情况更严重。

平衡的数据可以很好地进行分类,但是您显然会松散有关出现频率的信息,这将影响准确性指标本身以及生产性能。

假设您正在识别英语字母(26个字母)中的手写字母。过度平衡每个字母的外观将使每个字母被分类的概率(正确与否)大约为1/26,因此分类器将忘记原始样本中字母的实际分布。而且它的确定时分类能够概括和识别精度高的每一个字母

但是,如果准确性和最重要的泛化不是“那么高”(我无法给您定义-您可以将其视为“最坏的情况”),则错误分类的点很可能会平均分布在所有字母中, 就像是:

"A" was misclassified 10 times
"B" was misclassified 10 times
"C" was misclassified 11 times
"D" was misclassified 10 times
...and so on

而不是没有平衡(假定“ A”和“ C”在文本中出现的可能性更高)

"A" was misclassified 3 times
"B" was misclassified 14 times
"C" was misclassified 3 times
"D" was misclassified 14 times
...and so on

因此,频繁发生的案件将减少错误分类。是否好取决于您的任务。对于自然文本识别,人们可能会认为频率较高的字母更可行,因为它们将保留原始文本的语义,从而使识别任务更接近于预测(语义代表趋势)。但是,如果您试图识别ECDSA键的屏幕快照(熵更大->预测更少),则保持数据不平衡将无济于事。因此,这再次取决于。

最重要的区别是准确性估算本身存在偏差(如在平衡字母示例中所见),因此您不知道模型的行为如何受到最稀有或最频繁的点的影响。

PS您可以随时跟踪不平衡的分类与性能的精密/召回指标第一,并决定是否需要添加平衡与否。


编辑:在估计理论上,准确度还在于样本均值和总体均值之间的差异。例如,您可能知道(可以说)英文字母)的实际分布,但是您的样本(训练集)不足以正确估计它(使用)。因此,为了补偿 ,有时建议根据总体本身或较大样本中已知的参数来重新平衡类p(xi|θ)p(xi|θ^)θ - θ θ^iθi(因此是更好的估算器)。但是,实际上,由于在每个步骤上都有可能获取有偏差的数据(例如,从技术文献,小说和整个图书馆中收集的英文字母)的风险,因此不能保证“较大样本”的分布均匀,因此平衡可能仍然有害。

此答案还应阐明平衡的适用性标准:

阶级不平衡的问题是由于没有足够的属于少数群体的模式,而不是由正负模式本身的比例引起的。通常,如果您有足够的数据,则不会出现“类不平衡问题”

结论是,如果训练集足够大,则人工平衡很少有用。缺少较大的,分布均匀的样本的统计数据也表明不需要进行人工平衡(尤其是用于预测),否则估计器的质量与“满足恐龙的可能性”一样好:

在街上遇到恐龙的几率是多少?

1/2您遇到了恐龙,或者您没有遇到过恐龙


5
我认为,除了对问题进行解释之外,此答案的重要意义在于,应该首先尝试不平衡并检查其结果,并且只有在必要时才进行平衡并检查其结果。+1
Zelphir Kaltstahl

因此,换句话说,如果将类别均匀分布到训练子集上,则该模型将在看不见的数据中失去其准确性,对吗?但是,在相反的情况下,如果您尝试为训练/测试子集随机提取数据集的条目,分类器的效果会更好吗?
Christos K.

@ChristosK。正如许多人所说,当您将问题视为分类时,很难对预测进行推理。无论如何,如果消除偏差(“随机”抽样),则需要更大的样本以提高性能。它只是“通常”的样本,足以保留语义,因此,过度平衡只会伤害并像正则化锤子一样,在没有适当考虑的情况下“弄平”所有东西。而且,正如恐龙比喻所暗示的那样,“平衡”并不意味着“均匀”-只有当您知道某些概率在“随机”样本中被错误表示时,您才进行适当的平衡。
dk14

1
@ChristosK。感谢您的澄清。这与我的意思不同,但是方法非常相似。通常,对于k折叠的适用性建议是在您的初始样本“有点小”时进行。不确定,但是折叠无论如何都不会受到伤害-它只需要花费更多的时间,而您对预测的关注就越少,就越听起来像重言式那样,您对泛化/性能的关注就越少:)。但总体而言,k倍实质上意味着更少的偏差。
dk14

1
@ChristosK。哦,警告一下,垃圾邮件/非垃圾邮件比率本身可能是一个非平稳的随机变量。对于所有这些“假新闻”,“俄罗斯巨魔”和其他东西,我都会对这些假设保持谨慎-比率也可能会出现偏差。如果某些东西采样不足,您可能想先在分类器上估算PrecisionRecall-我宁愿收集/生成更多数据。
dk14

17

与@ kjetil-b-halvorsen的评论一致,机器学习的迅速采用使研究人员对预测与分类感到困惑。正如我在这里更详细描述的那样,分类仅在少数情况下适用。当结果很少(或太普遍)时,概率就是一切,因为在那种情况下,人们只能合理地谈论趋势,而不是预测单个事件的发生。

在统计数据中,我们了解到一段时间,任何需要一种方法来排除某些数据的方法都值得怀疑。因此,平衡结果的目标是错误的。趋势(概率)的预测不需要它。一旦估计了概率,就可以通过将公用事业/成本/损失函数应用于预测的风险来做出最佳决策。


1

取决于您要从分类中实现什么?

说是癌症与非癌症,那么检测癌症至关重要。但是,由于非癌症将构成您的大部分数据,因此分类器实际上可以将所有病例发送到非癌症类别并获得非常高的准确性。但是我们负担不起,因此我们从本质上减少了非癌症病例的样本,从本质上将决策边界从癌症区域转移到了非癌症区域。

即使在仅以准确性为目标的用例中,如果预计测试时间平衡与火车时间不同,平衡也必不可少。

例如,假设您要对芒果和橙子进行分类,您拥有一个包含900个芒果和30个橙子的训练数据集,但是您希望将其部署在芒果和橙子相等的市场中,那么理想情况下,您应该以预期的采样率进行采样以最大化准确性。


这是我从讲座中学到的。但是,正如这篇博客所建议的那样,我不知道什么时候平衡会不好。如果每个类别都有足够的数据点,为什么平衡会变得不好呢?
Zelphir Kaltstahl '16年

抱歉,但以您的类比,市场水果分销与模型准确性有何关系?您要么学会了将芒果与桔子分开,要么没有。换句话说,您应该能够在仅橙色或仅芒果市场上部署相同的模型
Fernando

3
但是癌症例子的问题是将其视为分类,应视为风险评估。然后用不平衡类明显的问题消失,看stats.stackexchange.com/questions/127042/...
HALVORSEN谢蒂尔b

1

平衡数据后,您可以选择检查度量标准的准确性。但是,在这种情况下,您的数据不平衡,那么对于不同的迭代,您的准确性就会不一致。您需要集中更多指标,例如Precision(PPR),Recall(灵敏度)。比较时应平衡这两个指标。另外,您还必须检查F1-Score,它是Precision和召回率的谐波平均值。这适用于所有机器学习算法

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.