Процедура валидации на наборе валидации - НЕ перекрестная валидация в k-кратном порядке - PullRequest
1 голос
/ 23 мая 2019

Я новичок в python и машинном обучении, и у меня возникают трудности с пониманием шага валидации. Хотелось бы получить предложение о том, что делать, если я не хочу использовать перекрестную валидацию k-folds, а простоиспользовать набор проверки.Я читаю вокруг и, похоже, не могу правильно понять перекрестную проверку k-кратности:

  1. Я делю НАЧАЛЬНЫЕ данные на k сгибов, затем тренируюсь на k-1 итестирование слева 1, продолжайте вращаться в обратном направлении, чтобы каждая складка использовалась для тестирования и т. д.

  2. Или я делю НАЧАЛЬНЫЕ данные на данные Train и TEST - затем разделяю данные Train на kсворачивает и выполняет перекрестную проверку, а затем, наконец, проверяет точность невидимых данных TEST?

  3. Как лучшие параметры выбираются при перекрестной проверке k-кратных значений?Применяет ли cross_val_score после возврата списка баллов лучшие параметры на этапе проверки, где точность была лучшей?(Код ниже)

model = svm.SVC(kernel='linear', C=1)
scores = cross_val_score(model, X, y, cv=5)

Или этот шаг должен быть сделан вручную (мной)?Используя gridsearchcv и такие?

В моем случае у меня есть НАЧАЛЬНЫЙ набор данных из 400 000 выборок (скажем, строк) и около 70 объектов (столбцов). Выполнение перекрестной проверки k-кратных значений в моем наборе данных занимает много времени (также, насколько я понимаю, это в основномиспользуется для меньших наборов данных), вместо этого я хотел бы иметь 3 набора данных: обучение (90%), проверка (5%) и тестирование (5%) - проверять эти 5% и настраивать параметры модели на этом шаге.Затем, наконец, проверьте точность на тестовом наборе.Как это происходит?

1 Ответ

1 голос
/ 24 мая 2019

Если у вас есть как данные обучения (помеченные как один), так и тестовые (немаркированные), тогда перекрестная проверка использует сами эти данные обучения, при каждом сгибе ваши данные разделяются на разные данные о поездах и тестах, что больше похоже на второе записанное вами замечание.

Нет, после перекрестной проверки гиперпараметры не будут настроены, вам придется сделать это вручную или с помощью сетки или случайного поиска.

Поскольку вы упоминали, что перекрестная проверка занимает слишком много времени, и вы думаете об использовании набора данных проверки для настройки гиперпараметра, я предлагаю вам пропустить всю эту часть и перебросить ваши данные в Gradient Boosted Trees, вашу часть перекрестной проверки будет автоматически решена, а затем параметры настройки и проверки точности.

Еще лучше предложение выбросить ваши данные в TPOT. Это библиотека Python Automated Machine Learning, которая оптимизирует конвейеры машинного обучения с использованием генетического программирования. При выполнении большого количества итераций вывод будет наилучшим образом оптимизированным кодом с настроенными гиперпараметрами, в основном методом ансамбля, с максимальной точностью, которую вы можете получить. Также упоминается, как выполнялись другие алгоритмы. Это может занять много времени, чтобы закончить даже дольше, чем нейронная сеть, но иногда это стоит.

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