Я нахожу это странным, когда использую набор инструментов нейронной сети в Matlab.
Он разделил необработанные данные на три части:
- Обучающий набор
- проверочный набор
- тестовый набор
Я заметил, что во многих алгоритмах обучения или обучения данные часто делятся на 2 части: тренировочный набор и тестовый набор.
Мои вопросы:
- В чем разница между набором валидации и тестовым набором?
- Действительно ли набор валидации специфичен для нейронной сети? Или это необязательно.
- Чтобы пойти дальше, есть ли разница между проверкой и тестированием в контексте машинного обучения?
machine-learning
validation
xiaohan2012
источник
источник
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.
Ответы:
Обычно для обучения под надзором требуется два типа наборов данных:
В одном наборе данных (ваш «золотой стандарт») у вас есть входные данные вместе с правильным / ожидаемым результатом. Этот набор данных обычно должным образом готовится людьми или путем сбора некоторых данных полуавтоматическим способом. Но важно, чтобы у вас был ожидаемый результат для каждой строки данных, потому что это необходимо для обучения под наблюдением.
Данные, к которым вы будете применять вашу модель. Во многих случаях это данные, которые вас интересуют для вывода вашей модели, и поэтому у вас пока нет «ожидаемого» вывода.
При выполнении машинного обучения вы делаете следующее:
Этап проверки часто делится на две части :
Отсюда и разделение на 25/25/25.
В случае, если вам не нужно выбирать подходящую модель из нескольких конкурирующих подходов, вы можете просто переразбить свой набор, в котором у вас есть только тренировочный набор и тестовый набор, без выполнения проверки вашей обученной модели. Я лично разделить их 70/30 тогда.
Смотрите также этот вопрос .
источник
Обучающий набор: набор примеров, используемых для обучения: подгонка параметров классификатора. В случае многослойного персептрона (MLP) мы использовали бы обучающий набор, чтобы найти «оптимальные» веса с помощью правила обратной поддержки.
Набор проверки: набор примеров, используемых для настройки параметров классификатора. В случае MLP мы использовали бы набор проверки, чтобы найти «оптимальное» количество скрытых единиц или определить точку остановки для алгоритма обратного распространения.
Тестовый набор: набор примеров, используемых только для оценки эффективности полностью обученного классификатора. В случае MLP мы будем использовать тест для оценки частоты ошибок после того, как выберем окончательную модель (размер MLP и фактические веса). После оценки окончательная модель на тестовом наборе, ВЫ НЕ ДОЛЖНЫ настраивать модель дальше!
Почему отдельные наборы тестов и проверок? Оценка частоты ошибок окончательной модели на данных проверки будет смещена (меньше, чем истинная частота ошибок), поскольку набор проверки используется для выбора окончательной модели. После оценки окончательной модели на тестовом наборе ВЫ НЕ ДОЛЖНЫ настраивать модель. в дальнейшем!
Источник: Введение в анализ образов, Рикардо Гутьеррес-ОсунаТехас A & M University, Техасский A & M University
источник
Мой 5-летний опыт работы в области компьютерных наук научил меня, что нет ничего лучше, чем простота.
Концепция наборов данных «Обучение / Перекрестная проверка / Тест» так проста. Если у вас большой набор данных, рекомендуется разделить его на 3 части:
++ Обучающий набор (60% исходного набора данных): используется для построения нашего алгоритма прогнозирования. Наш алгоритм пытается настроить себя на причуды обучающих наборов данных. На этом этапе мы обычно создаем несколько алгоритмов для сравнения их характеристик на этапе перекрестной проверки.
++ Набор для перекрестной проверки (20% исходного набора данных): этот набор данных используется для сравнения характеристик алгоритмов прогнозирования, которые были созданы на основе обучающего набора. Мы выбираем алгоритм, который имеет наилучшую производительность.
++ Тестовый набор (20% от исходного набора данных): теперь мы выбрали наш предпочтительный алгоритм прогнозирования, но пока не знаем, как он будет работать на совершенно невидимых реальных данных. Итак, мы применяем выбранный алгоритм прогнозирования к нашему тестовому набору, чтобы посмотреть, как он будет работать, чтобы у нас было представление о производительности нашего алгоритма на невидимых данных.
Примечания:
-Очень важно помнить, что пропуск фазы тестирования не рекомендуется, потому что алгоритм, который хорошо работал на этапе перекрестной проверки, не означает, что он действительно лучший, потому что алгоритмы сравниваются на основе перекрестной проверки. набор проверки и его причуды и шумы ...
-Во время фазы тестирования цель состоит в том, чтобы увидеть, как наша окончательная модель будет работать в дикой природе, поэтому, если ее производительность очень низкая, мы должны повторить весь процесс, начиная с фазы обучения.
источник
На каждом этапе, когда вас просят принять решение (т. Е. Выбрать один вариант из нескольких вариантов), у вас должен быть дополнительный набор / раздел, чтобы измерить точность вашего выбора, чтобы вы не просто выбирали наиболее благоприятный результат случайности и принять конец конца распределения за центр 1 . Слева - пессимист. Право это оптимист. Центр - это прагматик. Будь прагматиком.
Шаг 1) Обучение: каждый тип алгоритма имеет свои собственные параметры параметров (количество слоев в нейронной сети, количество деревьев в случайном лесу и т. Д.). Для каждого из ваших алгоритмов вы должны выбрать один вариант. Вот почему у вас есть тренировочный набор.
Шаг 2) Проверка: теперь у вас есть набор алгоритмов. Вы должны выбрать один алгоритм. Вот почему у вас есть тестовый набор. Большинство людей выбирают алгоритм, который лучше всего работает на наборе проверки (и это нормально). Но если вы не измеряете частоту ошибок вашего самого эффективного алгоритма в тестовом наборе, а просто используете его частоту ошибок в наборе проверки, то вы слепо ошибочно приняли «наилучший возможный сценарий» за «наиболее вероятный сценарий». Это рецепт катастрофы.
Шаг 3) Тестирование: я полагаю, что если ваши алгоритмы не имеют никаких параметров, то вам не понадобится третий шаг. В этом случае ваш шаг проверки будет вашим тестовым шагом. Возможно, Matlab не спрашивает вас о параметрах, или вы решили не использовать их, и это является источником вашей путаницы.
1 Часто полезно переходить на каждый шаг с предположением (нулевая гипотеза), что все параметры одинаковы (например, все параметры одинаковы или все алгоритмы одинаковы), поэтому я ссылаюсь на распределение.
2 Это изображение не мое. Я взял его с этого сайта: http://www.teamten.com/lawrence/writings/bell-curve.png
источник
Из этого не следует, что вам нужно каким-либо образом разбивать данные. Начальный загрузчик может обеспечить меньшие среднеквадратичные оценки точности прогноза, используя всю выборку как для разработки, так и для тестирования модели.
источник
Типичная задача машинного обучения может быть представлена в виде следующего вложенного цикла:
Обычно внешний цикл выполняется человеком на проверочном наборе , а внутренний цикл на машине - на обучающем наборе . Затем вам понадобится третий набор тестов, чтобы оценить окончательную производительность модели.
Другими словами, набор проверки является обучающим набором для человека.
источник
Один из способов представить эти три набора состоит в том, что два из них (
training
иvalidation
) происходят из прошлого, тогда какtest
набор происходит из «будущего». Модель должна быть построена и настроена с использованием данных из «прошлого» (training
/validation
data), но неtest
данных, которые поступают из «будущего».Чтобы привести практический пример, скажем, мы строим модель, чтобы предсказать, как хорошо будут играть бейсболисты в будущем. Мы будем использовать данные за 1899-2014 годы для создания
test
иvalidation
установки. После того, как модель построена и настроена на эти данные, мы будем использовать данные за 2015 год (фактически в прошлом!) В качестве тестового набора, который с точки зрения модели выглядит как «будущие» данные и никоим образом не влияет на создание модели. , (Очевидно, теоретически мы могли бы дождаться данных с 2016 года, если мы действительно хотим!)Очевидно, я использую кавычки везде, потому что фактический временной порядок данных может не совпадать с фактическим будущим (по определению, все генерация данных, вероятно, имела место в фактическом прошлом). В действительности,
test
набор может быть просто данными того же периода времени, чтоtraining
иvalidation
наборы, которые вы «держите». Таким образом, это никак не повлияло на настройку модели, но те данные, которые удерживаются, на самом деле не приходят из будущего.источник
test
данные никогда не должны быть частью процесса обучения: и если мы рассматриваем их как «будущие» данные, это становится невозможной ошибкой.Большинство алгоритмов интеллектуального анализа данных следуют этим трем шагам:
источник
Некоторые люди не понимают, почему мы используем набор проверки, поэтому я дам простое, интуитивно понятное объяснение того, что произойдет, если вы не используете набор данных проверки.
Если вы не используете проверочный набор, вам придется выбрать гиперпараметры и решить, когда прекратить обучение, основываясь на производительности модели в наборе данных тестирования. Если вы решите, когда прекратить обучение, основываясь на производительности модели в наборе данных тестирования, вы можете просто прекратить обучение, когда модель преуспеет в наборе данных тестирования. Затем, когда вы сообщаете о своих результатах, вы сообщаете о точности в наборе данных тестирования. Проблема в том, что вы могли бы сказать, что ваша модель действительно хорошо работала, хотя на самом деле это была просто случайная вариация, из-за которой она работала лучше только на тестовом наборе.
Если вы вместо этого используете проверочный набор, чтобы решить, когда следует прекратить обучение, точность модели в наборе тестирования является скорее объективным отражением того, насколько хорошо она справляется с задачей в целом, и это показывает, что вы не оптимизировали Модель просто для того, чтобы хорошо работать на тестовом наборе.
источник
Я хотел бы добавить к другим очень хорошим ответам здесь, указывая на относительно новый подход в машинном обучении, который называется «дифференциальная конфиденциальность» (см. Статьи Dwork; Win Vector Blog для получения дополнительной информации). Идея позволяет фактически повторно использовать набор для тестирования без ущерба для конечной производительности модели. В типичных условиях тестовый набор используется только для оценки конечной производительности; в идеале никто даже не имеет права смотреть на это.
Как это хорошо описано в этом блоге Win Vector (см. Также другие записи), можно «использовать» набор тестов, не снижая производительность модели. Это делается с помощью специальной процедуры, называемой «дифференциальная конфиденциальность». Учащийся не будет иметь прямого доступа к тестовому набору.
источник
Моя идея заключается в том, что этот вариант в наборе инструментов нейронной сети для предотвращения переоснащения. В этой ситуации веса указаны только для тренировочных данных и не показывают глобальную тенденцию. Благодаря наличию набора проверки итерации можно адаптировать к тому, где уменьшение ошибки обучающих данных приводит к уменьшению данных проверки и увеличению ошибки данных проверки; наряду с уменьшением ошибки данных тренировки это демонстрирует явление переоснащения.
источник