XGBOOST: придайте большее значение последним образцам
-
16-10-2019 - |
Вопрос
Есть ли способ добавить большее значение к точкам, которые более недавние при анализе данных с помощью XGBOOST?
Решение
Вы можете попробовать построить несколько моделей XGBOOST, некоторые из которых ограничены более поздними данными, а затем взвешивают эти результаты вместе. Другая идея - сделать индивидуальный показатель оценки, который в большей степени наказывает последние моменты, что придало бы им большее значение.
Другие советы
Просто добавьте веса на основе ваших временных метков, в ваш XGB.DMatrix. Следующий пример написан в R, но тот же принцип применим к XGBOOST на Python или 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)
На Python у вас есть хорошая обертка Scikit-learn, так что вы можете написать так:
import xgboost as xgb
exgb_classifier = xgb.XGBClassifier()
exgb_classifier.fit(X, y, sample_weight=sample_weights_data)
Более подробную информацию вы можете получить от этого:http://xgboost.readthedocs.io/en/latest/python/python_api.html#xgboost.xgbclassifier.fit