XGBOOST: придайте большее значение последним образцам

datascience.stackexchange https://datascience.stackexchange.com/questions/9488

  •  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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с datascience.stackexchange
scroll top