Данные делятся на K частей; каждая по становится валидационной.
Ключевые тезисы
- K = 5 или 10 — практичный компромисс смещения, и стоимости.
- Требует K обучений модели.
- Перемешивание обязательно, если данные отсортированы.
Какую задачу решает
— базовая схема : выборка делится на равных частей, модель обучается раз, каждый раз оставляя одну часть на проверку. Итоговая оценка — среднее по частям, а их разброс показывает устойчивость результата.
Выбор — компромисс. Малое (3) означает мало обучающих данных в каждом прогоне и заниженную оценку качества. Большое (равное числу объектов, то есть leave-one-out) даёт почти несмещённую оценку, но огромную и очень дорого. На практике 5 или 10 покрывают почти все случаи.
При модель обучается лишь на 67% данных, и оценка систематически занижена — на малых выборках заметно. При обучение идёт на 90%, смещение мало. Дальнейший рост почти не уменьшает смещение, зато линейно увеличивает стоимость и повышает оценки, потому что обучающие выборки соседних фолдов становятся почти идентичными и их результаты сильно скоррелированы. Отсюда практическое правило: 5 при дорогом обучении, 10 при дешёвом, leave-one-out — только на выборках в пару сотен строк.
Подробный разбор
- Перемешать данные и разбить на равных частей.
- Для каждого : обучить на частях, оценить на оставшейся.
- Усреднить оценок.
| K | Данных на обучение | Стоимость | Свойства оценки |
|---|---|---|---|
| 3 | 67% | низкая | смещена вниз |
| 5 | 80% | средняя | хороший баланс |
| 10 | 90% | высокая | меньше смещение, больше разброс |
Repeated — несколько повторов с разным перемешиванием — даёт более устойчивую оценку, когда данных мало.
from sklearn.model_selection import RepeatedStratifiedKFold
cv = RepeatedStratifiedKFold(n_splits=5, n_repeats=3, random_state=42)
scores = cross_val_score(pipe, X, y, cv=cv, scoring="roc_auc")
print(f"{scores.mean():.4f} +- {scores.std():.4f} по {len(scores)} измерениям")Три повтора по пять фолдов дают 15 оценок вместо 5 — среднее становится устойчивее, а разброс оценивается честнее. Стоимость — втрое больше обучений, поэтому приём применяют на небольших выборках, где разброс особенно велик.
Где применяется
- Стандартная оценкаРабочая схема по умолчанию для табличных задач без структуры.
- Подбор Внутренний цикл в grid search и байесовской оптимизации.
- Out-of-fold предсказания — обязательное условие корректного .
- Предсказания для всей выборки, полученные честно, позволяют искать проблемные сегменты.
Плюсы, минусы и альтернативы
Плюсы
- Простая и предсказуемая схема.
- Каждый объект используется и для обучения, и для проверки.
- Даёт распределение метрики, а не одно число.
- Реализована во всех библиотеках одинаково.
Минусы
- Стоимость растёт линейно с .
- Без стратификации ломается при дисбалансе классов.
- Неприменима к временным рядам и данным с группами без модификаций.
- Оценка слегка занижена: модель обучается на данных, а не на всех.
Брать, если
- Данные табличные, без времени и без повторяющихся сущностей.
- Обучение достаточно быстрое, чтобы повторить его 5–10 раз.
Не брать, если
- Есть временная структура — нужен временной сплит.
- Есть группы (клиент, пациент) — нужен групповой вариант.
- Классы сильно несбалансированы — нужна стратификация.
Чем заменяют
Связанные темы
Утечки и честная валидация
Data leakage85%
Утечка данных · ДанныеСитуация, когда в обучении присутствует информация, недоступная в момент реального предсказания. Главная причина «слишком хороших» метрик.
Train / Validation / Test split85%
Разбиение выборки · ДанныеTrain учит, validation настраивает гиперпараметры, test даёт единственную честную оценку — и используется один раз.
Data leakage85%
Утечка данных · Практика MLСамая дорогая ошибка в ML: модель отлично работает офлайн и разваливается в проде.
Cross-validation85%
Кросс-валидация · Оценка моделейМногократное разбиение выборки, дающее оценку качества вместе с её разбросом.
Stratified K-Fold85%
Стратифицированный K-Fold · Оценка моделейK-Fold с сохранением пропорции классов в каждом фолде.
Leave-One-Out85%
Leave-One-Out · Оценка моделейПредельный случай: валидация состоит ровно из одного объекта, и так N раз.
Bootstrap85%
Бутстрэп · Оценка моделейМногократная выборка с возвращением: даёт распределение метрики и доверительные интервалы без предположений о нормальности.
Normalization & Standardization85%
Нормализация и стандартизация · ДанныеПриведение признаков к сопоставимым масштабам, без которого расстояния, градиенты и регуляризация работают некорректно.
Всё, что названо в описании, разобрано здесь же или в соседней теме — переходы под каждым определением.
Число фолдов
5 или 10 — рабочие значения. Больше — точнее и дороже, меньше — быстрее и смещённее.
Разбор ниже: Как устроен K-FoldПеремешивание
Обязательно, если данные отсортированы: иначе фолды окажутся однородными и оценка сломается.
Разбор ниже: Как устроен K-FoldRepeated k-fold
Несколько прогонов с разными разбиениями: снижает зависимость от конкретного разбиения.
Разбор ниже: Повторная кросс-валидацияOut-of-fold предсказания
Предсказание для каждой строки моделью, которая её не видела. Основа и .
Разбор ниже: Повторная кросс-валидацияПрофильная компетенция для ролей: Data Scientist, ML Engineer, Исследователь.
Усиливает профиль: MLOps-инженер, NLP-инженер, CV-инженер.
Глава «Оценка моделей» последний раз правилась . Нашли ошибку — напишите.