数据不平衡是现实世界中的主流和固有现象。数据经常表现出带有长尾的偏态分布。然而,目前使用的大多数机器学习算法都是围绕每个目标类别(分类)的均匀分布的假设而设计的。
另一方面,我们不能忘记,许多任务涉及连续的目标,甚至是无限的值(回归),其中类别之间的硬边界并不存在(即年龄预测、深度估计等)。

数据不平衡|来源:中国社会科学网。作者
在这篇文章中,我将带领大家了解如何处理分类和回归任务中的不平衡数据,以及谈论在这样的环境中,你可以为每个任务使用的性能测量。
从不平衡的数据中学习有3种主要的方法。
- 1数据方法
- 2算法方法
- 3混合(集合)方法
不平衡的分类数据

用于回归的SMOTE |来源
SMOTE不平衡分类是一个被充分探索和理解的话题。
在现实应用中,我们面临许多挑战,我们只有不平衡的数据表示,其中少数类通常是更重要的一类,因此我们需要方法来提高其识别率。这个问题给预测性建模带来了严重的挑战,因为学习算法会偏向于多数类。
我们生活中重要的日常任务,如防止恶意攻击、检测威胁生命的疾病或处理监测系统中的罕见情况,都面临着极端的类不平衡,其比率从1:1000到1:5000不等,人们必须设计出能够调整和克服这种极端偏见的智能系统。
如何处理一个不平衡的数据集--数据方法

你会如何处理一个不平衡的数据集?|来源
它集中于修改训练集,使其适合于标准的学习算法。这可以通过平衡数据集的分布来实现,可以分为两种方式。
- 过度取样
- 欠采样
1.过度取样

过度取样|来源
在这种方法中,我们从少数类中合成新的例子。
有几种方法可用于对典型分类问题中使用的数据集进行超额采样。但最常见的数据增殖技术被称为合成少数群体超采样技术,简称SMOTE。

SMOTE前后的类别分布散点图 |来源
顾名思义,SMOTE创造了 "合成 "的例子,而不是用替换法进行过度取样。具体来说,SMOTE的工作方式如下。首先,它随机选择一个少数族裔的例子,并随机找到它的k个最近的少数族裔邻居。然后,在连接特征空间中两个例子的直线上随机选择一个点,创建一个合成例子。

SMOTE |来源
从SMOTE中创建的少数民族类的合成例子,当被添加到训练集时,可以平衡类的分布,使分类器创建更大、更少的决策区域,帮助分类器更好地泛化并减少过度拟合,而不是更小、更具体的区域,这将导致模型对多数类过度拟合。

决策边界|来源
这种方法的灵感来自于在手写字符识别中被证明是成功的数据增强技术,其中旋转和倾斜等操作是扰乱训练数据的自然方式。
现在,让我们来看看SMOTE的性能。

在数据合成实例上训练的分类器的混淆矩阵,并在不平衡的测试集上进行测试|来源
从混淆矩阵中我们可以注意到一些事情。
- 在合成例子上训练的分类器概括性很好。
- 这些分类器能很好地识别少数人的类别(真阴性)。
- 与低取样相比,它们的假阳性率更低。
优势
- 它改善了由随机过度采样引起的过度拟合,因为合成例子是生成的,而不是现有例子的副本。
- 没有信息的损失。
- 它很简单。
缺点
- 在生成合成例子时,SMOTE不考虑邻近的例子,这些例子可能来自其他类别。这可能会增加类的重叠,并可能引入额外的噪音。
- SMOTE对于高维数据不是很实用。
2.2.未取样

不取样|来源
在这种方法中,我们减少多数类的样本数量,使之与少数类的样本数量相匹配。

应用NearMiss-2之前和之后的类分布散点图 |来源
这可以通过几种方式实现。
- 随机取样器:这是最简单、最快的方法,通过从多数人类别中随机选择几个样本来平衡数据。
- NearMiss:通过实施3种不同的启发式方法,为选定的样本添加一些常识性规则,但在本文中,我们将只关注其中一种。
- NearMiss-2多数类的例子,与三个最远的少数类例子的平均距离最小。

在未取样的例子上训练的分类器的混淆矩阵,并在不平衡的测试集上进行测试 |来源
从混淆矩阵中我们可以注意到几件事。
- 当涉及到识别多数类(真阳性)时,欠采样与超采样相比表现很差。但除此之外,它对少数人类别的识别要比过度取样好,而且假阴性的情况较少。
优势
- 数据科学家可以平衡数据集,减少他们的分析或机器学习算法向多数人倾斜的风险。因为如果没有重新采样,科学家们可能会出现所谓的准确性悖论,即他们以90%的准确性运行分类模型。但仔细检查后,他们会发现结果严重偏向多数人的类别。
- 更少的存储需求和更好的分析运行时间。更少的数据意味着你或你的企业需要更少的存储和时间来获得有价值的洞察力。
缺点
- 去除足够多的多数人的例子,使多数人类别与少数人类别相同或相似的规模,会导致数据的重大损失。
- 所选择的多数类的样本可能是有偏见的,也就是说,它可能不能准确地代表真实世界,分析结果可能不准确。因此,它可能导致分类器在真实的未见过的数据上表现不佳。
由于这些缺点,一些科学家可能更喜欢超额取样。它不会导致任何信息的损失,而且在某些情况下,可能比欠采样的表现更好。但是过度取样也不是完美的。因为过度取样往往涉及复制少数事件,它可能导致过度拟合。
"SMOTE和欠抽样的组合比单纯的欠抽样表现更好。"
SMOTE:合成少数人过度取样技术,2011年
为了平衡这些问题,某些场景可能需要将过度采样和欠采样相结合,以获得最逼真的数据集和准确的结果。
如何处理不平衡的数据--算法方法

算法方法--不平衡分类的最佳模型 |来源
这种方法集中于修改现有模型,以减轻其对多数群体的偏见。这需要对修改后的学习算法有很好的洞察力,并精确识别其在学习偏态分布的表征时失败的原因。
最流行的技术是成本敏感的方法**(加权学习者**)。在这里,给定的模型被修改以纳入对每一组考虑的例子的不同惩罚。换句话说, 我们使用Focal loss,在我们的成本函数中,我们给少数人类别分配更高的权重,这将惩罚模型对少数人类别的错误分类,同时减少多数人类别的权重,使模型对代表性不足的类别给予更多关注。因此,在学习过程中提升了其重要性。
另一个有趣的算法层面的解决方案是应用单类学习或单类分类(简称OCC),专注于目标群体,创建一个数据描述。这样我们就消除了对任何群体的偏见,因为我们只集中在一组对象上。
OCC在不平衡的分类问题中很有用,因为它提供了离群点和异常点检测技术。它通过对多数类数据(也称为正例)进行模型拟合,预测新数据是属于多数类还是属于少数类(也称为负例),这意味着它是一个离群点/异常点。
OCC问题通常是实际的分类任务,其中多数类的数据很容易得到,但少数类的数据很难、很贵,甚至不可能收集到,例如引擎的工作、欺诈性交易、计算机系统的入侵检测等等。
如何处理不平衡的数据--混合方法

混合方法|来源
混合法是一种利用单个组件的优势的方法。当涉及到处理不平衡的分类数据时,一些作品提出了采样和成本敏感学习的混合化。换句话说,就是把数据和算法层面的方法都结合起来。这种将数据层面的解决方案与算法层面的解决方案(即分类器合集)合并的两阶段训练 的想法非常受欢迎,从而产生了强大而高效的学习者。

混合方法的实例方案 |来源
它的工作原理是先应用数据级的方法。正如你所记得的,数据层面的方法是通过修改训练集来平衡多数类和少数类之间的类别分布,方法是使用过量采样或不足采样。
然后,经过预处理的具有平衡类分布的数据被用来训练一个分类器集合,换句话说,这是一个多个分类器的集合,从中衍生出一个新的分类器,其性能优于任何组成分类器。因此,创造了一个强大而高效的学习者,它继承了数据和算法层面的方法的优点,同时减少了它们的缺点。

在不平衡测试集上训练和测试的混合分类器的混淆矩阵。
从混淆矩阵中我们可以注意到一些事情。
- 当涉及到识别多数类时,混合分类器的表现比欠采样更好
- 而且,在识别少数群体时,混合分类器的表现几乎与欠采样和过采样一样好。
基本上是两全其美!
不平衡分类的性能测量
在本节中,我们将回顾一下在处理不平衡分类数据时常用的性能测量方法及其有效性。
- 混淆矩阵
- ROC和AUC
- 精度召回率
- F-score
1.混淆矩阵
对于二元分类问题,混淆矩阵定义了性能指标的基础。大多数性能指标都来自于混淆矩阵,即准确率、误分类率、精确度和召回率。

混淆矩阵 |来源
然而,当数据不平衡时,准确率并不合适。因为模型只需准确预测多数人的类别就能达到较高的准确率,而在少数人的类别上表现不佳,而在大多数情况下,少数人的类别是我们最关心的。
2.ROC和AUC不平衡数据

ROC和AUC的不平衡数据 |来源
为了适应少数群体的需要,我们提出了接收操作特性(ROC)曲线,作为在真阳性(TP)率和假阳性(FP)率之间的权衡范围内的一种衡量标准。另一个重要的性能指标是曲线下面积(AUC)是一个常用的性能指标,用于将ROC曲线概括为一个单一的分数。此外,AUC不偏重于模型在多数人或少数人类别上的表现,这使得该指标在处理不平衡数据时更为合适。
3.精度和召回率
从混淆矩阵中,我们还可以得出 精度和召回率的性能指标。

精确率和召回率|来源
精度对于类的不平衡是很好的,它不会受到影响,因为它的计算中不包括真阴性的数量。
精确率和召回率的一个缺点是,和准确率一样,两者之间可能会有一些不平衡,我们希望提高少数类的TP,然而,FP的数量也会增加。
4.F-score
为了平衡召回率和精确度,即提高召回率,同时保持较低的精确度,提出了F-score作为精确度和召回率的谐波平均值。

F-score |来源
由于F-score的权重、精度和召回率相同,并且平衡了这两个关注点,所以它不太可能偏向于多数人或少数人类别。[2]
用我为你准备的Colab笔记本中的 3个不平衡分类方法代码例子检查 这个实验。
不平衡回归数据

不平衡回归数据|来源
对不平衡数据的回归没有得到很好的探索。而且,许多重要的现实生活应用,如经济、危机管理、故障诊断或气象学,都需要我们应用 对不平衡数据的回归这意味着从输入数据中预测罕见和极端的连续目标值。
因为处理不平衡数据是一个相关的问题,主要是在分类任务的背景下研究的,所以在回归的背景下,很少有成熟或合适的策略来解决这个问题。
让我们先看看不平衡分类所采用的典型方法,然后我们再来看看目前使用的一些最佳的不平衡回归技术。
不平衡分类中采用的方法
数据方法

从不平衡分类中采用的方法|作者。Prince Canuma
说到不平衡回归的数据方法,我们有两种技术深受不平衡分类的启发。
- SMOTER
- SMOGN
1.SMOTER
SMOTER是著名的SMOTE算法在回归方面的一种调整。
它通过使用原始标签密度定义频繁(多数)和罕见(少数)区域,然后对多数区域应用随机下采样,对少数区域应用超采样,用户必须预先确定SMOTER算法所要进行的超采样和下采样的百分比。
当涉及到对少数人区域的过度取样时,它不仅生成新的合成例子,还应用插值策略,将不同例子的输入和目标结合起来。准确地说,这种插值是利用两个罕见的案例进行的,其中一个是种子案例,另一个是从种子的k-近邻中随机选择的。这两个案例的特征被内插,新的目标变量被确定为两个罕见案例的目标变量的加权平均值。
你可能会问,为什么我们要对目标变量进行平均?请记住,在最初的SMOTE算法中,这是一个微不足道的问题,因为所有的罕见案例都有相同的区域(目标少数区域),但是在回归的情况下,答案就不那么微不足道了,因为当一对例子被用来生成一个新的合成案例时,它们不会有相同的目标变量值。
2.2.SMOGN
SMOGN 是在SMOTER之后,但它在SMOTER已有的超采样阶段的基础上进一步增加了高斯噪声。
SMOGN算法的关键思想是结合SMOTER和高斯噪声策略来生成合成例子,以同时限制SMOTER可能产生的风险,如通过使用更保守的策略引入高斯噪声,因为SMOTER在插值过程中不会使用最远的例子。它的工作原理是,只有当种子例子和所选的k-最近的邻居足够接近时,才用SMOTER生成新的合成例子,而当这两个例子距离较远时,则使用高斯噪声。
算法方法

算法方法作者
像在不平衡分类中,这种方法还包括调整损失函数以补偿区域不平衡(重新加权)和其他相关的学习范式,如转移学习、度量学习、两阶段训练和元学习[4]。但我们将重点讨论前两种范式。
- 误差感知损失
- 成本敏感的再加权
1.误差意识到的损失
它是用于分类的Focal loss的回归版本,称为Focal-R。焦点损失是一个动态加权的交叉熵损失,随着对正确类别的信心增加,加权系数(α)衰减为零。

焦点损失对容易的例子进行加权,其加权系数为-(1-pt)^γ |来源
Focal-R用一个连续函数取代了加权因子,该函数将绝对误差(L1距离)映射为0到1的范围内的值。
准确地说,基于L1距离的Focal-R损失可以写成:。

基于L1距离的Focal-R损失|来源
其中,ei是第i个样本的L1误差,σ(-)是Sigmoid函数,β、γ是超参数。
2.成本敏感的重新加权
由于目标空间可以被划分为有限仓,经典的再加权方案可以直接插入,如反频率加权(INV)及其平方根加权变体(SQINV)都是基于标签分布的。
混合方法

混合方法|来源
它是继不平衡分类的混合方法之后的又一种方法。
与不平衡分类的混合方法一样,不平衡回归的混合方法也结合了数据层面和算法层面的方法,以产生稳健和高效的学习者。
这种方法的一个例子是基于Bagging的合集。
基于袋装的合集
这种算法结合了数据预处理策略来解决回归任务中的不平衡域。
确切地说,一篇题为 "REBAGG: REsampled BAGGing for Imbalanced Regression "的论文提出了一种算法,该算法可以在生成的模型上获得多样性,同时使它们偏向于代表性最小和更重要的情况。
它有两个主要步骤。
- 使用训练集的预处理样本建立一些模型。
- 通过应用平均策略(基本上是对模型的预测进行平均,以获得最终的预测),使用训练过的模型来获得对未见过的数据的预测。
关于第一步,作者开发了四种主要的重采样方法来应用于原始训练集: 平衡、 平衡.SMT、 变化、 和 变化.SMT。这些方法的主要区别特征与以下方面有关。
i) 新样本中使用的少数派和多数派例子的数量之比;以及。
ii)如何获得新的少数派例子。
在标有 "平衡 "前缀的重采样方法中,新修改的训练集将有相同数量的少数派和多数派例子。另一方面,对于标有 "variation "前缀的重采样方法,新的训练集中的少数派和多数派例子的比例会有所不同。
当重采样方法没有后缀时,那么少数人区域的新合成例子是通过使用随机选择的少数人例子的精确拷贝得到的。而当后缀为 "SMT "时,少数民族地区的新合成例子是使用SMOTER算法获得的。
深度不平衡回归(DIR)
从不平衡分类中采用的方法是可行的;但是,单独使用这些方法有几个缺点。
请允许我提出一个案例!

图1.在两个不同的数据集上使用相同的训练标签分布(顶部)进行测试误差分布(底部)的比较。 来源
上述数据集有本质上不同的标签空间(a)CIFAR-100展示了分类标签空间,目标是类指数,而(b)IMDB-WIKI展示了连续标签空间,目标是年龄。
正如你所看到的,两者的标签密度分布是相同的,但误差分布却非常不同。IMDB-WIKI的错误分布要平滑得多,与标签密度分布关联不大,这影响了不平衡学习方法的工作方式,因为直接或间接地,它们通过补偿经验标签密度分布的不平衡而运作。这种方法对不平衡分类很有效,但对连续标签就不行了。相反,你必须找到一种方法来平滑标签分布。
用于不平衡数据密度估计的标签分布平滑(LDS)。

图2.标签分布平滑(LDS)将对称核与经验标签密度进行卷积,以估计有效的标签密度分布,说明标签的连续性。 来源
从上图2我们可以看到,在连续空间中,经验标签分布与真实的标签密度分布不一致。这是为什么呢?因为附近标签的数据样本之间存在依赖性,在这种情况下,我们谈论的是年龄相近的图像。
LDS使用核密度估计来学习数据集中对应于连续目标的有效不平衡性。确切地说,LDS将对称核与经验密度分布进行卷积,以提取核平滑版本,说明附近标签的数据样本的信息重叠。
注意:高斯或拉普拉斯核是一个对称核。
对称核描述了目标值y'和y之间的相似性,即它们在目标空间的距离。
本节开头的图2显示,LDS抓住了影响回归的真正不平衡。通过应用LDS,我们得到的标签密度分布与误差分布很相关(-0.83)。
一旦你有了有效的标签密度,你就可以使用我们前面谈到的解决不平衡分类的适应性技术(即成本敏感的重新加权方法)。
特征分布平滑法(FDS)

顶部*:某一特定年龄段的特征值与锚定年龄段的特征值的余弦相似度。* 底部*:某一年龄段特征方差的余弦相似性与其在锚定年龄段的数值的余弦相似性。背景的颜色是指特定目标范围内的数据密度。* 来源
上图显示了30岁(锚)的特征统计相似度。而且你可以马上注意到,围绕着锚点的仓与锚点高度相似,尤其是最接近的那几个仓。但进一步研究该图,你会发现,数据样本很少的区域(即0-6岁)有一个问题。由于数据的不平衡,平均数和方差显示出与30岁的高度相似性,这是不合理的。
特征分布平滑(FDS)算法的创造者受到这些观察的启发,提出了这个算法,在特征空间上进行分布平滑,或者换句话说,在附近的目标仓之间转移特征统计。因此校准了可能有偏差的特征分布估计,特别是对于训练数据中代表性不足的目标值。

特征分布平滑(FDS) |来源
而FDS的一个伟大之处在于,你可以通过在最终的特征图之后插入一个特征校准层将其整合到深度神经网络中。
基准测试

STS-B-DIR上的基准测试结果 |来源
使用各种算法对语义文本相似性基准(STS-B-DIR)数据集的结果报告。
作者表明,当LDS和FDS与其他现有的方法结合起来解决不平衡数据上的回归问题时,可以显著提高性能[4]。
不平衡回归的性能指标
当涉及到这类问题的评估指标时,你可以使用常见的回归指标,如MAE、MSE、Pearson、Geometric Mean(GM),以及我们在本节中探讨的技术。
开发不平衡回归的新方法时需要解决的关键问题
- 开发对成本敏感的回归方案,使成本与分配给稀有观测值的重要程度相适应。为了在预测具有不同重要性的罕见事件时有更大的灵活性,研究不仅使成本适应于少数群体,而且适应于每个单独的观察的可能性将是相当有趣的。
- 必须提出能够区分少数和噪声样本的方法。
- 在分类中开发更好的集合学习方法,可能会在对偏态分布的稳健性和预测能力方面有很大的改进。
结论

典型的ML算法假定所考虑的类中的对象数量大致相似。然而,在许多我们可以应用ML的现实问题中,例子的分布是倾斜的,因为我们最关心的和想要预测的事件很少发生,在大多数情况下,我们收集正常事件的数据点,代表正常状态和多数群体。这给学习算法带来了困难,因为它们会偏向于多数群体。
但在这篇文章中,你了解了从不平衡的分类和回归数据中学习的不同方法。