Как GridSearchCV () (и или RandomizedSearchCV () ) реализовано в Scikit? Мне интересно следующее: при использовании одного из этих методов как учитываются следующие аспекты:
- набор проверки
- выбор модели
- настройка гиперпараметра
- прогноз
? Вот картинка, которая суммирует мою путаницу:
Что происходит, когда и как часто? Может быть, для простоты, давайте предположим, что в качестве нашей модели выступает единственная нейронная сеть. Мое понимание до сих пор:
На первой итерации модель помещается в тренировочную складку, разделенную на разные складки. Здесь я уже борюсь: тренируется ли модель в одиночном сгибе, а затем проверяется в проверочном сгибе? Что происходит потом со следующим сгибом? Сохраняет ли модель веса, достигнутые в первом тренировочном цикле, или она будет повторно инициализирована для следующего тренировочного цикла?
Если быть более точным: на первой итерации модель подгоняется четыре раза и тестируется четыре раза на множестве валидации независимо от всех сгибов?
Когда начинается следующая итерация, модельне хранит информацию с первой итерации, верно? Таким образом, все итерации и все сгибы не зависят друг от друга? Как здесь настраиваются гиперпараметры?
В приведенном выше примере всего 25 сгибов. Подходит и проверяется ли модель с постоянным набором гиперпараметров 20 раз? Скажем, у нас есть два гиперпараметра для настройки: скорость обучения и отсева, оба с двумя уровнями:
- learning_rate = [0,3, 0,6] и
- dropout_rate = [0,4, 0,8].
Подойдет ли нейронная сеть 80 раз? И когда имеется не только одна модель, но, например, две модели (нейронная сеть и случайный лес), вся процедура будет выполнена дважды?
Есть ли возможность увидеть, сколько сгибов GridSearchCV()
будет учитывать?
Я видел Выполняет ли GridSearchCV перекрестную проверку? , Помощь модели с использованием Scikit-learn при использовании GridSearch и scikit-learn GridSearchCV с несколькими повторениями но я не вижу четкого и точного ответа на мои вопросы.