У меня есть несбалансированные данные класса, и я хочу настроить гиперпараметры усиленного тресса с помощью xgboost.
Вопросов
- Есть ли эквивалент для gridsearchcv или randomsearchcv для xgboost?
- Если нет, то каков рекомендуемый подход для настройки параметров xgboost?
machine-learning
cross-validation
xgboost
boosting
GeorgeOfTheRF
источник
источник
xgboost(max.depth)
илиxgb.train(max_depth)
? Использует ли xgboost непоследовательное использование точки и подчеркивания для параметра в разных местах? Или они обращены?Ответы:
Так как интерфейс к
xgboost
in incaret
недавно изменился, вот скрипт, который предоставляет полностью прокомментированное пошаговое руководство по использованиюcaret
для настройкиxgboost
гиперпараметров.Для этого я буду использовать данные тренировок из конкурса Kaggle «Дай мне кредит» .
1. Подгонка
xgboost
моделиВ этом разделе мы:
xgboost
модель с произвольными гиперпараметрамиxgb.cv
)Вот код для этого.
Вот как выглядит тестирование и обучение AUC:
2. Поиск гиперпараметра с использованием
train
Для поиска гиперпараметра мы выполняем следующие шаги:
data.frame
с уникальными комбинациями параметров, для которых мы хотим обученные модели.Вот код, который показывает, как это сделать.
Наконец, вы можете создать пузырьковую диаграмму для AUC по вариантам
eta
иmax_depth
:источник
xgboost
параметров в настоящее время существует, в частности, поддержкаgamma
является новой. Вот полный список поддерживаемых параметров.scale_pose_weight
для несбалансированной классификации. Можете ли вы предоставить подробную информацию о том, как? Спасибо!scale_pos_weight
теперь задокументировано в документации параметров .scale_pos_weight
не является параметром настройки каретки, но вы можете сравнить вручную. В моем случае использование веса оказало незначительный эффект (бинарная классификация,> 20% положительных результатов)Пакет Caret включает в себя xgboost.
Образец вывода
Один недостаток, который я вижу, заключается в том, что другие параметры xgboost, такие как subsample и т. Д., В настоящее время не поддерживаются кареткой.
редактировать
Gamma, colsample_bytree, min_child_weight, subsample и т. Д. Теперь (июнь 2017 г.) могут быть настроены напрямую с помощью Caret. Просто добавьте их в часть сетки приведенного выше кода, чтобы он заработал. Спасибо usεr11852 за выделение в комментарии.
источник
caret
сейчас (февраль-2017) поддерживает дополнительные параметрыgamma
,colsample_bytree
,min_child_weight
иsubsample
. (Таким образом, вы можете эффективно настроить практически все - учитывая время)Я знаю, что это старый вопрос, но я использую метод, отличный от приведенного выше. Я использую функцию BayesianOptimization из пакета Bayesian Optimization, чтобы найти оптимальные параметры. Для этого вы сначала создаете перекрестные проверки, а затем создаете функцию
xgb.cv.bayes
, имеющую в качестве параметров повышающие гиперпараметры, которые вы хотите изменить. В этом примере я настраиваюсьmax.depth, min_child_weight, subsample, colsample_bytree, gamma
. Затем вы вызываетеxgb.cv
эту функцию с гиперпараметрами, установленными во входные параметрыxgb.cv.bayes
. Затем вы звонитеBayesianOptimization
сxgb.cv.bayes
желаемыми диапазонами повышающих гиперпараметров.init_points
число исходных моделей с гиперпараметрами, взятых случайным образом из указанных диапазонов, иn_iter
количество раундов моделей после начальных очков. Функция выводит все параметры усиления и тест AUC.источник
Это старый вопрос, но я подумаю, что поделюсь настройкой параметров xgboost. Первоначально я думал, что буду использовать каретку для этого, но недавно обнаружил проблему с обработкой всех параметров, а также пропущенных значений. Я также рассматривал возможность написания итерационного цикла для различных комбинаций параметров, но хотел, чтобы он работал параллельно и потребовал слишком много времени. Использование gridSearch из пакета NMOF дало лучшее из обоих миров (все параметры, а также параллельная обработка). Вот пример кода для двоичной классификации (работает на Windows и Linux):
источник