xgboost: donner plus d'importance aux échantillons récents
-
16-10-2019 - |
Question
Est-il possible d'ajouter plus d'importance aux points qui sont plus récentes lors de l'analyse des données avec xgboost?
La solution
Vous pouvez essayer de construire plusieurs modèles xgboost, avec certains d'entre eux étant limité à des données plus récentes, puis pondérer ces résultats ensemble. Une autre idée serait de faire une plus fortement métrique d'évaluation sur mesure qui pénalisent les points récents qui leur donnerait plus d'importance.
Autres conseils
Juste poids add en fonction de vos étiquettes de temps à votre xgb.DMatrix. L'exemple suivant est écrit dans 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)
En Python vous avez une belle enveloppe scikit-learn, de sorte que vous pouvez écrire comme ceci:
import xgboost as xgb
exgb_classifier = xgb.XGBClassifier()
exgb_classifier.fit(X, y, sample_weight=sample_weights_data)
Plus d'informations vous pouvez recevoir ceci: http://xgboost.readthedocs.io/en/latest /python/python_api.html#xgboost.XGBClassifier.fit