Risposte:
Potresti provare a costruire più modelli xgboost, alcuni dei quali sono limitati a dati più recenti, quindi ponderando questi risultati insieme. Un'altra idea sarebbe quella di fare una metrica di valutazione personalizzata che penalizzi maggiormente i punti recenti e che darebbe loro maggiore importanza.
Aggiungi pesi in base alle etichette del tempo sul tuo xgb.DMatrix. Il seguente esempio è scritto in R ma lo stesso principio si applica a xgboost su Python o 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()
, anche se non è molto descrittivo
Su Python hai un bel wrapper scikit-learn, quindi puoi scrivere così:
import xgboost as xgb
exgb_classifier = xgb.XGBClassifier()
exgb_classifier.fit(X, y, sample_weight=sample_weights_data)
Maggiori informazioni che puoi ricevere da questo: http://xgboost.readthedocs.io/en/latest/python/python_api.html#xgboost.XGBClassifier.fit
xgb.XGBClassifier()
nella seconda riga di codice ma stackexchange non consente modifiche di meno di sei caratteri ...