Обучающая, валидационная и тестовая выборка в машинном обучении

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

Автор: Редакция DataMarkupОпубликовано: 2026-07-14

Зачем данные делят на обучающую и тестовую выборку?

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

Разделение решает конкретную практическую проблему: без независимой проверки легко спутать модель, которая действительно нашла закономерность, с моделью, которая просто выучила ответы наизусть. Тестовая выборка играет роль экзамена с незнакомыми билетами — только по нему видно, чему модель научилась на самом деле, а не что она запомнила во время подготовки.

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

Чем отличаются обучающая, валидационная и тестовая выборки?

Роли трёх выборок легко представить через подготовку к экзамену: обучающая выборка — это учебник, по которому модель осваивает материал; валидационная — пробный тест, по итогам которого корректируют метод подготовки; тестовая — единственная настоящая экзаменационная работа, которую модель видит только один раз и по которой судят об итоговом результате.

Выборка Что делает модель Когда используется Типичная доля
Обучающая (train) Настраивает параметры на этих примерах На протяжении всего обучения 70–80%
Валидационная (validation) Не участвует в обучении, но проверяется многократно После каждой эпохи или итерации 10–15%
Тестовая (test) Не видна модели вообще до финальной проверки Один раз, в самом конце 10–15%

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

Какие пропорции использовать при разбиении данных на выборки?

Универсального соотношения не существует — оно зависит от объёма данных. На небольших датасетах в тысячи примеров чаще берут около 70% на обучение и по 15% на валидацию и тест, чтобы оставить данных достаточно для надёжной проверки. На датасетах в миллионы примеров валидацию и тест можно сократить до нескольких процентов.

Что влияет на выбор пропорций:

На исследовательских задачах, где нужно многократно сравнивать разные архитектуры между собой, иногда выбирают более консервативное деление — например, 60% на обучение и по 20% на валидацию и тест, — жертвуя размером обучающей выборки ради более надёжного и воспроизводимого сравнения моделей.

Как проверить, что разбиение на выборки сделано корректно?

Корректность разбиения проверяют по трём признакам: распределение классов и ключевых признаков в обучающей и тестовой выборках похоже; между выборками нет прямых или почти точных дубликатов примеров; а метрика качества модели на валидации и на тесте отличается несильно — большой разрыв почти всегда указывает на ошибку в разбиении или на переобучение.

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

Что такое утечка данных (data leakage) и как её избежать?

Утечка данных — это ситуация, когда информация из тестовой выборки прямо или косвенно попадает в процесс обучения, из-за чего оценка качества модели оказывается завышенной и не отражает реальное поведение на новых данных. Типичный источник — предобработка (масштабирование, заполнение пропусков) признаков по всему датасету ещё до разделения на выборки.

Другой частый случай — дублирующиеся или почти одинаковые примеры, случайно оказавшиеся и в обучающей, и в тестовой выборке: модель формально «предсказывает» правильно лишь потому, что уже видела похожий пример на этапе обучения. Распространённые источники утечки:

В задачах с временными рядами утечка возникает ещё и тогда, когда данные из будущего попадают в обучение модели, которая должна предсказывать прошлое или настоящее. Разбиение по времени, а не случайным образом, — стандартное решение для таких задач.

Что такое кросс-валидация и зачем она нужна?

Кросс-валидация — способ проверки модели, при котором данные разбивают на несколько частей (folds), и модель по очереди обучается на всех частях, кроме одной, а проверяется на оставшейся. Так каждый пример хотя бы раз побывает и в обучении, и в проверке, а итоговая оценка усредняется по всем разбиениям.

Самый распространённый вариант — k-fold с 5 или 10 частями: чем больше folds, тем надёжнее оценка, но тем дороже вычисления, потому что модель обучается заново для каждой части. Кросс-валидация особенно полезна, когда данных немного и единичное случайное разбиение может дать нестабильную оценку — например, если по случайности в тест попали преимущественно лёгкие или, наоборот, самые сложные примеры. Итоговую тестовую выборку при этом всё равно оставляют отдельно и не используют в кросс-валидации вовсе.

Для несбалансированных данных применяют стратифицированный k-fold — вариант, при котором каждая часть сохраняет исходную долю классов, а не формируется полностью случайно. Это особенно важно, если редкий класс и без того встречается в датасете нечасто: обычный случайный k-fold рискует оставить его почти без представителей в отдельных частях.

Частые вопросы об обучающей и тестовой выборке

Можно ли обучать и проверять модель на одних и тех же данных?

Технически можно, но оценка точности при этом будет обманчиво высокой: модель просто запомнит показанные примеры, а не научится обобщать закономерность. На новых, ранее не виденных данных такая модель обычно показывает результат заметно хуже.

Чем валидационная выборка отличается от тестовой?

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

Какую долю данных отдавать под тест, если данных мало?

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

Что такое утечка данных простыми словами?

Утечка данных — ситуация, когда информация из тестовой выборки прямо или косвенно попадает в обучение: например, дубликаты примеров в обеих выборках или масштабирование признаков по всему датасету до разбиения. Это завышает итоговую оценку качества модели.

Как разбиение на выборки связано с качеством разметки данных?

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

Смотрите также