Эффективное использование инфраструктуры оптимизации гиперпараметров без переоснащения - проблемы регуляризации - PullRequest
0 голосов
/ 23 марта 2020

Я использую XGBOOST с RandomGridSearchCV и GridSearchCV с приличным успехом.

Мои тренировочные данные состоят из примерно 100 тыс. Строк, 58 столбцов, половина из которых являются категориальными табличными данными, и я выдал 20 тыс. Строк для тестовых данных.

Со всей работой, которую я вложил Я хотел упростить процесс немного больше, , поэтому я использовал Optuna.

С Gridsearch я использовал значения по умолчанию для Lambda (1.0) и gamma (0) и смог ударить 0,86 MAE по данным испытаний. (Ранняя остановка выполняется около 4000 итераций)

Я позволил Optuna выбрать многие из моих параметров, включая max_depth, lambda, gamma, colsample (s), я просто поддерживал стабильность LR на уровне 0,003 и num_boost_rounds до 100 и по умолчанию альфа, используя xgb.cv с 5 сгибами.

Я решил со всеми строками и перекрестной проверкой, что будет трудно переопределить.

Теперь каждый раз, Optuna выберет Lambda 0 и Alpha 0, а также большое число max_depth , которое, как я считаю, переопределяет данные поезда.

Результаты тестов с Optuna и без регуляризации: .93 (против .86 используя GridSearch)

Теперь кажется, что процесс настройки регуляризации является чрезвычайно сложным процессом.

Мне бы пришлось самому установить гамму и лямбду (и даже альфа), а затем позволить Оптуне (или даже gridsearch в этом отношении) найдите лучшие параметры и НАДЕЖДА, что моя регуляризация, которую я установил сам, не закончена или не соответствует , затем вручную попробуйте несколько комбинаций для большего количества регуляризация.

Итак, что должно быть на первом месте? Сохраняется ли регуляризация при любой скорости обучения? Должен ли я просто оставить все регуляризации настройки по умолчанию? Должен ли я смотреть на графики, сравнивающие поезд и проверку, и просто смотреть на это? Должен ли я просто настраивать регуляризацию на небольшом подмножестве моих данных, например на 10 тыс. Строк? Или, возможно, изменить num_boost_rounds со 100 на 4000, на которых я раньше остановился с поиском по сетке (это заняло бы вечность)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...