Существует ли практическое правило о том, как лучше разделить данные на обучающие и проверочные наборы? Рекомендуется ли разделение на 50/50? Или есть явные преимущества наличия большего количества обучающих данных относительно проверочных данных (или наоборот)? Или этот выбор в значительной степени зависит от приложения?
Я в основном использовал 80% / 20% данных обучения и проверки, соответственно, но я выбрал это разделение без какой-либо принципиальной причины. Может ли кто-нибудь, кто более опытный в машинном обучении, посоветовать мне?
machine-learning
robguinness
источник
источник
Ответы:
Есть две конкурирующие проблемы: с меньшим количеством обучающих данных ваши оценки параметров имеют большую дисперсию. С меньшим количеством данных тестирования ваша статистика производительности будет иметь большую дисперсию. Вообще говоря, вы должны быть обеспокоены делением данных таким образом, чтобы ни одна из дисперсий не была слишком высокой, что больше связано с абсолютным числом экземпляров в каждой категории, а не с процентом.
Если у вас есть в общей сложности 100 экземпляров, вы, вероятно, застряли с перекрестной проверкой, поскольку ни один отдельный сплит не даст вам удовлетворительного отклонения в ваших оценках. Если у вас 100 000 экземпляров, на самом деле не имеет значения, выберете ли вы 80:20 или 90:10 (на самом деле вы можете использовать меньше обучающих данных, если ваш метод особенно требователен к вычислительным ресурсам).
Предполагая, что у вас достаточно данных для проведения правильных данных испытаний (а не перекрестной проверки), ниже приведен инструктивный способ получить справку по отклонениям:
источник
Вы будете удивлены, узнав, что 80/20 - это довольно распространенное соотношение, часто называемое принципом Парето . Обычно это безопасная ставка, если вы используете это соотношение.
Однако, в зависимости от используемой вами методики обучения / валидации, соотношение может измениться. Например: если вы используете 10-кратную перекрестную проверку, то в итоге вы получите набор проверки в 10% для каждого раза.
Было проведено некоторое исследование того, каково правильное соотношение между обучающим набором и проверочным набором :
В своем заключении они указывают формулу:
Что они подразумевают под сложностью:
Принимая первое практическое правило (т.е. набор проверки должен быть обратно пропорционален квадратному корню из числа свободных настраиваемых параметров), вы можете сделать вывод, что если у вас есть 32 настраиваемых параметра, то квадратный корень из 32 равен ~ 5,65, дробь должна быть 1 / 5,65 или 0,177 (об / т). Примерно 17,7% должны быть зарезервированы для проверки и 82,3% для обучения.
источник
В прошлом году я прошла онлайн-курс обучения машинному оборудованию профессора Эндрю Нга. Его рекомендация была:
Обучение : 60%
Перекрестная проверка : 20%
Тестирование : 20%
источник
in the modern big data era, where, for example, you might have a million examples in total, then the trend is that your dev (cross validation) and test sets have been becoming a much smaller percentage of the total.
Он предполагает, что это может быть 99,5: 0,25: 0,25.Ну, вы должны подумать еще об одном.
Если у вас действительно большой набор данных, например, 1 000 000 примеров, разделение 80/10/10 может оказаться ненужным, потому что 10% = 100 000 примеров не нужно, чтобы сказать, что модель работает нормально.
Возможно, достаточно 99 / 0,5 / 0,5, потому что 5000 примеров могут представлять большую часть различий в данных, и вы можете легко сказать, что модель работает хорошо, основываясь на этих 5000 примеров в test и dev.
источник
Предположим, у вас меньше данных, я предлагаю попробовать 70%, 80% и 90% и провести тест, который дает лучший результат. В случае 90% есть вероятность, что при 10% тесте вы получите плохую точность.
источник
Возможно, 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 является хорошим выбором, как указано выше. Но если вы не проведете перекрестную проверку с разделением 50/50, это может помочь вам гораздо больше и помешать вам создать модель, которая переопределяет ваши тренировочные данные.
источник