我正在尝试使用XGBoost在高度不平衡的数据集上构建一个分类器,该数据集只有有限的正样本和几乎无限的负样本。是否有可能由于负样本过多(使数据集更加不平衡)而削弱模型的预测能力?除了运行时间之外,是否有理由限制负样本的数量?
我知道scale_pos_weight
参数应该可以解决这个问题,但我的直觉告诉我,即使这种方法也有其局限性。
回答:
直接回答你的问题:增加更多的负样本可能会降低训练分类器的决策能力。对于负类,选择最具代表性的样本并丢弃其余部分。
从不平衡数据集中学习可能会影响分类器的预测能力,甚至影响其收敛能力。一般推荐的策略是保持每个类别的训练样本数量大致相同。类别不平衡对学习的影响取决于决策空间的形状和类别之间边界的宽度。边界越宽,决策空间越简单,即使是对于不平衡的数据集,训练也更容易成功。
TL;DR
为了快速了解不平衡学习的方法,我推荐以下两篇文章:
- SMOTE和AdaSyn示例
- 如何处理不平衡数据:概述
- 在机器学习中处理不平衡类别
- 从不平衡数据中学习 由Haibo He教授撰写(更科学)
有一个名为imbalanced-learn
的Python包,它提供了关于算法的详尽文档,我推荐进行深入研究。