XGBoost: полезности, трюки, наблюдения

Буду сюда записывать всякие фишки xgboost.

“Ранняя” остановка обучения модели

Early stoppping rounds – позволяет остановить обучение, если на  протяжении N шагов не было улучшения результата:

bst = xgb.train(params, dtrain, num_rounds, watchlist, early_stopping_rounds=N)

Изменение eta в процессе обучения модели

Один из основных параметров xgboost – eta непосредственно влияет на скорость обучения. Иногда возникает потребность динамически менять этот параметр во время обучения. В этом случае в методе train можно передать аргумент learning_rates. В качестве значения может выступать функция или список.

Например, можно сделать так, чтобы сначала eta была больше, а потом постепенно уменьшалась.

Идея в целом богатая, но не всегда это хорошо влияет на итоговое решение. Грубо говоря, 50 деревьев строятся быстрее, чем 500, но точность результата может быть ниже.

Вывод результатов кросс-валидации через каждые N шагов обучения

Иногда нет смысла выводить промежуточные оценки на каждом шаге обучения. Убирать вывод этой информации совсем тоже не всегда удобно. В этом случае можно использовать параметр verbose_eval=N — в этом случае оценки будут выводиться через каждые N шагов. Очень удобно, когда строится большое количество деревьев.

Sparse матрицы

Иногда xgboost падает по неведомым причинам, если использовать csr_matrix. Где-то читал, что это происходит, если в последней колонке все нули. При этом  csс_matrix не вызывает подобных проблем.

Leave a Reply

Your email address will not be published. Required fields are marked *