优化类别不平衡下的 Precision-Recall 曲线

机器算法验证 机器学习 精确召回 不平衡类 数据可视化
2022-01-31 23:39:09

我有一个分类任务,其中有许多预测变量(其中一个是信息量最大的),并且我正在使用MARS模型来构建我的分类器(我对任何简单的模型都感兴趣,并且出于说明目的使用 glms 将是没关系)。现在我在训练数据中有一个巨大的类不平衡(每个正样本大约有 2700 个负样本)。与信息检索任务类似,我更关心预测排名靠前的阳性测试样本。出于这个原因,Precision Recall 曲线的性能对我来说很重要。

首先,我只是在我的训练数据上训练模型,保持类不平衡。我用红色可视化我的训练模型,用蓝色可视化最重要的输入。

不平衡数据的训练,不平衡数据的评估

不平衡训练的 PR 用于不平衡训练的 ROC

考虑到类不平衡会导致模型崩溃,因为学习排名靠前的正样本是整个数据集的一小部分,所以我对正训练点进行了上采样以获得平衡的训练数据集。当我在平衡训练集上绘制表现时,我得到了很好的表现。在 PR 和 ROC 曲线中,我训练的模型都比输入模型做得更好。

训练(上采样)平衡数据,评估(上采样)平衡数据:

PR 用于平衡训练,在平衡数据集上可视化 ROC 用于平衡训练,在平衡数据集上可视化

但是,如果我使用这个在平衡数据上训练的模型来预测原始的、不平衡的训练集,我在 PR 曲线上的表现仍然很差。

训练(上采样)平衡数据,评估原始不平衡数据:

PR 用于平衡训练,在原始不平衡数据集上可视化 用于平衡训练的 ROC,在原始不平衡数据集上可视化

所以我的问题是:

  1. PR 曲线的可视化显示我的训练模型(红色)的性能较差,而 ROC 曲线显示由于类不平衡而有所改善的原因是什么?
  2. 重采样/上采样/下采样方法能否解决这个问题,迫使训练集中在高精度/低召回率区域?
  3. 有没有其他方法可以将训练集中在高精度/低召回率区域?
4个回答
  1. ROC 曲线对类别不平衡的变化不敏感;参见 Fawcett (2004)“ROC 图表:研究人员的注意事项和实际考虑”。
  2. 对低频类进行上采样是一种合理的方法。
  3. 还有许多其他方法可以处理类不平衡。Boosting 和 bagging 是我想到的两种技术。这似乎是最近的一项相关研究:Comparing Boosting and Bagging Techniques With Noisy and Imbalanced Data

PS整洁的问题;我很想知道结果如何。

最近的一项研究“洞察不平衡数据的分类:使用数据内在特征的经验结果和当前趋势”比较了三种改进不平衡数据分类的方法:

  • 数据采样(如问题中所建议)
  • 算法修改
  • 成本敏感的学习

我想提请注意一个事实,即最后两个实验实际上是在几乎相同的数据集上使用相同的模型。性能上的差异不是模型差异,而是由验证数据集的不同分布和所使用的特定指标的属性(精度和召回率)高度依赖于该分布来解释的。为了更详细地说明这一点,如果您从初始验证数据集中获取 X 个不同的条目并为放大的数据集复制少数类,您的模型将对这些 X 条目做出相同的预测,无论是正确还是不正确,无论是在放大的还是不平衡的验证数据集。唯一的区别是,对于每个假阳性,初始数据集中的真阳性会更少(因此精度较低),而平衡数据集中的真阳性会更多(仅仅是因为数据集中通常有更多的阳性样本) . 这就是为什么说 Precision 和 Recall 对偏斜敏感的原因。另一方面,正如您的实验所表明的那样,ROC 不会改变。这也可以通过查看其定义来观察。这就是为什么说 ROC 对偏斜不敏感的原因。

对于第 2 点和第 3 点,我还没有很好的答案,因为我正在寻找那些自己:)

假设上采样的正样本与“原始集”具有“相同的分布”。随着正样本数量的增加,几乎没有变化

1) “所有阈值”的 TruePositives (TP) 数量增加,因此所有阈值的比率 TP/(TP+FP) 和 TP/(TP+FN) 都增加。因此,中华人民共和国的面积正在增加。

2)预期精度,也称为“哑”模型的精度,从~1/2700(原始设置)增加到~1/2(在“理想”平衡的情况下)。假设您的模型表现得比“哑”模型更好,这意味着曲线下面积在“原始集”中将超过 0.00037,在理想平衡集中将超过 0.5。

3)在放大数据集上训练模型时,一些模型可能会“过度拟合”正样本。

关于 ROC 曲线,众所周知,ROC 曲线对类别分布变化的影响很小(放大对 FPR 的影响非常小,而您可以看到对 TPR 的一些影响)。

关于聚焦在高精度/低召回率区域,您可以针对误报比误报受到更多惩罚的成本函数进行优化。