我有一个非常不平衡的数据集。我正在尝试遵循调整建议并使用scale_pos_weight
,但不确定我应该如何调整它。
我可以看到这样RegLossObj.GetGradient
做:
if (info.labels[i] == 1.0f) w *= param_.scale_pos_weight
所以正样本的梯度会更有影响力。但是,根据xgboost 论文,梯度统计总是在本地使用= 在特定树中特定节点的实例中:
- 在节点的上下文中,评估候选分裂的损失减少
- 在叶节点的上下文中,优化赋予该节点的权重
因此,没有办法提前知道什么是好的scale_pos_weight
- 对于最终正实例和负实例之间的比率为 1:100 的节点和比率为 1:2 的节点来说,这是一个非常不同的数字。
有什么提示吗?