Перейти к содержимому

Чем отличается тестовая выборка от валидационной

  • автор:

Как разделять набор данных

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

У каждого подмножества данных есть цель, от создания модели до обеспечения её производительности:

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

Размер и соотношение данных для обучения

Чтобы принять решение о размере каждого подмножества, я часто вижу стандартные правила и соотношения. Сталкиваюсь с разделением по правилу 80-20 (80 % для тренировочного сплита, 20% для тестового сплита) или по правилу 70-20-10 (70% для обучения, 20% для проверки, 10% для тестирования) и т.д.

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

В BigQuery, как правило, можно создать только подмножество для обучения и тестирования, потому что проверка может быть выполнена при создании модели с DATA_SPLIT опцией.

Прежде чем разделить набор данных, необходимо знать о некоторых распространённых ловушках:

  • Низкокачественные данные: если входные данные, использованные для создания вашей модели, имеют выбросы, это скорее всего негативно повлияет на качество модели.
  • Переобучение: когда входных данных недостаточно, но построенная модель хорошо объясняет параметры из обучающей выборки, то считается, что любой выброс или колебания приводят к недостоверным прогнозам.
  • Несбалансированный набор данных: представьте, что вы хотите обучить модель, которая предсказывает покупку клиента, но у вас есть 500 тысяч потенциальных покупателей и 300 покупателей. Для начала нужно создать более равный набор данных (используя технику повторной выборки). Исследовательский анализ данных (EDA) поможет выявить несбалансированные данные.
  • Утечка данных: означает, что входные данные были изменены (масштабированы, преобразованы) перед созданием обучающего набора данных или во время их разделения.

Разделение набора данных с помощью SQL

Для эксперимента у меня есть следующий набор данных, состоящий из 11 тыс. строк и трёх полей идентификатора заказа, даты и связанного значения заказа.

Разделю эту таблицу на обучающую и тестовую подгруппы.

Выбор правильного столбца для разделения

Чтобы сделать правильное разделение, используйте один столбец, который отличает каждую строку вашей базовой таблицы. В противном случае может быть трудно создать равномерно распределённое разделение.

Чтобы добиться уникальности, есть несколько вариантов в практических примерах:

  • Создать новое поле с уникальными значениями (например, функция генератора случайных чисел, такая как RAND()или UUID())
  • Создать хеш одного уже уникального поля или хеш комбинации полей, которая создает уникальный идентификатор строки

Для второго варианта наиболее распространенной хеш-функцией, является FARM_FINGERPRINT().

Почему именно этот, а не MD5() или SHA()?

Это обусловлено двумя особенностями. Во-первых, он всегда даёт одни и те же результаты для одних и тех же входных данных, а во-вторых, он возвращает INT64 значение (число, а не комбинацию чисел и символов), которым можно управлять с помощью других математических функций, например, MOD () для получения коэффициента разделения.

Создайте уникальный идентификатор строки

Чтобы создать уникальный идентификатор строки, использую FARM_FINGERPRINT() функцию:

WITH base_table AS ( SELECT * FROM `datastic.train_test_split.base_table`) — Main Query SELECT *, FARM_FINGERPRINT(order_id) AS hash_value_order_id, TO_JSON_STRING(bt) AS full_json_row, FARM_FINGERPRINT(TO_JSON_STRING(bt)) AS hash_value_full_row, MOD(FARM_FINGERPRINT(order_id), 10) AS hash_mod, ABS(MOD(FARM_FINGERPRINT(order_id), 10)) AS hash_abs_mod FROM base_table bt

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

Влияние хеш-функции и функции по модулю на нашу базовую таблицу.

Вопросы и ответы

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

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

В чем преимущества машинного обучения?

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

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

Какой объем данных необходим для машинного обучения?

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

Что такое обучающая, валидационная и тестовая выборки?

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

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

«Тестовая выборка» — это набор данных, который не используется непосредственно в процессе обучения модели или для подбора гиперпараметров, однако позволяет протестировать модель и является контрольным.

Какие медицинские задачи можно решать с помощью машинного обучения?

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

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

© ФГБУ «НИИ гриппа им. А.А. Смородинцева» Минздрава России, 2020

197376 Санкт-Петербург ул. проф. Попова 15/17

Телефон: +7 (812) 499–15–90 (доб. 1661)

Факс: +7 (812) 499–15–90 (доб. 1661)

40. Проблемы обобщения: от обучающей выборки к валидационной

Предположим, что вы применяете ML в условиях, когда распределение обучающей и валидационной выборок отличаются. Например, обучающая выборка содержит изображения из Интернета + изображения из мобильного приложения, а тестовая и валидационная выборки только из мобильного приложения. При этом алгоритм работает не очень хорошо: он имеет гораздо более высокую ошибку на валидационной и тестовой выборках, чем хотелось бы. Приведем некоторые возможные причины:

  1. Алгоритм плохо отрабатывает на тестовой выборке и это связано с проблемой высокого (избегаемого) смещения на распределении обучающей выборки
  2. Алгоритм имеет высокое качество на обучающей выборке, но не может обобщить свою работу на данные, имеющие аналогичное распределение с обучающей выборкой, которые он раньше не видел. Это случай высокого разброса.
  3. Алгоритм хорошо обобщает свою работу на новые данные из того же распределения, что и обучающая выборка, но не может справиться (обобщить) на распределение валидационной и тестовой выборки, которые получены из другого распределения. Это говорит о несоответствии данных, возникающем из-за отличия распределения обучающей выборки от распределений валидационной и тестовой выборок

Например, предположим, человеческий уровень распознавания кошек является практически идеальным. Ваш алгоритм относительно него показывает:

  • 1% ошибки на обучающей выборке
  • 1,5% ошибки для данных, взятых из того же распределения, что и обучающая выборка, но которые алгоритму не показывали при обучении
  • 10% ошибки на валидационной и на тестовой выборках

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

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

Теперь у вас есть четыре выборки данных:

  • Обучающая выборка. Это данные, на которых будет обучаться алгоритм (изображения из Интернета + изображения из мобильного приложения). Эти данные не обязаны иметь такое же распределение, которое для нас является наиболее важным (распределение валидационной и тестовой выборок).
  • Выборка для валидации обучающей: эти данные берутся из того же распределения, что и обучающая выборка (изображения из Интернета + изображения из мобильного приложения). Размер этой выборки обычно меньше, чем размер обучающей выборки; но она должна быть достаточно большой, чтобы позволять оценивать и отслеживать прогресс в обучении нашего алгоритма.
  • Валидационная выборка: эта выборка имеет то же распределение, что и тестовая, и отражает распределение данных, качество работы на котором определит успешность приложения. (Например, изображения из мобильного приложения)
  • Тестовая выборка: ее распределение совпадает с распределением валидационной выборки. (Изображения из мобильного приложения)

Вооружившись этими четырьмя выборками, можно оценить:

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

Большинство рекомендаций из 5-7 глав по выбору размера валидационной выборки также применимы к принятию решения о размере «выборки для валидации обучающей».

41. Выявление смещения, разброса и несоответствия данных

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

Предположим, у нашего алгоритма:

  • Ошибка 1% на обучающей выборке.
  • Ошибка 5% на «выборке для валидации обучающей».
  • Ошибка 5% на валидационной выборке.

О чем это говорит? Можно сделать вывод, что мы имеем дело с высоким разбросом. Методы уменьшения разброса, описанные ранее, должны помочь повысить качество работы алгоритма.
Теперь предположим, что у алгоритма следующие показатели:

  • Ошибка 10% на обучающей выборке.
  • Ошибка 11% на «выборке для валидации обучающей».
  • Ошибка 12% на валидационной выборке.

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

В обоих приведенных примерах алгоритм страдает только высоким избегаемым смещением или высоким разбросом. Однако, алгоритм может иметь как высокое избегаемое смещения, высокий разброс, так и проблемы с несоответствием данных в выборках.
Рассмотрим еще такую ситуацию:

  • Ошибка 10% на обучающей выборке.
  • Ошибка 11% на «выборке для валидации обучающей».
  • Ошибка 20% на валидационной выборке.

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

image

Продолжая рассмотрение примера с детектором кошек, расположим на оси Х два разных распределения данных. На оси Y расположим три типа ошибок: ошибка человека, ошибка на примерах, используемых для обучения алгоритма, и ошибка в примерах, на которых алгоритм не обучался. Мы можем заполнить поля значениями различных типов ошибок, которые мы определили в предыдущей главе.

При желании можно заполнить оставшиеся два поля в этой таблице. Можно заполнить поле в верхнем правом углу (качество человека на изображениях, полученных из мобильного приложения), например, попросив некоторых подписчиков разметить изображения из вашего мобильного детектора котов и измерить их ошибку. Можно заполнить следующую клетку в таблице, взяв изображения кошек из мобильного приложения (распределение B) и поместив их небольшую часть в обучающую выборку, чтобы нейронная сеть обучалась на нем тоже. Затем нужно измерить ошибку алгоритма на этом подмножестве данных. Заполнение приведенных двух дополнительных клеток таблицы даст понимание того, как алгоритм отрабатывает на этих двух различными распределениях данных (Распределение A и B).

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

Какая разница между валидационным и тестовым наборами данных?

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

  • Вопрос задан 22 июл. 2023
  • 322 просмотра

Комментировать
Решения вопроса 0
Ответы на вопрос 2

Maksim_64

Data Analyst

Смотри в теории машинного обучения есть такая важная тема как Resampling Methods. Это методы случайной выборки из данных которые у тебя есть. Есть два основных это Cross Validation и Bootstrap. Обычно во всяких обучающих материалах используется Cross Validation да и на практике он тоже очень популярен. Что он из себя представляет мы берем например делим случайным образом датасет на 5 частей. Сначала треним на 4 потом тестим на одном что остался, потом на других 4 и тестим на одном что остался и т.д. Так вот каждый такой набор (на котором мы тестим) называется валидационным набором. Например наша метрика MSE мы получим 5 MSE по каждому валидационному набору потом обычно берут среднее по ним.

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

Используют и то и то. Это инженерное решение и ты будешь видеть оба подхода. Ну и на каких то обучающих историях, ты можешь увидеть отсутствие кросс-валидации и только разбиение train_test_split.

В идеале все выглядит вот так. Единственное существует огромное количество разных кросс-валидаций.

64bcbf8e217a9092904980.png

Это пример где кросс-валидация используется для тюнинга гиперпараметров, но точно также она будет использоваться и для других целей, каждый синий Fold это и есть валидационный набор.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

https://kapelnicza.vyvod-iz-zapoya-na-domu-voronezh.ru/