我有一个分类任务,其中有许多预测变量(其中一个是信息量最大的),并且我正在使用MARS模型来构建我的分类器(我对任何简单的模型都感兴趣,并且出于说明目的使用 glms 将是没关系)。现在我在训练数据中有一个巨大的类不平衡(每个正样本大约有 2700 个负样本)。与信息检索任务类似,我更关心预测排名靠前的阳性测试样本。出于这个原因,Precision Recall 曲线的性能对我来说很重要。
首先,我只是在我的训练数据上训练模型,保持类不平衡。我用红色可视化我的训练模型,用蓝色可视化最重要的输入。
不平衡数据的训练,不平衡数据的评估:
考虑到类不平衡会导致模型崩溃,因为学习排名靠前的正样本是整个数据集的一小部分,所以我对正训练点进行了上采样以获得平衡的训练数据集。当我在平衡训练集上绘制表现时,我得到了很好的表现。在 PR 和 ROC 曲线中,我训练的模型都比输入模型做得更好。
训练(上采样)平衡数据,评估(上采样)平衡数据:
但是,如果我使用这个在平衡数据上训练的模型来预测原始的、不平衡的训练集,我在 PR 曲线上的表现仍然很差。
训练(上采样)平衡数据,评估原始不平衡数据:
所以我的问题是:
- PR 曲线的可视化显示我的训练模型(红色)的性能较差,而 ROC 曲线显示由于类不平衡而有所改善的原因是什么?
- 重采样/上采样/下采样方法能否解决这个问题,迫使训练集中在高精度/低召回率区域?
- 有没有其他方法可以将训练集中在高精度/低召回率区域?