Рандомизация

Практические соображения

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

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

  • Запустите генераторы случайных чисел (ГСЧ). Заполнение гарантирует, что RNG выводит одни и те же значения в одном и том же порядке каждый раз, когда вы его запускаете, воссоздавая ваш набор данных.
  • Используйте инвариантные хеш-ключи. Хеширование — это распространенный способ разделения или выборки данных. Вы можете хэшировать каждый пример и использовать полученное целое число, чтобы решить, в какое разделение поместить пример. Входные данные для вашей хеш-функции не должны меняться каждый раз, когда вы запускаете программу генерации данных. Не используйте текущее время или случайное число в своем хэше, например, если вы хотите воссоздать свои хэши по запросу.

Предыдущие подходы применимы как к выборке, так и к разбиению данных.

Рекомендации по хешированию

Представьте снова, что вы собираете поисковые запросы и используете хеширование для включения или исключения запросов. Если хеш-ключ использовал только запрос, то в данных за несколько дней вы либо всегда будете включать этот запрос, либо всегда будете исключать его. Всегда включать или всегда исключать запрос — это плохо, потому что:

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

Вместо этого вы можете хэшировать запрос + дату, что приведет к разному хешированию каждый день.

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