1

我必须解决二进制分类问题。(标签 0 和 1 之间的训练数据大小比率为 4.7:1)因此,我使用 xgboost 算法创建了模型。结果相当不错。
- AUC:0.989
- 精度(0/1):0.998 / 0.938
- 召回率(0/1):0.992 / 0.986
- F 分数(0/1):0.995 / 0.962
但我想提高标签 1 的精度(0.938 )。因此,我尝试调整 xgboost 中的参数。特别是,我对调整 Scale_pos_weight 参数感到好奇。首先,我按照 xgboost 文档中的建议应用了这个值。(num(negative) / num(positive)=4.7)
scale_pos_weight=4.7
- AUC: 0.973
- Precision(0/1): 0.999 / 0.807
- Recall(0/1): 0.971 / 0.994
- F 分数(0/1): 0.985 / 0.891
label 1 的精度降低了,Recall 提高了。与此相反,我应用了 4.7 的倒数
- AUC:0.988
- 精度(0/1):0.992 / 0.956
- 召回率(0/1):0.995 / 0.937
- F 分数(0/1):0.993 / 0.946
结果就是我想要的。我不知道为什么会出现这些结果...请解释这种情况..

4

1 回答 1

0

我也有同样的情况。我认为原因是当您的 scale_pos_weight 为 4.7(应该如此)时,模型具有相同数量的标签 0 和标签 1,因此它认为它需要预测相同数量的标签 0 和标签 1。但它没有成功,所以它找到了更高数量的 FP,这就是标签 1 的精度降低的原因。

于 2020-02-13T10:17:35.190 回答