Пользовательская функция потерь XGBoost для взвешенной классификации - PullRequest
0 голосов
/ 04 ноября 2019

Я создаю модель хеджирования рынка. Поэтому идея заключается в том, чтобы застраховаться, если мы уверены в откате рынка (отрицательная недельная доходность). Я использовал XGBClassifier, чтобы предсказать, будет ли рынок на следующей неделе падать (Y_true = 1) или расти (Y_true = 0). Во время обучения я смещал модель, чтобы учить большие движения лучше, чем меньшие, давая величину еженедельного возврата как sample_weights в sklearn-версии XGBoost.

Идея в том, что мы не слишком беспокоимся о том, чтобы не классифицировать меньшую недельную доходность (порядка менее 1-2%), но мы хотим быть более уверенными в больших движениях.

До сих пор я пытался использовать байесовский поиск по сетке (с использованием hyperopt), чтобы оптимизировать широкий диапазон параметров XGBClassifier ('reg_lambda', 'reg_alpha', 'min_child_weight', 'max_depth', 'colsample_bytree', 'n_estimators', 'gamma', 'subsample'), чтобы минимизировать brier_score_loss.

Но я полагаю, что я не передаю эту информацию о весе в процесс повышения (т. Е. Веса, предоставленные для неправильно классифицированных значений в следующем дереве). Есть ли какая-нибудь функция потерь вместо общего (objective: 'binary:logistic', booster: 'gbtree'), которая лучше подходит моей цели?

...