Время обучения XGBoost слишком велико - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь обучить классификатор XGBoost на Python с помощью пакета xgboost. Я использую значения по умолчанию для всех параметров классификатора, и мой тренировочный набор содержит около 16 000 элементов и 180 000 элементов для каждого элемента. Я не использую GPU для обучения модели, но тем не менее, процесс обучения занял более пяти часов и все еще продолжается. У меня 32 ГБ оперативной памяти и 6-ядерный Intel I7. Я задаюсь вопросом, является ли это нормальным временем для обучения этого классификатора с количеством данных, которые у меня есть, потому что я слышал о людях, обучающих модель за пару минут.

1 Ответ

0 голосов
/ 06 января 2020

Если время обучения имеет значение, тогда можно переключить политику роста деревьев tree_method на hist, что является методом на основе гистограммы. С графическим процессором он должен быть установлен на gpu_hist. Вы можете найти более подробную информацию о его реализации xgboost здесь http://arxiv.org/abs/1603.02754

Это секретный соус, который приводит к супер быстрой тренировке без особых компромиссов в качестве решения. На самом деле обучение на GPU и даже lightGBM et c основаны на методах, основанных на гистограмме, для более быстрой тренировки и последующих итераций / экспериментов, что очень важно во время соревнований типа kaggle с ограниченным временем. hist может сократить время обучения до половины или меньше, а gpu_hist на графическом процессоре может занять несколько минут.

PS: Я бы предложил уменьшить размерность ваших данных (16k X 180k), удалив коррелированные / ранговые корреляционные функции, которые в дальнейшем улучшат не только ваше время тренировки, но и производительность модели.

...