xgboost:更加重视最近的样本


Answers:


9

您可以尝试构建多个xgboost模型,其中一些模型仅限于最新数据,然后将这些结果加权在一起。另一个想法是制定一个定制的评估指标,以更严厉地惩罚最近的分数,这将使它们更加重要。


4
OP可以简单地将较高的样本权重提供给最新的观察结果。大多数软件包都允许这样做,xgboost也是如此。
里卡多·克鲁兹

30

只需将基于时间标签的权重添加到xgb.DMatrix。以下示例使用R编写,但相同的原理适用于Python或Julia上的xgboost。

data <- data.frame(feature = rep(5, 5),
                   year = seq(2011, 2015), 
                   target = c(1, 0, 1, 0, 0))
weightsData <- 1 + (data$year - max(data$year)) * 5 * 0.01

#Now create the xgboost matrix with your data and weights
xgbMatrix <- xgb.DMatrix(as.matrix(data$feature), 
                         label = data$target, 
                         weight = weightsData)

感谢您的回答-查看编码示例确实很有帮助。加权函数系数的大小如何影响模型?我浏览了xgboost文档,但找不到有关这些数值的重要性的信息。
千焦耳

不知道这个把戏,很好。该功能下的xgboost文档中有一些花哨的地方setinfo(),尽管它不是很具描述性
TBSRounder

12

在Python上,您有一个不错的scikit-learn包装器,因此您可以这样编写:

import xgboost as xgb
exgb_classifier = xgb.XGBClassifier()
exgb_classifier.fit(X, y, sample_weight=sample_weights_data)

您可以从这里获得更多信息:http : //xgboost.readthedocs.io/en/latest/python/python_api.html#xgboost.XGBClassifier.fit


也希望R插入符也内置此符号
。– pauljeba

1
那应该xgb.XGBClassifier()在第二行代码中,但是stackexchange不允许少于6个字符的编辑...
Andre Holzner
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.