DMatrix
设置参数weight
。显然,这是一个权重列表,其中每个值都是相应样本的权重。
我找不到关于这些权重如何实际用于梯度提升过程的任何信息。它们与eta
有关吗?例如,如果我将所有样本的
weight
设置为0.3,将eta
设置为1,这是否与将eta
设置为0.3并将weight
设置为1相同?DMatrix
设置参数weight
。显然,这是一个权重列表,其中每个值都是相应样本的权重。
我找不到关于这些权重如何实际用于梯度提升过程的任何信息。它们与eta
有关吗?weight
设置为0.3,将eta
设置为1,这是否与将eta
设置为0.3并将weight
设置为1相同?xgboost
允许在构建DMatrix
时加入实例权重,正如您所提到的。这个权重直接与实例相关,并伴随整个训练过程进行传递。因此,它被包括在梯度和海森值的计算中,并直接影响 xgboost
模型的分裂点和训练。
实例权重文件
XGBoost支持为每个实例提供权重以区分实例的重要性。例如,如果我们为示例中的“train.txt”文件提供实例权重文件如下:
train.txt.weight
1
0.5
0.5
1
0.5
这意味着XGBoost将在训练模型时更加强调第一和第四个实例,即正实例。该配置类似于配置组信息。如果实例文件名为“xxx”,则XGBoost将检查同一目录中是否有名为“xxx.weight”的文件,如果有,则在训练模型时使用权重。
这与 eta
非常不同
eta
只是告诉xgboost
在每次迭代中将最后一棵树融合到集成中的程度。它是每个迭代中集成有多贪婪的度量。
例如,如果我将
将weight
设置为所有样本的0.3和eta
weight
设置为1,这是否与将eta
设置为0.3和weight
设置为1相同?
所有实例的恒定weight
值为1是默认值,因此将其更改为所有实例的常数0.3仍然是等权重,因此这不应太大影响。但是,将eta
从0.3增加到1会使训练更加激进。
在 xgboost 的 DMatrix
中,weight
是以正确的方式输入泊松分布目标(例如保险索赔频率 - 即当 'objective': 'count:poisson'
时)的 暴露变量(例如保险单持续时间)。
更多信息
那么哪些是错误的方法呢?与Stack Exchange上的回复相反,base_margin
和set_base_margin
。我将这三个选项中的所有内容与GLM的sample_weight
(由PoissonRegressor
的fit
方法公开)进行了基准测试,并且只有weight
产生了类似无偏模型(从个体特征的实际vs.预测图中可以看出)。更不用说通过切换到weight
(下降到改进GLM的水平)显着改善了早期停止指标(Poisson负对数或RMSE)。