Разделение данных на тренировочный, валидационный и тестовый наборы
Одним из важнейших способов контроля обучения моделей машинного обучения, в том числе классифицирующих нейронных сетей, является разделение исходного набора данных на три независимые части: тренировочный, валидационный и тестовый наборы. Это позволяет оценить обобщающую способность модели и предотвратить переобучение.
Назначение каждого набора
Тренировочный набор (Training Set) используется для обучения модели, то есть подстройки ее параметров на основе этих данных. Модель "изучает" закономерности, присутствующие в тренировочных данных.
Валидационный набор (Validation Set) применяется для отслеживания производительности модели во время обучения и выбора наилучших гиперпараметров (параметров, не настраиваемых в процессе обучения). Модель периодически оценивается на валидационном наборе, и ее гиперпараметры подбираются таким образом, чтобы достичь максимальной производительности на этом наборе.
Тестовый набор (Test Set) используется для окончательной оценки производительности обученной модели на "новых" данных, которые не участвовали в процессе обучения и валидации. Это позволяет получить наиболее объективную оценку обобщающей способности модели.
Типичное распределение данных
Общепринятой практикой является следующее распределение данных:
Тренировочный набор: 60-80% исходных данных
Валидационный набор: 10-20% исходных данных
Тестовый набор: 10-20% исходных данных
Точное распределение зависит от размера исходного набора данных и специфики задачи.
Пример разделения данных в Python
Рассмотрим пример разделения данных на тренировочный, валидационный и тестовый наборы с помощью библиотеки scikit-learn:
В этом примере:
Мы загружаем исторические данные котировок BTC с помощью yfinance.
Преобразуем данные в формат Pandas DataFrame и оставляем только цену закрытия.
Разделяем данные на тренировочный (60%), валидационный (20%) и тестовый (20%) наборы с помощью
train_test_split
из scikit-learn. Параметрshuffle=False
сохраняет временную последовательность данных.Строим график цены закрытия, используя разные цвета для каждого набора данных.
Правильное разделение данных на независимые наборы имеет критическое значение для корректной оценки производительности модели и предотвращения переобучения. Использование валидационного набора позволяет настроить гиперпараметры модели, а тестовый набор дает финальную, наиболее объективную оценку качества обученной модели на "новых" данных.
Last updated