回归中不平衡数据的采样

机器算法验证 回归 采样 不平衡类
2022-02-01 21:01:01

分类上下文中处理不平衡数据存在一些很好的问题,但我想知道人们如何对回归进行抽样。

假设问题域对符号非常敏感,但对目标的大小只有些敏感。然而,幅度非常重要,以至于模型应该是回归(连续目标)而不是分类(正类与负类)。并且说在这个问题域中,任何一组训练数据的负目标都是正目标的 10 倍。

在这种情况下,我可能会对正目标示例进行过采样以匹配负目标示例的数量,然后训练一个模型来区分这两种情况。显然,训练方法在不平衡数据上效果不佳,所以我需要进行某种采样。在进行预测时,什么是“撤消”这种过采样的好方法?也许通过自然训练数据目标的(负)均值或中位数进行翻译?

4个回答

不平衡不一定是一个问题,但你如何到达那里可能是一个问题。将抽样策略建立在目标变量上是不合理的。因为这个变量在你的回归模型中包含了随机性,如果你基于这个进行抽样,你在进行任何类型的推理时都会遇到很大的问题。我怀疑是否有可能“撤销”这些问题。

您可以根据预测变量合理地过采样或过采样。在这种情况下,如果您仔细检查模型假设是否有效(例如,在这种情况下想到的同方差性很重要,如果您对通常的假设进行“普通”回归),我认为您不需要预测时撤消过采样。您的案例现在类似于一个分析师,他明确地设计了一个实验来获得平衡的预测变量范围。

编辑-添加-扩展为什么基于 Y 采样不好

在拟合标准回归模型预计 e 服从正态分布,均值为零,并且独立同分布。如果您根据 y 的值(包括的贡献)选择样本,则 e 将不再具有零均值或同分布。例如,可能包括非常低的 e 值的低 y 值可能不太可能被选择。这会破坏任何基于拟合此类模型的常用方法的推断。可以进行类似于计量经济学中用于拟合截断模型的校正,但它们很痛苦并且需要额外的假设,并且只能在别无选择时使用。y=Xb+eeeXb

考虑下面的极端例子。如果您在响应变量的任意值处截断数据,则会引入非常显着的偏差。如果将其截断为解释变量,则不一定有问题。您会看到绿线基于因其预测值而选择的子集,非常接近真实拟合线;蓝线不能这样说,仅基于蓝点。

这延伸到欠采样或过采样的不太严重的情况(因为截断可以被视为达到其逻辑极端的欠采样)。

在此处输入图像描述

# generate data
x <- rnorm(100)
y <- 3 + 2*x + rnorm(100)

# demonstrate
plot(x,y, bty="l")
abline(v=0, col="grey70")
abline(h=4, col="grey70")
abline(3,2, col=1)
abline(lm(y~x), col=2)
abline(lm(y[x>0] ~ x[x>0]), col=3)
abline(lm(y[y>4] ~ x[y>4]), col=4)
points(x[y>4], y[y>4], pch=19, col=4)
points(x[x>0], y[x>0], pch=1, cex=1.5, col=3)
legend(-2.5,8, legend=c("True line", "Fitted - all data", "Fitted - subset based on x",
    "Fitted - subset based on y"), lty=1, col=1:4, bty="n")

我认为考虑到您的问题可能会对您有所帮助的是 Synthetic Minority Over-Sampling Technical for Regression (SMOTER)。有一些关于这个主题的研究。但是,与您可能遇到的分类对应物相比,它的探索程度仍然较低。

我可能会建议下面引用的论文(以及在http://proceedings.mlr.press/v74/上介绍的会议),这取决于您对从研究角度理解它的兴趣程度。我非常感谢在生成合成观测值时引入高斯噪声。

如果您对实际解决方案更感兴趣,第一作者在她的 Github 页面上提供了一个 R 实现。https://github.com/paobranco/SMOGN-LIDTA17

如果 Python 更能说服你,我最近发布了一个 SMOGN 算法的完全 Pythonic 实现,该算法现在可用并且目前正在单元测试中。https://github.com/nickkunz/smogn

我希望这有帮助!

Branco, P.、Torgo, L.、Ribeiro, R. (2017)。“SMOGN:一种不平衡回归的预处理方法”。机器学习研究论文集,74:36-50。http://proceedings.mlr.press/v74/branco17a/branco17a.pdf

2020 年 5 月更新的答案:

实际上有一个研究领域专门处理这个问题并开发了切实可行的解决方案。它被称为Covariate Shift Adaptation,并在 Sugiyama 等人的一系列高引用论文中得到普及,从 2007 年左右开始(我相信)。Sugiyama / Kawanabe 从 2012 年开始还有一整本书专门讨论这个主题,名为“非平稳环境中的机器学习”。

我将尝试对主要思想进行非常简短的总结。假设您的训练数据来自分布,但您希望模型在来自另一个分布的数据上表现良好。这就是所谓的“协变量偏移”。然后,而不是最小化训练分布的预期损失ptrain(x)ptarget(x)

θ=argminθE[(x,θ)]ptrain=argminθ1Ni=1N(xi,θ)

正如人们通常所做的那样,最小化目标分布的预期损失:

θ=argminθE[(x,θ)]ptarget=argminθE[ptarget(x)ptrain(x)(x,θ)]ptrain=argminθ1Ni=1Nptarget(xi)ptrain(xi)=wi(xi,θ)

在实践中,这相当于简单地通过重要性 对单个样本进行加权。实际实现这一点的关键是估计重要性的有效方法,这通常是不平凡的。这是有关该主题的论文的主要主题之一,并且可以在文献中找到许多方法(关键字“直接重要性估计”)。wi

所以,最后回到最初的问题,这种方法不是重新采样或创建人工样本,而是简单地以适当的方式对现有样本进行加权。

有趣的是,我在下面引用的论文都没有引用这个研究分支。可能是因为作者/不知道?


旧答案

这不是为您的问题提供实用解决方案的尝试,但我只是对处理回归问题中的不平衡数据集进行了一些研究,并想分享我的结果:

这是一个你是在做因果分析还是预测的问题。

只要对未重新采样的样本进行一次测试,为了预测目的对目标变量进行重新采样以进行训练就可以工作。最终的表现图表必须完全基于保留。为了在确定模型的可预测性时获得最大的准确性,应采用交叉验证技术。

您通过回归模型的最终分析和不平衡的数据集“撤消”。