我必须解决二进制分类问题。 (标签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(负数)/ num(正数)= 4.7)
scale_pos_weight=4.7
-AUC:0.973
-精度(0/1):0.999 / 0.807
-召回率(0/1):0.971 / 0.994
-F得分(0/1):0.985 / 0.891
标签1的精度降低,而调用率提高。与此相反,我应用了4.7的倒数
-AUC:0.988
-精度(0/1):0.992 / 0.956
-召回率(0/1):0.995 / 0.937
-F得分(0/1):0.993 / 0.946
结果就是我想要的。
我不知道为什么会出现这些结果...请解释这种情况。
答案 0 :(得分:0)
我也有同样的情况。我认为原因是,当scale_pos_weight为4.7(应该是)时,模型具有相同数量的标签0和标签1,因此它认为需要预测相同数量的标签0和标签1。但这并没有成功,因此找到了更多的FP,这就是标签1的精度下降的原因。