Train учит, validation настраивает , test даёт единственную честную оценку — и используется один раз.
Ключевые тезисы
- Стратификация сохраняет баланс классов в каждой части выборки.
- Группы (пользователи, пациенты, устройства) не должны пересекаться между частями.
- Для временных данных разбиение только хронологическое, без перемешивания.
Какую задачу решает
Оценить модель на тех же данных, на которых она обучалась, невозможно — она их запомнила. Отсюда разбиение: на обучении подбираются веса, на валидации — и решения инженера, на тесте измеряется итог, причём ровно один раз.
Третья часть нужна именно потому, что валидация тоже расходуется. Каждый раз, когда вы посмотрели на валидационную метрику и что-то изменили, вы немного подогнали модель под неё. После сотни экспериментов валидационная оценка становится оптимистичной так же, как обучающая, — и честное число может дать только выборка, которую никто не видел.
Прогноз продаж: строки — «магазин, день, продажи». Случайное разбиение положит 1 марта в обучение, 2 марта в тест, 3 марта снова в обучение. Модель, по сути, интерполирует между известными соседними днями — задача, которой в проде не существует, потому что там нужно предсказывать вперёд. на такой валидации окажется вдвое лучше реального. Правильная схема: обучение до 31 декабря, валидация январь — февраль, тест март — то есть ровно та постановка, которая будет в эксплуатации.
Подробный разбор
Если подбирать по тесту, оценка перестаёт быть честной: вы подстроились под конкретную выборку. Валидация нужна как «расходный материал» для настройки, тест — как единственная финальная проверка, которую используют один раз.
| Часть | Доля (типично) | Для чего |
|---|---|---|
| Train | 60–80% | обучение параметров |
| Validation | 10–20% | , , |
| Test | 10–20% | финальная оценка, один раз |
- Дисбаланс классов →
StratifiedKFold: доля редкого класса сохраняется в каждой части. - Связанные объекты →
GroupKFold: все записи одного пользователя, пациента или устройства идут в одну часть. - Временные данные → хронологическое разбиение: обучаемся на прошлом, проверяемся на будущем, без перемешивания.
Если объектов мало, вместо одной валидационной выборки лучше использовать : она даёт не только среднее качество, но и его разброс.
Где применяется
- Любое обучение с учителемБазовая гигиена: без корректного разбиения все метрики бессмысленны.
- Временные ряды и прогноз по времени вместо случайного разбиения.
- Медицинские и пользовательские данныеГрупповое разбиение по пациенту или клиенту.
- Финальная приёмкаТест открывается один раз, перед решением о выводе в прод.
Плюсы, минусы и альтернативы
Плюсы
- Единственный способ получить честную оценку качества.
- Делает эксперименты сравнимыми между собой.
- Правильная схема разбиения ловит целый класс утечек ещё до обучения.
Минусы
- Отнимает данные у обучения — болезненно на малых выборках.
- Оценка на одном разбиении шумна: разница в 1% может быть случайностью.
- Схему легко построить неверно, и ошибка не будет видна в метриках.
Брать, если
- Всегда, с первого эксперимента.
- Отдельный тест — когда предстоит много итераций и решений по валидации.
Не брать, если
- Данных совсем мало — вместо отдельной валидации используйте , а тест всё равно оставьте.
- Не подглядывайте в тест по ходу работы: после этого он перестаёт быть тестом.
Чем заменяют
Видеолекции
Тайм-кода именно на эту тему в записях нет. Но глава «Данные» разобрана в курсах целиком — с той оговоркой, что место в записи придётся искать самому.
Связанные темы
Утечки и честная валидация
Data leakage85%
Утечка данных · ДанныеСитуация, когда в обучении присутствует информация, недоступная в момент реального предсказания. Главная причина «слишком хороших» метрик.
Data leakage85%
Утечка данных · Практика MLСамая дорогая ошибка в ML: модель отлично работает офлайн и разваливается в проде.
Cross-validation85%
Кросс-валидация · Оценка моделейМногократное разбиение выборки, дающее оценку качества вместе с её разбросом.
K-Fold85%
K-Fold · Оценка моделейДанные делятся на K частей; каждая по очереди становится валидационной.
Stratified K-Fold85%
Стратифицированный K-Fold · Оценка моделейK-Fold с сохранением пропорции классов в каждом фолде.
Leave-One-Out85%
Leave-One-Out · Оценка моделейПредельный случай: валидация состоит ровно из одного объекта, и так N раз.
Bootstrap85%
Бутстрэп · Оценка моделейМногократная выборка с возвращением: даёт распределение метрики и доверительные интервалы без предположений о нормальности.
Normalization & Standardization85%
Нормализация и стандартизация · ДанныеПриведение признаков к сопоставимым масштабам, без которого расстояния, градиенты и регуляризация работают некорректно.
Всё, что названо в описании, разобрано здесь же или в соседней теме — переходы под каждым определением.
Три части
Train подбирает параметры, validation — и решения, test даёт финальную оценку.
Разбор ниже: Зачем три части, а не двеСтратификация
Сохранение доли классов в каждой части. Обязательна при дисбалансе и малых выборках.
Разбор ниже: Стратификация, группы и времяВременное разбиение
Обучение на прошлом, проверка на будущем. Случайное разбиение временного ряда — гарантированная утечка.
Разбор ниже: Стратификация, группы и времяГрупповое разбиение
Все строки одной сущности попадают в одну часть: иначе модель узнаёт клиента, а не закономерность.
Разбор ниже: Стратификация, группы и времяРасход валидации
Каждое решение по валидационной метрике немного подгоняет модель под неё.
Разбор ниже: Зачем три части, а не двеПрофильная компетенция для ролей: Data Scientist, ML Engineer.
Усиливает профиль: Аналитик данных, Data Engineer.
Глава «Данные» последний раз правилась . Нашли ошибку — напишите.