Antworten:
Sie könnten versuchen, mehrere xgboost-Modelle zu erstellen, von denen einige auf neuere Daten beschränkt sind, und diese Ergebnisse dann zusammenwägen. Eine andere Idee wäre, eine angepasste Bewertungsmetrik zu erstellen, die die jüngsten Punkte stärker benachteiligt und ihnen mehr Bedeutung verleiht.
Fügen Sie Ihrer xgb.DMatrix einfach Gewichte basierend auf Ihren Zeitangaben hinzu. Das folgende Beispiel ist in R geschrieben, aber das gleiche Prinzip gilt für xgboost unter Python oder Julia.
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)
setinfo()
, obwohl es nicht sehr beschreibend ist
In Python haben Sie einen netten Wrapper zum Lernen von Scikits, so dass Sie einfach so schreiben können:
import xgboost as xgb
exgb_classifier = xgb.XGBClassifier()
exgb_classifier.fit(X, y, sample_weight=sample_weights_data)
Weitere Informationen erhalten Sie hier: http://xgboost.readthedocs.io/en/latest/python/python_api.html#xgboost.XGBClassifier.fit
xgb.XGBClassifier()
in der zweiten Codezeile sein, aber Stackexchange erlaubt keine Änderungen von weniger als sechs Zeichen ...