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

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

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

6 Solutions collect form web for “Существует ли правило о том, как разделить dataset на наборы обучения и проверки?”

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

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

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

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

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

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

Было проведено некоторое исследование того, что является надлежащим соотношением между набором тренировок и набором проверки :

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

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

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

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

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

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

В прошлом году я последовал за учебным курсом Prof: Andrew Ng. Его рекомендация была

Обучение: 60%

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

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

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

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

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

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

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

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

Interesting Posts
Давайте будем гением компьютера.