Existe-t-il un moyen d'ajouter plus d'importance aux points les plus récents lors de l'analyse des données avec xgboost?
Existe-t-il un moyen d'ajouter plus d'importance aux points les plus récents lors de l'analyse des données avec xgboost?
Réponses:
Vous pouvez essayer de créer plusieurs modèles xgboost, certains d'entre eux étant limités à des données plus récentes, puis pondérer ces résultats ensemble. Une autre idée serait de créer une mesure d'évaluation personnalisée qui pénalise davantage les points récents, ce qui leur donnerait plus d'importance.
Ajoutez simplement des poids basés sur vos étiquettes de temps à votre xgb.DMatrix. L'exemple suivant est écrit en R mais le même principe s'applique à xgboost sur Python ou 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()
, bien que ce ne soit pas très descriptif
Sur Python, vous avez un joli wrapper scikit-learn, vous pouvez donc écrire comme ceci:
import xgboost as xgb
exgb_classifier = xgb.XGBClassifier()
exgb_classifier.fit(X, y, sample_weight=sample_weights_data)
Plus d'informations que vous pouvez recevoir de ceci: http://xgboost.readthedocs.io/en/latest/python/python_api.html#xgboost.XGBClassifier.fit
xgb.XGBClassifier()
dans la deuxième ligne de code mais stackexchange ne permet pas les modifications de moins de six caractères ...