Odpowiedzi:
Możesz spróbować zbudować wiele modeli xgboost, przy czym niektóre z nich ograniczają się do nowszych danych, a następnie zważyć wyniki razem. Innym pomysłem byłoby stworzenie zindywidualizowanej miary oceny, która będzie silniej karać ostatnie punkty, co dałoby im większe znaczenie.
Po prostu dodaj wagi na podstawie etykiet czasu do xgb.DMatrix. Poniższy przykład jest napisany w R, ale ta sama zasada dotyczy xgboost w Pythonie lub Julii.
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()
, choć nie jest on zbyt opisowy
W Pythonie masz fajne opakowanie do nauki scikit, dzięki czemu możesz pisać tak:
import xgboost as xgb
exgb_classifier = xgb.XGBClassifier()
exgb_classifier.fit(X, y, sample_weight=sample_weights_data)
Więcej informacji można uzyskać z tego: http://xgboost.readthedocs.io/en/latest/python/python_api.html#xgboost.XGBClassifier.fit
xgb.XGBClassifier()
w drugim wierszu kodu, ale stackexchange nie pozwala na edycję mniej niż sześciu znaków ...