Чи можна надати більше значення очкам, які є останніми під час аналізу даних за допомогою xgboost?
Чи можна надати більше значення очкам, які є останніми під час аналізу даних за допомогою 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)
setinfo()
, хоча це не дуже описово
На Python у вас є хороша обгортка, яка навчається scikit, тому ви можете писати так:
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
xgb.XGBClassifier()
у другому рядку коду, але stackexchange не дозволяє редагувати менше шести символів ...