Как выполняется перекрестная проверка и как конкретно GridSearchCV ()? - PullRequest
2 голосов
/ 15 октября 2019

Как GridSearchCV () (и или RandomizedSearchCV () ) реализовано в Scikit? Мне интересно следующее: при использовании одного из этих методов как учитываются следующие аспекты:

  • набор проверки
  • выбор модели
  • настройка гиперпараметра
  • прогноз

? Вот картинка, которая суммирует мою путаницу:

CV

Что происходит, когда и как часто? Может быть, для простоты, давайте предположим, что в качестве нашей модели выступает единственная нейронная сеть. Мое понимание до сих пор:

На первой итерации модель помещается в тренировочную складку, разделенную на разные складки. Здесь я уже борюсь: тренируется ли модель в одиночном сгибе, а затем проверяется в проверочном сгибе? Что происходит потом со следующим сгибом? Сохраняет ли модель веса, достигнутые в первом тренировочном цикле, или она будет повторно инициализирована для следующего тренировочного цикла?

Если быть более точным: на первой итерации модель подгоняется четыре раза и тестируется четыре раза на множестве валидации независимо от всех сгибов?

Когда начинается следующая итерация, модельне хранит информацию с первой итерации, верно? Таким образом, все итерации и все сгибы не зависят друг от друга? Как здесь настраиваются гиперпараметры?

В приведенном выше примере всего 25 сгибов. Подходит и проверяется ли модель с постоянным набором гиперпараметров 20 раз? Скажем, у нас есть два гиперпараметра для настройки: скорость обучения и отсева, оба с двумя уровнями:

  • learning_rate = [0,3, 0,6] и
  • dropout_rate = [0,4, 0,8].

Подойдет ли нейронная сеть 80 раз? И когда имеется не только одна модель, но, например, две модели (нейронная сеть и случайный лес), вся процедура будет выполнена дважды?

Есть ли возможность увидеть, сколько сгибов GridSearchCV() будет учитывать?

Я видел Выполняет ли GridSearchCV перекрестную проверку? , Помощь модели с использованием Scikit-learn при использовании GridSearch и scikit-learn GridSearchCV с несколькими повторениями но я не вижу четкого и точного ответа на мои вопросы.

1 Ответ

1 голос
/ 15 октября 2019

Таким образом, метод k-folds:

вы разбиваете свой тренировочный набор на n частей (k сгибов) для примера 5. Первую часть вы берете в качестве проверочного набора, а 4 другие части - в качестве обучающего набора,Вы тренируетесь, и это дает вам тренировку / резюме. Вы делаете это 5 (количество сгибов) раз, каждый сгиб становится набором проверки, а остальные - обучающим набором. В конце вы делаете среднее значение производительности, чтобы получить производительность вашей модели. Это для k-fold.

Теперь GridSearchCV - это гиперпараметр, который использует метод k-folds. Принцип состоит в том, что вы даете gridsearch словарь со всеми гиперпараметрами, которые вы хотите протестировать, затем он проверяет все гиперпараметры (словарь) и выбирает лучший набор гиперпараметров (те, которые имеют лучшую производительность модели cv). Это может занять очень много времени.

Вы передаете модель (оценщик) в gridsearch, набор параметров и, если хотите, количество k-кратных сгибов.

Пример:

GridSearchCV(SVC(), parameters, cv = 5)

, где SVC() - оценщик, параметры - ваш словарь гиперпараметров, а cv - число сгибов.

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