Как отметил Даррен Кук в комментариях, ранняя остановка для каждой модели, которую вы строите, и ранняя остановка для поиска по сетке.
Для отдельного GBM ntrees (число деревьев) настраивается с ранней остановкой (то есть используя stopping_tolerance, stopping_rounds, stopping_metric, указанный в алгоритме).Вы можете увидеть это, если откроете поток и посмотрите на график истории выигрышей вашей отдельной модели.Вы увидите, что количество деревьев - это ось X.
Для поиска по сетке у вас есть добавленный слой ваших гиперпараметров.Таким образом, если вы установите ntrees = 100 в своей модели GBM, и вы будете использовать сетку для скорости обучения = [0,01, 0,015], вы создадите две модели: одну с ntrees = 100 и скоростью обучения = 0,01, а вторую модель с ntrees = 100 и обучением.показатель = 0,015.И, например, в первой модели каждая итерация будет иметь разное количество деревьев, в то время как скорость обучения будет фиксированной.
Итак, глядя на ваши конкретные вопросы:
да, это правильно
таблица будет видеть, есть ли улучшениямежду вашей разной скоростью обучения (0,01, 0,015 и т. д.) и максимальной глубиной.Итак, опять то, что вы говорите, правильно.Сетка остановится, если она не увидит каких-либо улучшений с разными скоростями обучения и максимальными значениями глубины (т.е. она не будет продолжать строить новые модели).
Так что здесь вам нужно выделитьмодель и сетка поиска.Отдельная модель прекратит сборку (добавление деревьев), если не увидит улучшения после трех событий скоринга (и здесь ваши learn_rate и max_depth будут исправлены, в то время как ntrees изменились).Затем мы выходим к сетке, сетка прекратит строить новые модели, если она не увидит указанное пользователем улучшение между отдельными построенными моделями.