Разделение данных (Data Splitting)
Что такое Разделение данных (Data Splitting)?
Разделение данных — это процедура распределения исходного набора данных на несколько подмножеств (частей) в машинном обучении с целью эффективного обучения, валидации и тестирования моделей.
Аналогия из бытового мира
Представьте, что вы учите ребёнка различать фрукты. Вы показываете ему несколько яблок, апельсинов и бананов (это похоже на обучающую выборку), затем просите назвать несколько фруктов, которые он уже видел (это напоминает валидационную выборку), а в конце даёте ему незнакомые фрукты, чтобы проверить, научился ли он их различать (это соответствует тестовой выборке). Разделение данных работает по тому же принципу: разные части данных используются на разных этапах обучения и проверки модели.
Исторический контекст
Практика разделения данных закрепилась в машинном обучении в 1980–1990‑х годах, когда активно развивались методы статистического обучения и кросс‑валидации. Ранние работы по кросс‑валидации (например, leave‑one‑out) показали, что оценка модели на тех же данных, на которых она обучалась, приводит к переоценке её качества. Это подтолкнуло исследователей к идее разделения данных на обучающую и тестовую выборки. Со временем к ним добавилась валидационная выборка для настройки гиперпараметров.Смежные понятия и различия
Кросс‑валидация
Метод, при котором данные разбиваются на k частей, и модель обучается и тестируется k раз, каждый раз на разных подмножествах. В отличие от простого разделения, кросс‑валидация даёт более устойчивую оценку качества модели, но требует больше вычислительных ресурсов.Стратификация
Способ разделения данных, при котором сохраняется пропорция классов в каждой из выборок. Используется, когда важно сохранить баланс классов (например, в задачах классификации с дисбалансом).Разбиение по времени
Особый вид разделения для временных рядов, где данные делятся по временной оси (например, первые 80 % данных — обучение, последние 20 % — тестирование).Примеры использования
Типичное разделение
- обучающая выборка (train) — 70 % данных (на них модель учится);
- валидационная выборка (validation) — 15 % (используется для настройки гиперпараметров и выбора модели);
- тестовая выборка (test) — 15 % (финальная оценка качества модели).
В задачах компьютерного зрения
Например, в ImageNet данные разделяют по изображениям: часть изображений идёт на обучение, часть — на валидацию, часть — на тестирование.В NLP
Например, при обучении трансформеров вроде BERT или GPT тексты разбивают на обучающую, валидационную и тестовую выборки, сохраняя распределение тем и стилей.В задачах временных рядов
Например, при прогнозировании спроса или финансовых показателей данные делят по времени: например, данные за 2010–2018 гг. — обучение, 2019 г. — валидация, 2020 г. — тестирование.В фреймворках
В scikit‑learn, TensorFlow, PyTorch есть встроенные функции для разделения данных:train_test_splitв scikit‑learn;tf.data.Dataset.splitв TensorFlow;torch.utils.data.random_splitв PyTorch.
