目录
Paper Reading 是从个人角度进行的一些总结分享,受到个人关注点的侧重和实力所限,可能有理解不到位的地方。具体的细节还需要以原文的内容为准,博客中的图表若未另外说明则均来自原文。
论文概况 | 详细 |
---|---|
标题 | 《SMOTE for Regression》 |
会议 | Lu´ıs Torgo, Rita P. Ribeiro, Bernhard Pfahringer, and Paula Branco |
发表期刊 | Portuguese Conference on Artificial Intelligence (EPIA) |
发表年份 | 2013 |
论文影响 | 对不平衡回归问题提出一种 SMOTE 的变体来 |
论文代码 | R 语言 UBL 库、Python smogn 库有实现(https://pypi.org/project/smogn/) |
作者单位:
- LIAAD-INESC TEC
- DCC-Faculdade de Ci^encias-Universidade do Porto
- Department of Computer Science-University of Waikato
研究动机
回归问题中的罕见值和现实世界中的多个领域都非常相关,这个问题可以被看作类分布不平衡的分类问题,主要区别在于该问题的目标值是连续变量。不平衡回归任务问题更为困难,主要是因为罕见值出现的频率很低,且样本的重要性和学习器的误差不是同等相关的。现有的分类方法可以分为 3 大类:改进评估指标、改进学习器和使用重采样方法,这三种方法都在分类问题中进行了广泛的研究,但在回归问题上的研究则非常有限。据本文作者所知,还没有研究工作在回归任务中尝试使用过抽样方法(截止该文章发表)。重采样方法比其他方法有明显的优势,因为这类方法可以和现有的回归算法协同工作,不需要对它们进行任何更改。
文章贡献
针对罕见极值预测问题(不平衡回归问题)研究的空缺,本文首次提出了针对该问题的重采样方法。本文使用了欠采样策略,将著名且成功的 SMOTE 算法应用于回归任务,提出了名为 SMOTER 的算法。通过实验表明本文提出的 SMOTER 方法可以与任何现有的回归算法一起使用,使其成为解决连续目标变量罕见极值预测问题的通用工具。
本文方法
重采样方法的是假设给定训练样本的不平衡分布将使学习系统偏向于不符合用户偏好目标的方法,目前(本文发表时)还没有将不平衡分类提出的一些重采样方法应用于回归任务,此处对欠采样和过采样在回归任务的适应性进行讨论。
relevance
在回归中需要使用 relevance(相关性)的概念指定对用户更重要的连续目标值,这个概念的动机是:与标准的回归问题相反,在某些领域中并非所有的值都是同等重要/相关。因此回归的有用性不仅需要考虑预测的数值误差,还需要结合预测值和真实值的相关性。relevance 定义为连续函数 φ(Y):Y→[0,1],也就是将目标变量域 Y 映射到 [0;1] 的尺度上,其中 0 表示相关性最小,1 表示相关性最大。在特定领域上的 relevance 需要由用户进行指定,在本文中使用一种简单的定义方式:relevance 与目标变量概率密度函数成反比。
回归的欠采样
欠采样的基本思想是减少具有最常见目标变量值的数量,以更好地平衡与具有不太频繁的目标值之间的比例,此时得到的训练样本将小于原始(不平衡)数据集。可以使用 relevance 函数值来确定哪些的目标值需要被欠采样,本文的定义是 Dr={<x,y>∈D:φ(y)≥t},其中 t 是用户定义的相关性阈值,也就是根据阈值 t 将数据集按照 relevance 划分出需要欠采样的子集。对于 Dr 中的其他“常见”观测值将随机选择 nu 个样本,nu 的值是为采样比,需要由用户进行定义。nu 的值太大会导致新的训练数据集仍然太不平衡,值太小可能会导致训练集太小。
回归的 SMOTE
SMOTE 是一种经典的过采样算法,本文提出了用于回归问题的 SMOTE 变体 SMOTER。在原始的 SMOTE 中对于少数类集合中的样本,将从同一集合中随机选择其 K 近邻中的一个,利用这两个观测值创建一个新示例,其特征的值是两个原始样本的插值。为了使 SMOTE 适应回归问题,需要解决 SMOTE 算法的三个关键组成部分:
- 如何定义哪些是高 relevance 的目标值和“普遍”的值;
- 如何创建新的合成样本;
- 如何确定合成样本的目标值。
关于第一个问题,SMOTER 基于 relevance 函数和用户指定的阈值,对 Dr 进行过采样和对剩余的样本进行欠采样,从而产生一个具有更平衡的值分布的新训练集。对于第二个问题,则和原始的 SMOTE 使用相同的方法即可。第三个问题是确定合成样本的目标值,在原始 SMOTE 中这是一个微不足道的问题,因为被过采样的样本属于同一个类别,需要被预测的标签是相同的。但在回归问题中虽然用于生成合成样本的样本具有很高的 relevance 分数,但它们的目标变量值并不相同。本文使用两个样本的目标变量值的加权平均值,其中权重为生成样本与两个被用于合成的样本之间距离的反函数。
SMOTER 算法的流程如下伪代码所示,注意在数据集中可能有高值和低值的情况。如果对同样是高 relevance 但是目标值差异很大的样本进行插值,则会导致合成样本的目标值可能是不准确的,因此对于这两个集合的样本合成也需要分开进行。
合成样本的生成如下伪代码所示,对于目标值的生成来源于用于构造合成样本的目标值的加权平均值,合成样本与这些样本的距离越大,合成目标值时的权重越小。
实验结果
数据集和实验设置
实验使用的数据集如下表所示,显示了这些数据集的主要特征,其中使用 relevance 可见数据集平均约有 10% 的样本具有高相关度。
实验使用的算法以及相应的参数如下表所示,共有 20 种学习器被设置(8 种 MARS + 6 种 SVM + 6 种随机森林),每一个学习器都使用 7 种不同的采样方法运行 17 个数据集。抽样包括以下方法:不抽样、SMOTER 方法的 4 种变体、欠采样的 2 个变体。其中四个 SMOTER 变体使用 5 个最近邻来生成病例,relevance 阈值为 0.75,使用 {200,300} 和 {200,500g} 2 组过采样和欠采样率组合。
实验指标使用如以下公式所示的 F1 指标,通过重复 3 次 10 折交叉验证过程的来计算,并对结果进行假设检验。
对比实验
实验结果如下表所示,每种采样策略与 baseline 进行 340 次比较(20 个学习器 × 17 个数据集)。对于每一组对比,计算各个采样方法和 baseline 获得的平均 F1 的差异的统计显著性。结果表明当任务是预测连续目标变量的罕见极值时,本文的采样方法具有优势。例如在 340 种情况中,使用 200% 过采样和 200% 欠采样的配置在 57.6% 的情况下明显优于使用给定数据集的替代方案,而只有 3.2% 的情况下导致了模型训练效果不佳。结果还表明相对于简单地对最频繁的值进行欠采样的方法,SMOTER 方法获得的结果略好。
下图显示对 17 个数据集中的每一个进行采样和不采样所获得的最佳分数,可以看到最好的分数是通过一定的采样获得的。