В чем разница между набором тестов и набором валидации?

431

Я нахожу это странным, когда использую набор инструментов нейронной сети в Matlab.
Он разделил необработанные данные на три части:

  1. Обучающий набор
  2. проверочный набор
  3. тестовый набор

Я заметил, что во многих алгоритмах обучения или обучения данные часто делятся на 2 части: тренировочный набор и тестовый набор.

Мои вопросы:

  1. В чем разница между набором валидации и тестовым набором?
  2. Действительно ли набор валидации специфичен для нейронной сети? Или это необязательно.
  3. Чтобы пойти дальше, есть ли разница между проверкой и тестированием в контексте машинного обучения?
xiaohan2012
источник
56
Ответ на этот вопрос содержится в книге « Элементы статистического обучения», стр. 222. Набор проверки используется для выбора модели, тестовый набор для окончательной модели (модель, которая была выбрана в процессе выбора) - ошибка прогнозирования.
mpiktas
@mpiktas Вы имеете в виду главу «Оценка и отбор моделей»?
Селдор
2
Да. Номер страницы был из 5-го печатного издания.
mpiktas
13
@mpiktas на месте. Вот актуальный текст:The training set is used to fit the models; the validation set is used to estimate prediction error for model selection; the test set is used for assessment of the generalization error of the final chosen model. Ideally, the test set should be kept in a “vault,” and be brought out only at the end of the data analysis.
Арун
1
Мне также нравится объяснение Джейсона Браунли .
Delrocco

Ответы:

254

Обычно для обучения под надзором требуется два типа наборов данных:

  1. В одном наборе данных (ваш «золотой стандарт») у вас есть входные данные вместе с правильным / ожидаемым результатом. Этот набор данных обычно должным образом готовится людьми или путем сбора некоторых данных полуавтоматическим способом. Но важно, чтобы у вас был ожидаемый результат для каждой строки данных, потому что это необходимо для обучения под наблюдением.

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

При выполнении машинного обучения вы делаете следующее:

  1. Фаза обучения: вы представляете свои данные из своего «золотого стандарта» и обучаете свою модель, соединяя входные данные с ожидаемыми выходными данными.
  2. Этап валидации / тестирования: чтобы оценить, насколько хорошо обучена ваша модель (это зависит от размера ваших данных, значения, которое вы хотели бы предсказать, ввести и т. Д.), И оценить свойства модели (средняя ошибка для числовых предикторов, ошибки классификации для классификаторов, отзыв и точность для ИК-моделей и т. д.)
  3. Этап применения: теперь вы применяете свою недавно разработанную модель к реальным данным и получаете результаты. Поскольку у вас обычно нет эталонного значения в данных этого типа (в противном случае, зачем вам нужна ваша модель?), Вы можете только строить предположения о качестве выходных данных вашей модели, используя результаты фазы проверки.

Этап проверки часто делится на две части :

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

Отсюда и разделение на 25/25/25.

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

Смотрите также этот вопрос .

Александр Галкин
источник
21
Почему бы мне не выбрать самую эффективную модель, основанную на наборе тестов, полностью избавившись от набора для проверки?
Себастьян Граф
4
Это из-за переоснащения? Или потому, что нам нужна независимая статистика, основанная на результатах теста, просто для оценки ошибок?
Себастьян Граф
12
@Sebastian [Если вы используете только набор тестов:] «Ошибка набора тестов окончательно выбранной модели будет недооценивать истинную ошибку теста, иногда значительно» [Hastie et al]
user695652
23
Набор проверки часто используется для настройки гиперпараметров. Например, в сообществе глубинного обучения настройка размера сетевого уровня, номера скрытых единиц,
условия
2
Как правильно разделить наборы? Должен ли выбор быть случайным? Что делать, если у вас есть фотографии, которые похожи? Не повредит ли это вашей способности обобщать? Если у вас есть два набора, взятых в разных местах, не лучше ли взять один в качестве тренировочного набора, а другой - в качестве тестового набора?
Йонатан Симсон
263

Обучающий набор: набор примеров, используемых для обучения: подгонка параметров классификатора. В случае многослойного персептрона (MLP) мы использовали бы обучающий набор, чтобы найти «оптимальные» веса с помощью правила обратной поддержки.

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

Тестовый набор: набор примеров, используемых только для оценки эффективности полностью обученного классификатора. В случае MLP мы будем использовать тест для оценки частоты ошибок после того, как выберем окончательную модель (размер MLP и фактические веса). После оценки окончательная модель на тестовом наборе, ВЫ НЕ ДОЛЖНЫ настраивать модель дальше!

Почему отдельные наборы тестов и проверок? Оценка частоты ошибок окончательной модели на данных проверки будет смещена (меньше, чем истинная частота ошибок), поскольку набор проверки используется для выбора окончательной модели. После оценки окончательной модели на тестовом наборе ВЫ НЕ ДОЛЖНЫ настраивать модель. в дальнейшем!

Источник: Введение в анализ образов, Рикардо Гутьеррес-ОсунаТехас A & M University, Техасский A & M University

мохсен наджафзаде
источник
42
+1 за "ВЫ НЕ ДОЛЖНЫ настраивать модель дальше!"
Stmax
6
В чем разница между «подгонкой параметров» и «настройкой параметров»?
Метариат
18
@stmax Не для того, чтобы быть педантичным, но как только у нас будет последняя ошибка теста, и мы НЕ удовлетворены результатом, что мы будем делать, если мы не сможем настроить нашу модель дальше? ... Я часто задавался вопросом об этом случае.
Спейси
5
@Tarantula Вы можете продолжить настройку модели, но вам нужно будет собрать новый набор тестов. Конечно, никто этого не делает;) но нарушение этого (особенно когда вы повторяете это несколько раз) может привести к тому, что ваша модель будет соответствовать тестовому набору, что приведет к нереалистичным / слишком оптимистичным результатам.
Stmax
4
Я думаю, что эта номенклатура сбивает с толку. Вы правильно сказали «ВЫ НЕ ДОЛЖНЫ настраивать модель дальше» после использования тестового набора, но ... какую область вы хотели сделать? Прекратить работу над этим? В действительности вам нужна целая иерархия наборов тестов. 1: Набор проверки - используется для настройки модели, 2: Тестовый набор, используется для оценки модели и определения необходимости возврата к чертежной доске. 3: Супер-тестовый набор, используемый в алгоритме финального финала, чтобы увидеть, как Хорошо, что 4: гипер-тестовый набор, использованный после того, как исследователи в течение 10 лет разрабатывали алгоритмы MNIST, чтобы увидеть, насколько безумно они подходят ... и т. д. и т. д.
Timmmm
66

Мой 5-летний опыт работы в области компьютерных наук научил меня, что нет ничего лучше, чем простота.

Концепция наборов данных «Обучение / Перекрестная проверка / Тест» так проста. Если у вас большой набор данных, рекомендуется разделить его на 3 части:

++ Обучающий набор (60% исходного набора данных): используется для построения нашего алгоритма прогнозирования. Наш алгоритм пытается настроить себя на причуды обучающих наборов данных. На этом этапе мы обычно создаем несколько алгоритмов для сравнения их характеристик на этапе перекрестной проверки.

++ Набор для перекрестной проверки (20% исходного набора данных): этот набор данных используется для сравнения характеристик алгоритмов прогнозирования, которые были созданы на основе обучающего набора. Мы выбираем алгоритм, который имеет наилучшую производительность.

++ Тестовый набор (20% от исходного набора данных): теперь мы выбрали наш предпочтительный алгоритм прогнозирования, но пока не знаем, как он будет работать на совершенно невидимых реальных данных. Итак, мы применяем выбранный алгоритм прогнозирования к нашему тестовому набору, чтобы посмотреть, как он будет работать, чтобы у нас было представление о производительности нашего алгоритма на невидимых данных.

Примечания:

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

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

innovIsmail
источник
1
легко и запутанно называть наборы фазами и наоборот.
Мэтт О'Брайен,
2
@innovIsmail Что если я пропущу этап проверки? Скажем, у меня есть много алгоритмов, и я обучил их на наборе поездов, затем я просто применяю их все к тестовому набору, а затем выбираю тот, который лучше всего работает на тестовом наборе
KevinKim
3
Для меня это звучит так, будто вы просто пропускаете тестовый шаг.
Михай Данила
1
> сравнить характеристики алгоритмов прогнозирования - что такое «алгоритм» в этом контексте? не ваша модель является алгоритмом? Нужно ли строить несколько моделей и обучать их отдельно, чтобы получить несколько этапов для проверки?
Boppity Bop
2
Эта простота является иллюзией, потому что в ситуации с негабаритным размером выборки можно получить существенно разные алгоритмы прогнозирования и результаты валидации, если случайные разбиения будут повторяться.
Фрэнк Харрелл
33

На каждом этапе, когда вас просят принять решение (т. Е. Выбрать один вариант из нескольких вариантов), у вас должен быть дополнительный набор / раздел, чтобы измерить точность вашего выбора, чтобы вы не просто выбирали наиболее благоприятный результат случайности и принять конец конца распределения за центр 1 . Слева - пессимист. Право это оптимист. Центр - это прагматик. Будь прагматиком.

введите описание изображения здесь

Шаг 1) Обучение: каждый тип алгоритма имеет свои собственные параметры параметров (количество слоев в нейронной сети, количество деревьев в случайном лесу и т. Д.). Для каждого из ваших алгоритмов вы должны выбрать один вариант. Вот почему у вас есть тренировочный набор.

Шаг 2) Проверка: теперь у вас есть набор алгоритмов. Вы должны выбрать один алгоритм. Вот почему у вас есть тестовый набор. Большинство людей выбирают алгоритм, который лучше всего работает на наборе проверки (и это нормально). Но если вы не измеряете частоту ошибок вашего самого эффективного алгоритма в тестовом наборе, а просто используете его частоту ошибок в наборе проверки, то вы слепо ошибочно приняли «наилучший возможный сценарий» за «наиболее вероятный сценарий». Это рецепт катастрофы.

Шаг 3) Тестирование: я полагаю, что если ваши алгоритмы не имеют никаких параметров, то вам не понадобится третий шаг. В этом случае ваш шаг проверки будет вашим тестовым шагом. Возможно, Matlab не спрашивает вас о параметрах, или вы решили не использовать их, и это является источником вашей путаницы.

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

2 Это изображение не мое. Я взял его с этого сайта: http://www.teamten.com/lawrence/writings/bell-curve.png

Райан Зотти
источник
3
Я думаю, что первое предложение отражает фундаментальный ответ на этот вопрос лучше, чем любой другой ответ. «На каждом этапе, когда вас просят принять решение (т.е. выбрать один вариант из нескольких вариантов), у вас должен быть дополнительный набор / раздел, чтобы измерить точность вашего выбора ...»
kobejohn
На вопрос: если я хочу найти лучший RandomForest (RF) и притворяться, что есть только один гиперпараметр RF, который является количеством деревьев (N), то на шаге 1 я запускаю много RF с разными N, чтобы построить лес ; на шаге 2 примените их к проверочному тесту и выберите RF с N *, который дает наименьшую ошибку по сравнению с проверочным тестом, затем на шаге 3 я применяю RF с N * к тестовому набору и получаю объективную оценку истинной тестовой ошибки этого RF с N *. Но я мог бы применить все мои RF на тестовом наборе и выбрать тот с самой низкой ошибкой теста, который не может быть N *. Тогда в чем смысл проверки 2?
КевинКим
1
@KevinKim: Если вы применили свой тестовый набор ко всем RF и использовали результаты для дальнейшего выбора (выберите другую модель), то вы только что повторили шаг проверки. Вы решили «Мне нужно получить наименьшую ошибку с моделью!». Это точка обучения и проверки, а не тестирования. Тестирование только о: я тренировался и выбрал модель, теперь посмотрим, как она работает "в целом". Очевидно, что «общий» набор тестов - это просто еще один фрагмент данных, который может или не может быть переопределен, но суть в том, что ВЫ сознательно не подгоняли свою модель к ней по своему выбору.
Honeybear
Трехстороннее разделение - это очень распространенный подход (A), чтобы дать вам представление о том, как модель обобщает (B) при ограниченных усилиях и (C) ограниченные наблюдаемые данные. Если вы хотите добиться большего с точки зрения (B), вы можете сделать то, что вы предлагаете: использовать различные наборы проверки для точной настройки для обобщения. При ограниченных данных, которые называются перекрестной проверкой: повторите обучение и проверку с различными наборами обучения и тестов (для нейронных сетей, где обучение может занять недели, это не так).
Honeybear
1
НО: как модель будет работать «в реальном мире», пока неизвестно. Это только проверенное и проверенное предположение, что оно будет хорошо работать с невидимыми данными, и для научных целей это обычно считается достаточным. Если вы сейчас снова идете и генерируете и выбираете модели, пока один из них не подходит для валидационного набора И тестового набора не будет идеально, то вы превратили свой тестовый набор в валидационный набор. Лучше сделать перекрестную проверку для этого. В случае, если ваша производительность на тестовом наборе постоянно значительно ухудшается, всегда есть возможность, что ваши данные будут просто плохо разделены, и вы захотите перезапустить с перестановленными наборами.
Honeybear
21

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

Фрэнк Харрелл
источник
1
Таким образом, вы не поддерживаете перекрестную проверку посредством разделения больших наборов данных для тестирования / проверки прогностической модели?
OFish
9
Нет, за исключением случаев, когда набор данных огромен или отношение сигнал / шум высокое. По моему опыту, перекрестная проверка не так точна, как начальная загрузка, и она не использует весь размер выборки. Во многих случаях вам необходимо повторить перекрестную проверку 50-100 раз, чтобы добиться адекватной точности. Но в ваших наборах данных> 20 000 объектов, простые подходы, такие как проверка с разделением выборки, часто бывают нормальными.
Фрэнк Харрелл
2
Это действительно приятно знать! Благодарю. И если исходить от вас, это отличный «источник» информации. Ура!
OFish
1
Проверка с разделенными выборками часто работает хуже, чем строгая начальная загрузка. Создайте внешний вид начальной загрузки, который повторяет все контролируемые этапы обучения (все этапы, использующие Y). Бутстрап оптимизма Эфрона-Гонга оценивает, насколько прогностическая модель распадается в данных, не видимых алгоритмом, без удержания данных.
Фрэнк Харрелл
1
Да, с акцентом на повторение . Это единственный раскол, который проблематичен.
Фрэнк Харрелл
13

Типичная задача машинного обучения может быть представлена ​​в виде следующего вложенного цикла:

while (error in validation set > X) {
    tune hyper-parameters
    while (error in training set > Y) {
        tune parameters
    }
}

Обычно внешний цикл выполняется человеком на проверочном наборе , а внутренний цикл на машине - на обучающем наборе . Затем вам понадобится третий набор тестов, чтобы оценить окончательную производительность модели.

Другими словами, набор проверки является обучающим набором для человека.

Ю Чжоу
источник
9

Один из способов представить эти три набора состоит в том, что два из них ( trainingи validation) происходят из прошлого, тогда как testнабор происходит из «будущего». Модель должна быть построена и настроена с использованием данных из «прошлого» ( training/ validationdata), но не testданных, которые поступают из «будущего».

Чтобы привести практический пример, скажем, мы строим модель, чтобы предсказать, как хорошо будут играть бейсболисты в будущем. Мы будем использовать данные за 1899-2014 годы для создания testи validationустановки. После того, как модель построена и настроена на эти данные, мы будем использовать данные за 2015 год (фактически в прошлом!) В качестве тестового набора, который с точки зрения модели выглядит как «будущие» данные и никоим образом не влияет на создание модели. , (Очевидно, теоретически мы могли бы дождаться данных с 2016 года, если мы действительно хотим!)

Очевидно, я использую кавычки везде, потому что фактический временной порядок данных может не совпадать с фактическим будущим (по определению, все генерация данных, вероятно, имела место в фактическом прошлом). В действительности, testнабор может быть просто данными того же периода времени, что trainingи validationнаборы, которые вы «держите». Таким образом, это никак не повлияло на настройку модели, но те данные, которые удерживаются, на самом деле не приходят из будущего.

thecity2
источник
4
Прочитав все остальные ответы, этот ответ заставил меня «щелкнуть»! Вы тренируетесь с набором поездов, проверяете, не перегружаете ли вы набором валидации (и что модель и гиперпараметры работают с «неизвестными данными»), а затем вы оцениваете с помощью тестового набора - «новые данные» - будь вы сейчас иметь какие-либо предсказательные способности ..!
stolsvik
Это справедливый способ взглянуть на это в том смысле, что testданные никогда не должны быть частью процесса обучения: и если мы рассматриваем их как «будущие» данные, это становится невозможной ошибкой.
Джавадба
7

Большинство алгоритмов интеллектуального анализа данных следуют этим трем шагам:

  1. Учебный набор используется для построения модели. Он содержит набор данных, которые предварительно классифицировали переменные цели и предиктора.
  2. Обычно для определения того, насколько хорошо модель работает с данными вне обучающего набора, используется набор данных или тестовый набор. Набор тестов содержит предварительно классифицированные данные результатов, но они не используются, когда данные набора тестов проходят через модель до конца, когда предварительно классифицированные данные сравниваются с результатами модели. Модель настроена таким образом, чтобы минимизировать ошибки на тестовом наборе.
  3. Другой набор данных или набор проверочных данных используется для оценки скорректированной модели на шаге №2, где снова данные проверочного набора запускаются для скорректированной модели и результатов по сравнению с неиспользованными предварительно классифицированными данными.
Скотт
источник
4

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

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

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

дан дан
источник
2

Я хотел бы добавить к другим очень хорошим ответам здесь, указывая на относительно новый подход в машинном обучении, который называется «дифференциальная конфиденциальность» (см. Статьи Dwork; Win Vector Blog для получения дополнительной информации). Идея позволяет фактически повторно использовать набор для тестирования без ущерба для конечной производительности модели. В типичных условиях тестовый набор используется только для оценки конечной производительности; в идеале никто даже не имеет права смотреть на это.

Как это хорошо описано в этом блоге Win Vector (см. Также другие записи), можно «использовать» набор тестов, не снижая производительность модели. Это делается с помощью специальной процедуры, называемой «дифференциальная конфиденциальность». Учащийся не будет иметь прямого доступа к тестовому набору.

Владислав Довгальец
источник
-1

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

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