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

Есть ли правило о том, как лучше всего делить данные на наборы обучения и проверки? Желательно ли разделить 50/50? Или есть явные преимущества наличия большего количества учебных данных относительно данных валидации (или наоборот)? Или этот выбор в значительной степени зависит от приложения?

В основном я использовал 80%/20% данных обучения и валидации, но я выбрал это разделение без какой-либо принципиальной причины. Может ли кто-нибудь, кто более опытен в машинных процессах, посоветовать мне?

Ответ 1

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

Если у вас есть в общей сложности 100 экземпляров, вы, вероятно, придерживаетесь перекрестной проверки, поскольку ни один раскол не даст вам удовлетворительной дисперсии в ваших оценках. Если у вас есть 100 000 экземпляров, на самом деле не имеет значения, выбираете ли вы разделение 80:20 или 90:10 (действительно, вы можете использовать меньше учебных данных, если ваш метод особенно интенсивно вычисляется).

Предполагая, что у вас достаточно данных для выполнения правильных тестовых данных (а не перекрестной проверки), следующий инструктивный способ получить дескриптор отклонений:

  • Разделите свои данные на обучение и тестирование (80/20 действительно хорошая отправная точка).
  • Разделите данные обучения на обучение и проверку (опять же, 80/20 - справедливый раскол).
  • Подберите произвольные выборки ваших данных обучения, подготовьте классификатор с этим и запишите производительность в наборе валидации.
  • Попробуйте серию прогонов с различными объемами данных обучения: произвольно отбирайте 20% из них, скажем, 10 раз и наблюдайте за эффективностью данных валидации, затем делайте то же самое с 40%, 60%, 80%. Вы должны видеть как большую производительность с большим количеством данных, так и меньшую дисперсию по различным случайным выборкам
  • Чтобы получить дескриптор дисперсии из-за размера тестовых данных, выполните ту же процедуру в обратном порядке. Поезжайте на все ваши данные обучения, а затем произвольно произвольно пробуйте процент ваших данных проверки и наблюдайте за производительностью. Теперь вы должны заметить, что средняя производительность на небольших образцах ваших данных проверки примерно такая же, как и производительность всех данных проверки, но дисперсия намного выше при меньшем количестве тестовых образцов.

Ответ 2

Вы были бы удивлены, узнав, что 80/20 - довольно часто встречающееся соотношение, часто называемое принцип Парето. Обычно это безопасная ставка, если вы используете это соотношение.

Однако, в зависимости от используемой вами методики обучения/валидации, отношение может измениться. Например: если вы используете 10-кратную проверку перекрестных ссылок, то в каждой справке вы получите набор проверки 10%.

Было проведено некоторое исследование каково надлежащее соотношение между набором тренировок и набором валидаций:

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

В своем заключении они задают формулу:

Набор валидаций (v) к коэффициенту размера набора тренировок (t), v/t, шкалы, такие как ln (N/h-max), где N - число семейств распознавателей и h-max - самая большая сложность этих семейств.

Что они означают по сложности:

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

Принимая первое эмпирическое правило (набор извещений должен быть обратно пропорционален квадратному корню из числа свободных регулируемых параметров), вы можете заключить, что если у вас есть 32 настраиваемых параметра, квадратный корень из 32 составляет ~ 5.65, фракция должна быть 1/5.65 или 0.177 (v/t). Примерно 17,7% должны быть зарезервированы для валидации и 82,3% для обучения.

Ответ 3

В прошлом году я прошел онлайн-курс по машинному обучению профессора Эндрю Нгса. Его рекомендация была:

Обучение: 60%

Перекрестная проверка: 20%

Тестирование: 20%

Ответ 4

Ну, вы должны подумать еще об одном.

Если у вас действительно большой набор данных, например, 1 000 000 примеров, разделение 80/10/10 может оказаться ненужным, потому что 10% = 100 000 примеров не нужно, чтобы сказать, что модель работает нормально.

Возможно, достаточно 99/0,5/0,5, потому что 5000 примеров могут представлять большую часть различий в данных, и вы можете легко сказать, что модель работает хорошо, основываясь на этих 5000 примеров в test и dev.

Ответ 5

Возможно, 63,2%/36,8% является разумным выбором. Причина заключалась бы в том, что если бы у вас был общий размер выборки n и захотелось случайным образом опробовать с заменой (например, повторной выборкой, как в статистическом бутстрапе) n случаев из начального n, вероятность того, что отдельный случай будет выбран в re-sample будет примерно 0,632 при условии, что n не слишком мало, как описано здесь: https://stats.stackexchange.com/a/88993/16263

Для образца из n = 250 вероятность того, что отдельный случай будет выбран для повторной выборки до 4 цифр, составляет 0,6329. Для образца n = 20000 вероятность равна 0,6321.

Ответ 6

Все зависит от данных. Если у вас есть большой объем данных, то 80/20 является хорошим выбором, как указано выше. Но если вы не используете Cross-Validation с разделом 50/50, это может помочь вам намного больше и не позволит вам создать модель, переопределяющую ваши учебные данные.

Ответ 7

Предположим, у вас меньше данных, я предлагаю попробовать 70%, 80% и 90% и провести тест, который дает лучший результат. В случае 90% есть вероятность, что при 10% тесте вы получите плохую точность.