R中的Xgboost:处理极端的类不平衡

数据挖掘 r xgboost
2022-02-22 23:12:29

我的数据有一个极端的类别不平衡——99.7% 是 0,0.2% 是 1,几乎所有的预测变量(7 个中有 6 个)都是分类的。在执行上采样(在 R 中使用 ROSE)后,我训练了一个 xgboost 分类器。在 20% 的测试数据上评估模型,结果如下: 在此处输入图像描述

如您所见,回忆并不是很好。此外,如果我在完全不同的测试数据(意味着不是原始数据的一部分)上运行模型,那么召回值恰好下降到 50%。发生这种情况是因为它过度拟合吗?考虑到极端的阶级不平衡,有人可以告诉我如何改进这个模型吗?

我是该领域的新手。任何帮助将非常感激。谢谢!

2个回答

如果您的测试集在模型开发中受到适当的阻碍,那么从 64 下降到 50 似乎并没有过度拟合。(从混淆矩阵来看,您似乎没有犯过在拆分之前进行上采样的相当常见的错误。)

如果“完全不同的测试数据”与训练数据的分布不同,则可以解释这种差异。没有普遍的好方法来解释 iid 数据假设的失败。您可以尝试对模型进行更多的欠拟合,假设有一些潜在的大趋势在数据集中是恒定的,并且模型在训练/验证集中发现(并过度拟合)一些额外的、更本地化的趋势。

在应用 XGboost 之前尝试使用 SMOTE。

按照此链接的详细信息:https ://www.analyticsvidhya.com/blog/2016/03/practical-guide-deal-imbalanced-classification-problems/