有没有办法在使用 xgboost 分析数据时为最近的点添加更多重要性?
xgboost:更加重视最近的样本
数据挖掘
xgboost
加权数据
2021-09-17 21:55:58
3个回答
只需根据您的时间标签将权重添加到您的 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)
在 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
您可以尝试构建多个 xgboost 模型,其中一些仅限于更新的数据,然后将这些结果加权在一起。另一个想法是制定一个定制的评估指标,对最近的点进行更严厉的惩罚,从而赋予它们更多的重要性。
其它你可能感兴趣的问题