xgboost: уделять больше внимания последним образцам


22

Есть ли способ придать большее значение пунктам, которые были более свежими при анализе данных с помощью xgboost?

Ответы:


9

Вы можете попробовать создать несколько моделей xgboost, некоторые из которых будут ограничены более свежими данными, а затем взвесить эти результаты вместе. Другая идея заключается в том, чтобы создать индивидуальную метрику оценки, которая в большей степени штрафует недавние баллы, что придало бы им большую важность.


4
ФП может просто дать более высокие веса выборки более поздним наблюдениям. Большинство пакетов позволяют это, как и xgboost.
Рикардо Круз

30

Просто добавьте веса, основанные на ваших метках времени, в ваш 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)

Спасибо за ваш ответ - очень полезно увидеть закодированный пример. Как величина коэффициентов весовой функции влияет на модель? Я просмотрел документы xgboost, но не могу найти информацию о значении этих числовых значений.
килоджоулей

не знал этого трюка, милая. в документации по xgboost под функцией есть небольшой кусочек setinfo(), хотя это не очень
наглядно

12

На 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


Желание для R карета это тоже
встроено

1
это должно быть xgb.XGBClassifier()во второй строке кода, но stackexchange не позволяет редактировать менее шести символов ...
Andre Holzner
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.