xgboost: przywiązuj większą wagę do ostatnich próbek


22

Czy istnieje sposób na nadanie większego znaczenia punktom, które są nowsze podczas analizy danych za pomocą xgboost?

Odpowiedzi:


9

Możesz spróbować zbudować wiele modeli xgboost, przy czym niektóre z nich ograniczają się do nowszych danych, a następnie zważyć wyniki razem. Innym pomysłem byłoby stworzenie zindywidualizowanej miary oceny, która będzie silniej karać ostatnie punkty, co dałoby im większe znaczenie.


4
OP może po prostu nadać większą wagę próbkom nowszym obserwacjom. Większość pakietów na to pozwala, podobnie jak xgboost.
— Ricardo Cruz,

30

Po prostu dodaj wagi na podstawie etykiet czasu do xgb.DMatrix. Poniższy przykład jest napisany w R, ale ta sama zasada dotyczy xgboost w Pythonie lub Julii.

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)

Dzięki za odpowiedź - naprawdę warto zobaczyć zakodowany przykład. Jak wielkość współczynników funkcji ważenia wpływa na model? Przeglądałem dokumenty xgboost, ale nie mogę znaleźć informacji na temat znaczenia tych wartości liczbowych.
— kilodżule,

nie znałem tej sztuczki. w funkcji xgboost znajduje się mały smakołyk pod funkcją setinfo(), choć nie jest on zbyt opisowy
— TBSRounder

12

W Pythonie masz fajne opakowanie do nauki scikit, dzięki czemu możesz pisać tak:

import xgboost as xgb
exgb_classifier = xgb.XGBClassifier()
exgb_classifier.fit(X, y, sample_weight=sample_weights_data)

Więcej informacji można uzyskać z tego: http://xgboost.readthedocs.io/en/latest/python/python_api.html#xgboost.XGBClassifier.fit


Wish for R caret też to ma wbudowane ..
— pauljeba

1
powinien znajdować się xgb.XGBClassifier()w drugim wierszu kodu, ale stackexchange nie pozwala na edycję mniej niż sześciu znaków ...
— Andre Holzner
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.