Как разделять набор данных
Как оптимально разделить набор данных на обучающую, валидационную и тестовую выборки?
13 показов
2.6K открытий
У каждого подмножества данных есть цель, от создания модели до обеспечения её производительности:
- Обучающий набор — это подмножество данных, которые я буду использовать для обучения модели.
- Валидационная выборка — используется для контроля процесса обучения. Она поможет предотвратить переобучение и обеспечит более точную настройку входных параметров.
- Тестовый набор — подмножество данных для оценки производительности модели.
Размер и соотношение данных для обучения
Чтобы принять решение о размере каждого подмножества, я часто вижу стандартные правила и соотношения. Сталкиваюсь с разделением по правилу 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)
Выборка
Выборка (sample, set) — конечный набор прецедентов (объектов, случаев, событий, испытуемых, образцов, и т.п.), некоторым способом выбранных из множества всех возможных прецедентов, называемого генеральной совокупностью.
Если исследователь не имеет возможности управлять выбором прецедентов, то обычно предполагается, что выбор прецедентов случаен. Если же выбором прецедентов можно управлять, то возникают задачи оптимального формирования выборки, см. также активное обучение, планирование экспериментов, выборочное обследование.
По каждому прецеденту собираются (измеряются) некоторые данные (data), образующие описание прецедента. Совокупность описаний всех прецедентов выборки является входной информацией для статистического анализа данных, интеллектуального анализа данных, машинного обучения.
Термины выборка (sample, set) и данные (data) взаимозаменяемы; иногда они употребляются вместе как один термин выборка данных (data set). Поэтому анализ данных можно понимать также как анализ конечных выборок. Основные цели анализа данных:
- проверка гипотез относительно имеющейся выборки данных;
- эмпирическая индукция — выявление общих закономерностей, присущих всей генеральной совокупности, по имеющийся выборке данных;
- прогнозирование — формирование статистически обоснованных предсказаний относительно новых данных, которые ещё не наблюдались.
Вероятностная модель порождения данных
Случайная выборка
Вероятностная модель порождения данных предполагает, что выборка из генеральной совокупности формируется случайным образом. Объём (длина) выборки считается произвольной, но фиксированной, неслучайной величиной.
Формально это означает, что с генеральной совокупностью связывается вероятностное пространство , где — множество всех выборок длины , — заданная на этом множестве сигма-алгебра событий, — вероятностная мера, как правило, неизвестная.
Случайная выборка — это последовательность из прецедентов, выбранная из множества согласно вероятностной мере .
Однородная выборка
Выборка называется однородной, если все её прецеденты одинаково распределёны, то есть выбраны из одного и того же распределения .
Независимая выборка
Выборка называется независимой, если вероятностная мера на представима в виде произведения вероятностных мер на , то есть для любой системы подмножеств
Если на существует плотность распределения , то независимость означает, что -мерная плотность распределения на представима в виде произведения одномерных плотностей:
Простая выборка
Простая выборка — это случайная, однородная, независимая выборка (i.i.d. — independent, identically distributed).
Эквивалентное определение: выборка простая, если значения являются реализациями независимых одинаково распределённых случайных величин.
Простая выборка является математической моделью серии независимых опытов. На гипотезу простой выборки существенно опираются многие методы статистического анализа данных и машинного обучения, в частности, большинство статистических тестов, а также оценки обобщающей способности в теории вычислительного обучения.
Также существует множество методов, не предполагающих однородность и/или независимость выборки, в частности, в теории случайных процессов, в прогнозировании временных рядов. Метод максимума правдоподобия позволяет оценивать значения параметров модели по обучающей выборке, в общем случае не требуя, чтобы выборка была однородной и независимой. Однако в случае простых выборок применение метода существенно упрощается.
Обучающая и тестовая выборка
Обучающая выборка (training sample) — выборка, по которой производится настройка (оптимизация параметров) модели зависимости.
Если модель зависимости построена по обучающей выборке , то оценка качества этой модели, сделанная по той же выборке оказывается, как правило, оптимистически смещённой. Это нежелательное явление называют переобучением. На практике оно встречается очень часто. Хорошую эмпирическую оценку качества построенной модели даёт её проверка на независимых данных, которые не использовались для обучения.
Тестовая (или контрольная) выборка (test sample) — выборка, по которой оценивается качество построенной модели. Если обучающая и тестовая выборки независимы, то оценка, сделанная по тестовой выборке, является несмещённой.
Оценку качества, сделанную по тестовой выборке, можно применить для выбора наилучшей модели. Однако тогда она снова окажется оптимистически смещённой. Для получения немсещённой оценки выбранной модели приходится выделять третью выборку.
Проверочная выборка (validation sample) — выборка, по которой осуществляется выбор наилучшей модели из множества моделей, построенных по обучающей выборке.
Выборочный анализ
Выборочное обследование
Выборочный контроль качества
Смотри также
40. Проблемы обобщения: от обучающей выборки к валидационной
Предположим, что вы применяете ML в условиях, когда распределение обучающей и валидационной выборок отличаются. Например, обучающая выборка содержит изображения из Интернета + изображения из мобильного приложения, а тестовая и валидационная выборки только из мобильного приложения. При этом алгоритм работает не очень хорошо: он имеет гораздо более высокую ошибку на валидационной и тестовой выборках, чем хотелось бы. Приведем некоторые возможные причины:
- Алгоритм плохо отрабатывает на тестовой выборке и это связано с проблемой высокого (избегаемого) смещения на распределении обучающей выборки
- Алгоритм имеет высокое качество на обучающей выборке, но не может обобщить свою работу на данные, имеющие аналогичное распределение с обучающей выборкой, которые он раньше не видел. Это случай высокого разброса.
- Алгоритм хорошо обобщает свою работу на новые данные из того же распределения, что и обучающая выборка, но не может справиться (обобщить) на распределение валидационной и тестовой выборки, которые получены из другого распределения. Это говорит о несоответствии данных, возникающем из-за отличия распределения обучающей выборки от распределений валидационной и тестовой выборок
Например, предположим, человеческий уровень распознавания кошек является практически идеальным. Ваш алгоритм относительно него показывает:
- 1% ошибки на обучающей выборке
- 1,5% ошибки для данных, взятых из того же распределения, что и обучающая выборка, но которые алгоритму не показывали при обучении
- 10% ошибки на валидационной и на тестовой выборках
В этом случае явно присутствует проблема несоответствия распределений данных. Для ее решения, можно попытаться приблизить распределение обучающей выборки к распределениям валидационной и тестовой. Ниже будут приведены некоторые идеи, как это можно сделать.
Чтобы определить, какое влияние оказывает каждая из трех проблем, описанных выше, будет полезна еще одна выборка. Вместо того, чтобы предоставлять алгоритму все имеющиеся примеры из обучающей выборки, можно разделить ее на два подмножества: обучающую выборку, используемую для обучения алгоритма и отдельную выборку, которую можно назвать «выборка для валидации обучающей», эту выборку не нужно показывать алгоритму при его обучении.
Теперь у вас есть четыре выборки данных:
- Обучающая выборка. Это данные, на которых будет обучаться алгоритм (изображения из Интернета + изображения из мобильного приложения). Эти данные не обязаны иметь такое же распределение, которое для нас является наиболее важным (распределение валидационной и тестовой выборок).
- Выборка для валидации обучающей: эти данные берутся из того же распределения, что и обучающая выборка (изображения из Интернета + изображения из мобильного приложения). Размер этой выборки обычно меньше, чем размер обучающей выборки; но она должна быть достаточно большой, чтобы позволять оценивать и отслеживать прогресс в обучении нашего алгоритма.
- Валидационная выборка: эта выборка имеет то же распределение, что и тестовая, и отражает распределение данных, качество работы на котором определит успешность приложения. (Например, изображения из мобильного приложения)
- Тестовая выборка: ее распределение совпадает с распределением валидационной выборки. (Изображения из мобильного приложения)
Вооружившись этими четырьмя выборками, можно оценить:
- Ошибки алгоритма на обучающей выборке
- Способность алгоритма к обобщению своей работы с обучающей выборки на данные, имеющие такое же распределение, но сокрытые от алгоритма, посредством «выборки для валидации обучающей».
- Эффективность алгоритма для решения задачи, критичной для приложения, посредством оценки качества его работы на валидационной и тестовой выборках.
Большинство рекомендаций из 5-7 глав по выбору размера валидационной выборки также применимы к принятию решения о размере «выборки для валидации обучающей».
41. Выявление смещения, разброса и несоответствия данных
Допустим люди достигают почти идеального качества (ошибка ≈0%) в задаче обнаружения кошек, и, таким образом, оптимальный уровень ошибки для этой задачи составляет около 0%.
Предположим, у нашего алгоритма:
- Ошибка 1% на обучающей выборке.
- Ошибка 5% на «выборке для валидации обучающей».
- Ошибка 5% на валидационной выборке.
О чем это говорит? Можно сделать вывод, что мы имеем дело с высоким разбросом. Методы уменьшения разброса, описанные ранее, должны помочь повысить качество работы алгоритма.
Теперь предположим, что у алгоритма следующие показатели:
- Ошибка 10% на обучающей выборке.
- Ошибка 11% на «выборке для валидации обучающей».
- Ошибка 12% на валидационной выборке.
Это говорит о том, что у алгоритма высокое избегаемое смешение на обучающей выборке. Т.е. алгоритм плохо работает уже на данных из обучающей выборки. Подходы к уменьшению смещения должны помочь в этом случае.
В обоих приведенных примерах алгоритм страдает только высоким избегаемым смещением или высоким разбросом. Однако, алгоритм может иметь как высокое избегаемое смещения, высокий разброс, так и проблемы с несоответствием данных в выборках.
Рассмотрим еще такую ситуацию:
- Ошибка 10% на обучающей выборке.
- Ошибка 11% на «выборке для валидации обучающей».
- Ошибка 20% на валидационной выборке.
В данном случае у алгоритма высокое избегаемое смещение и дополнительно мы имеем дело с несоответствием данных. Однако, нет особых проблем с разбросом на обучающей выборке.
Может быть будет проще понять, как различные типы ошибок связаны друг с другом, если представить их в виде таблицы:
Продолжая рассмотрение примера с детектором кошек, расположим на оси Х два разных распределения данных. На оси Y расположим три типа ошибок: ошибка человека, ошибка на примерах, используемых для обучения алгоритма, и ошибка в примерах, на которых алгоритм не обучался. Мы можем заполнить поля значениями различных типов ошибок, которые мы определили в предыдущей главе.
При желании можно заполнить оставшиеся два поля в этой таблице. Можно заполнить поле в верхнем правом углу (качество человека на изображениях, полученных из мобильного приложения), например, попросив некоторых подписчиков разметить изображения из вашего мобильного детектора котов и измерить их ошибку. Можно заполнить следующую клетку в таблице, взяв изображения кошек из мобильного приложения (распределение B) и поместив их небольшую часть в обучающую выборку, чтобы нейронная сеть обучалась на нем тоже. Затем нужно измерить ошибку алгоритма на этом подмножестве данных. Заполнение приведенных двух дополнительных клеток таблицы даст понимание того, как алгоритм отрабатывает на этих двух различными распределениях данных (Распределение A и B).
Определив, с какими типами ошибок алгоритм испытывает наибольшие трудности, можно более обосновано решить, следует ли сосредоточиться на уменьшении смещения, уменьшении разброса или нужно озадачиться борьбой с несоответствием данных.
