XGBoost官方文档对参数scale_pos_weight的定义:
翻译:
调节正负样本权重的平衡 ,常用来处理不平衡的正负样本数据 。
典型值算法:
scale_pos_weight = 负样本总数/正样本总数 。若训练负样本总数是500 ,正样本总数100,那么设置 scale_pos_weigh为 5 。
scale_pos_weight的含义:
字面意思是正样本权重尺度,是一个关于调节正样本权重的变量 。 好吧,让我们深入XGBoost的源码分析:
我们重点关注权重更新方程那一行,可得如下结论:
当scale_pos_weight > 1时,即训练集的负样本总数大于正样本总数,y表示类别,由权重更新方程可知,正类对应的权重w增加,负类对应的权重不变 。同理可知scale_pos_weight < 1时的权重更新 。
讲到这里,是不是