Оценка моделей

K-Fold

K-Fold

актуальноТекущий рабочий стандарт

Направления: Машинное обучение · Оценка моделей

Данные делятся на K частей; каждая по становится валидационной.

Ключевые тезисы

  • K = 5 или 10 — практичный компромисс смещения, и стоимости.
  • Требует K обучений модели.
  • Перемешивание обязательно, если данные отсортированы.

Какую задачу решает

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

Выбор — компромисс. Малое (3) означает мало обучающих данных в каждом прогоне и заниженную оценку качества. Большое (равное числу объектов, то есть leave-one-out) даёт почти несмещённую оценку, но огромную и очень дорого. На практике 5 или 10 покрывают почти все случаи.

Почему 5 и 10, а не 3 и не 100

При модель обучается лишь на 67% данных, и оценка систематически занижена — на малых выборках заметно. При обучение идёт на 90%, смещение мало. Дальнейший рост почти не уменьшает смещение, зато линейно увеличивает стоимость и повышает оценки, потому что обучающие выборки соседних фолдов становятся почти идентичными и их результаты сильно скоррелированы. Отсюда практическое правило: 5 при дорогом обучении, 10 при дешёвом, leave-one-out — только на выборках в пару сотен строк.

Подробный разбор

2 подтемы — объяснения, формулы, примеры и интерактивные графики.

  1. Перемешать данные и разбить на равных частей.
  2. Для каждого : обучить на частях, оценить на оставшейся.
  3. Усреднить оценок.
KДанных на обучениеСтоимостьСвойства оценки
367%низкаясмещена вниз
580%средняяхороший баланс
1090%высокаяменьше смещение, больше разброс
На практике

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%

Нормализация и стандартизация · Данные

Приведение признаков к сопоставимым масштабам, без которого расстояния, градиенты и регуляризация работают некорректно.

Кому эта тема нужна

Профильная компетенция для ролей: Data Scientist, ML Engineer, Исследователь.

Усиливает профиль: MLOps-инженер, NLP-инженер, CV-инженер.

Следующий шагДальше по связи: Data leakageСитуация, когда в обучении присутствует информация, недоступная в момент реального предсказания. Главная причина «слишком хороших» метрик.Перейти →

Глава «Оценка моделей» последний раз правилась . Нашли ошибку — напишите.