¿Hay alguna manera de agregar más importancia a los puntos que son más recientes al analizar datos con xgboost?
¿Hay alguna manera de agregar más importancia a los puntos que son más recientes al analizar datos con xgboost?
Respuestas:
Puede intentar construir múltiples modelos xgboost, con algunos de ellos limitados a datos más recientes, y luego ponderando esos resultados juntos. Otra idea sería hacer una métrica de evaluación personalizada que penalice los puntos recientes con mayor intensidad, lo que les daría más importancia.
Simplemente agregue pesos basados en sus etiquetas de tiempo a su xgb.DMatrix. El siguiente ejemplo está escrito en R pero el mismo principio se aplica a xgboost en 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()
, aunque no es muy descriptivo
En Python tienes un buen contenedor de scikit-learn, por lo que puedes escribir así:
import xgboost as xgb
exgb_classifier = xgb.XGBClassifier()
exgb_classifier.fit(X, y, sample_weight=sample_weights_data)
Más información puede recibir de esto: http://xgboost.readthedocs.io/en/latest/python/python_api.html#xgboost.XGBClassifier.fit
xgb.XGBClassifier()
en la segunda línea de código, pero stackexchange no permite ediciones de menos de seis caracteres ...