ВСТУПЛЕНИЕ

Зачем нужно разделять данные?

Вы же не хотите, чтобы ваша модель заучивалась на основе обучающих данных и плохо работала после развертывания в производственной среде. Вам нужен механизм для оценки того, насколько хорошо ваша модель обобщает. Следовательно, вам необходимо разделить входные данные на подмножества для обучения, проверки и тестирования, чтобы предотвратить переоснащение вашей модели и эффективно оценить вашу модель.

В этом посте мы рассмотрим следующее.

  1. Краткое определение наборов данных для обучения, проверки и тестирования
  2. Готовый к использованию код для создания этих наборов данных (2 метода)
  3. Понимать науку, стоящую за коэффициентом разделения набора данных

Определение разделения поезд-валид-тест

Разделение Train-Valid-Test - это метод оценки производительности вашей модели машинного обучения, будь то классификация или регрессия. Вы берете данный набор данных и делите его на три подмножества. Краткое описание роли каждого из этих наборов данных приводится ниже.

Набор данных поезда

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

Действительный набор данных

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

Набор тестовых данных

  • Набор данных, используемых для обеспечения объективной оценки окончательной модели, соответствующей набору обучающих данных.

Прочтите эту статью Джейсона Браунли, если хотите узнать больше о том, как эксперты в области машинного обучения определяют наборы данных для обучения, тестирования и проверки. Ссылка в разделах ссылок ниже # 1

Готовые к использованию фрагменты кода

В этом посте мы увидим два способа разделения данных на обучающий, действительный и тестовый набор:

  1. Случайное разделение
  2. Расщепление с использованием временной составляющей

1. Случайное разделение

Невозможно оценить прогнозную эффективность модели с теми же данными, которые вы использовали для обучения. Было бы лучше, если бы вы оценивали модель с помощью новых данных, которые модель еще не видела. Случайное разделение данных - наиболее часто используемый метод для такой объективной оценки.

i. Использование Sklearn → ‘train_test_split’

В приведенном ниже фрагменте кода вы узнаете, как дважды использовать train_test_split для создания поезда | действительный | тестовый набор данных наших желаемых пропорций.

ii. Использование Fast_ml → ‘train_valid_test_split’

В приведенном ниже фрагменте кода вы узнаете, как использовать train_valid_test_split для создания поезда | действительный | тестовый набор данных наших желаемых пропорций в одной строке кода.

2) Расщепление с использованием временной составляющей

Вы можете послушать Джереми Ховарда в его лекциях fast.ai по машинному обучению: Введение в машинное обучение для программистов. В Уроке 3 он говорит о , что делает хороший набор проверки, и мы используем это обсуждение, чтобы выбрать набор проверки для этих новых данных. №2

Он приводит пример: «Допустим, вы строите модель для прогнозирования продаж в следующем месяце. И если у вас нет возможности узнать, хороша ли созданная вами модель для прогнозирования продаж на месяц вперед, тогда у вас нет возможности узнать, когда вы запускаете модель в производство, будет ли она хороша ». №3

Использование этой временной переменной - более надежный способ разделения наборов данных всякий раз, когда набор данных включает переменную даты, и мы хотим что-то спрогнозировать в будущем. Следовательно, мы должны использовать последние образцы для создания набора данных для проверки и тестирования. Основная идея состоит в том, чтобы всегда выбирать подмножество выборок, достоверно представляющих данные, которые наша модель получит впоследствии (независимо от того, сталкиваемся ли мы с реальной проблемой или соревнованием Kaggle).

i. Собственный код

В приведенном ниже фрагменте кода вы узнаете, как написать собственный код для создания поезда | действительный | тестовый набор данных наших желаемых пропорций после сортировки данных. Вы можете использовать этот код сразу после небольших изменений.

ii. Использование Fast_ml → ‘train_valid_test_split’

В приведенном ниже фрагменте кода вы узнаете, как использовать train_valid_test_split для создания поезда | действительный | тестовый набор данных наших желаемых пропорций после сортировки данных. И все это в одной строчке кода.

Наука, лежащая в основе коэффициента разделения набора данных

Часто спрашивают, в какой пропорции разбить набор данных на наборы для обучения, проверки и тестирования?

Это решение в основном зависит от двух вещей. Во-первых, общее количество выборок в ваших данных, а во-вторых, в реальной модели, которую вы обучаете.

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

Ссылки

№ 1 https://machinelearningmaster.com/difference-test-validation-datasets/ № 2 https://www.fast.ai/2018/09/26/ml-launch/
№ 3 Https://www.youtube.com/watch?v=YSFG_W8JxBo

Спасибо за прочтение!!

Ноутбук с полнофункциональным кодом доступен по следующему адресу: