我有用于多类分类的不平衡数据集,我尝试在 XGboost 中使用类权重选项,分类器仍然倾向于支持多数类。我不确定是否需要调整其他内容或应该如何处理。如果算法在所有地方都在预测,我仍然可以理解,但不确定为什么它仍然偏向多数类。任何指针?
更新:我的意思是大多数预测仍然是针对主要类别的,在测试和训练中大约占 30%
平衡 XGboost 仍然偏向于多数派
数据挖掘
分类
xgboost
多类分类
多标签分类
2022-02-16 04:33:40
1个回答
这是完全正常的。您应该记住,该模型基本上会学习您的数据(直观地)给出的统计函数,并且由于您的数据是倾斜的,它将由多数类学习。
为了克服这个问题,您可以使用两种方法来处理数据集的不平衡特征:采样和成本敏感学习。基本上,在采样技术中,我们有欠采样和过采样,也就是说,我们可以减少我们的数据集以平衡数据或使用人工方法增加它。一些例子:
- 随机过采样:本质上,这种技术通过随机采样来增加少数类。
- SMOTE:随机过采样存在过拟合问题,因为我们只是在大量复制数据。为了克服这个问题,smote 以一种简化的方式在特征空间上为少数类中的最近邻插入点。
对于欠采样技术:
随机欠采样:此方法对多数类进行简单欠采样。我们可以丢失信息,但如果点很接近,它可以给出很好的结果
NearMiss:以一种简化的方式,该模型选择最接近少数类的点。
在成本敏感的学习技术中,我们使用成本矩阵“惩罚”模型,将错误分数分配给特定类别。例如,假设您想为 C1 类提供更好的结果,您可以创建一个矩阵,其中 C1 的错误分类高于其他类。
在 python 中,我们有两个优秀的库来处理这个问题:
- https://imbalanced-learn.readthedocs.io/en/stable/api.html
- https://wwwen.uni.lu/snt/research/sigcom/computer_vision_lab/costcla_a_cost_sensitive_classification_library_in_python
他们有关于该主题的优秀教程,因此您可以更深入地了解所讨论的方法和其他方法。我希望它有所帮助。
其它你可能感兴趣的问题