为什么要降采样?


42

假设我想学习一个预测电子邮件是否为垃圾邮件的分类器。假设只有1%的电子邮件是垃圾邮件。

最简单的方法是学习琐碎的分类器,该分类器说所有电子邮件都不是垃圾邮件。该分类器将为我们提供99%的准确性,但它不会学到任何有趣的东西,并且误报率高达100%。

为了解决这个问题,人们告诉我“降低采样率”,或学习其中50%的示例是垃圾邮件而50%的示例不是垃圾邮件的数据子集。

但是我担心这种方法,因为一旦我们建立了此分类器并开始在真实的电子邮件主体(而不是50/50测试集)上使用它,它可能会预测许多电子邮件在成为垃圾邮件时真的不是。只是因为它过去经常看到比数据集中实际更多的垃圾邮件。

那么我们如何解决这个问题呢?

(“上采样”或多次重复正面训练示例,因此50%的数据是正面训练示例,似乎也遇到类似的问题。)

Answers:


37

实际上,大多数分类模型不会产生二元决策,而是一个连续的决策值(例如,逻辑回归模型输出概率,SVM输出到超平面的符号距离,...)。使用决策值,我们可以对测试样本进行排序,从“几乎肯定为阳性”到“几乎肯定为阴性”。

根据决策值,您始终可以分配一些截止值,该截止值以某种方式将分类器配置为将一定比例的数据标记为正。可以通过模型的ROC或PR曲线确定合适的阈值。无论训练集中使用的余额如何,您都可以使用决策阈值。换句话说,诸如上采样或下采样的技术与此正交。

假设模型比随机模型好,您可以直观地看到,提高肯定分类的阈值(这会导致更少的肯定预测)以降低召回率为代价提高模型的精度,反之亦然。

考虑将SVM作为一个直观的示例:主要挑战是学习分离超平面的方向。上采样或下采样可以帮助解决此问题(我建议您优先选择上采样而不是下采样)。当超平面的方向良好时,我们可以使用决策阈值(例如,到超平面的有符号距离)来获得期望的正预测分数。


谢谢,这非常有帮助。您怎么知道阈值应该是多少?您是否要设置阈值,以使阳性预测的比例等于总体中阳性样本的比例?
杰西卡

2
@Jessica正如我提到的,选择阈值的便捷方法是通过接收器工作特性(ROC)曲线。每个阈值都对应于ROC空间中的一个点。绘制曲线时,您可以根据自己的特定需求选择阈值。(你也可以使用精确召回曲线作为替代)
马克Claesen

我不同意SVM学习到的测试点到超平面的距离是对预测置信度的任何度量。已经做出努力来使SVM输出预测可信。例如,查找Platt缩放比例。但是它的效果不及高斯过程分类(wrt预测置信度)。
Seeda 2015年

1
R[0,1]

@MarcClaesen我不建议使用Platt缩放;生成预测置信度是一种“尝试”,但还有更好的选择。我要说的是,使用到超平面的距离是没有意义的,并且回顾文献,即使它是试图从SVM产生信心的第一件事,我也从未见过。
Seeda 2015年

14

真正的问题是您对度量标准的选择:准确度百分比不能很好地衡量不平衡数据集上模型的成功(出于您提到的确切原因:在这种情况下,达到99%的准确度是微不足道的)。

在拟合模型之前平衡数据集是一个糟糕的解决方案,因为它会使模型产生偏差,并且(甚至更糟)会抛出可能有用的数据。

平衡精度指标比平衡数据要好得多。例如,您可以在评估模型时使用平衡的准确性(error for the positive class + error for the negative class)/2。如果您预测全部为正或全部为负,那么该指标将50%是一个不错的选择。

我认为,向下采样的唯一原因是当您有太多数据并且无法拟合模型时。许多分类器(例如逻辑回归)将对不平衡的数据进行处理。


我可以问一下分类器在不平衡数据上的表现如何吗?也许这只是我的数据,但是我尝试对训练数据进行逻辑回归,随机森林和C5.0模型的训练,使用混合过采样/欠采样进行不平衡和平衡处理。在不平衡数据上训练的模型在我的测试集上的表现远比在平衡数据上训练的模型差。
Seanosapien

13

一如既往@Marc Claesen的好答案。

我只是补充说,似乎缺少的关键概念是成本函数的概念。在任何模型中,假阴性到假阳性(FN / FP)的隐含或显式成本。对于所描述的不平衡数据,通常愿意采用5:1或10:1的比率。有很多方法可以将成本函数引入模型。传统方法是对模型产生的概率强加一个概率截止值-这对逻辑回归很有效。

不能自然输出概率估计值的严格分类器使用的一种方法是,以一定比率对多数类别进行欠采样,该比率会引起您感兴趣的成本函数。请注意,如果以50/50进行采样,则会导致任意成本函数。成本函数是不同的,但是就像您以普遍率采样时一样随意。您通常可以预测一个与成本函数相对应的适当采样率(通常不是50/50),但是我与大多数从业人员交谈过的只是尝试几个采样率,然后选择最接近其成本函数的采样率。


2
感谢您提出来,这是我从未考虑过的有趣观点。您如何分辨哪个采样率与成本函数相对应?
杰西卡

8

直接回答Jessica的问题-进行下采样的原因之一是当您使用大型数据集并且面对计算机上的内存限制时,或者只是想减少处理时间。从否定情况下进行下采样(即,在不进行替换的情况下抽取随机样本)会将数据集减小到更易于管理的大小。

您提到在问题中使用“分类器”,但未指定哪个分类器。您可能要避免的一种分类器是决策树。当对稀有事件数据运行简单的决策树时,由于很难将很少的阳性案例分为几类,因此我经常发现该树仅构建一个根。可能存在更复杂的方法来提高树木在罕见事件中的性能-我不知道有什么方法可以解决的。

β0

βc=β0log(p+1p+)

p+

nnnNn


3

当然,将所有内容归类为“非垃圾邮件”可以说,给定100封邮件,它可以正确分类99封邮件,但它也将唯一标记为垃圾邮件的邮件归类为“非垃圾邮件”(100%错误肯定)。事实证明,您选择的评估算法的指标不适合。该视频演示了该概念。

粗略地说,平衡数据集可以加权错误分类错误。使用不平衡训练集的算法大概不会学会与特征区分开,因为它不会对错误分类稀少类别数据的事实给予太大重视。


0

我不会去进行下采样或上采样,因为两者都会欺骗学习算法,但是,如果数据不平衡,那么精度度量将变得无效或无用,因此,最好使用精度和召回率度量,这两者都主要取决于TP( (根据您的情况正确分类的垃圾邮件),这可以很好地了解系统在检测垃圾邮件方面的真实性能,而与否定示例的数量无关。

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.