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

Cross-validation

Кросс-валидация

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

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

Многократное , дающее оценку качества вместе с её разбросом.

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

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

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

Оценка на одной отложенной выборке шумна: разница в 1–2% между моделями может целиком объясняться тем, какие именно строки попали в тест. На небольших данных это делает сравнение бессмысленным, а решения — случайными.

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

Как читать результат кросс-валидации

Модель A: 0.812 ± 0.021 по 5 фолдам. Модель B: 0.825 ± 0.019. Разница средних 0.013 при разбросе около 0.02 — то есть внутри шума, и утверждать превосходство B нельзя. Что делать: увеличить число фолдов или повторить с разными сидами (repeated ), а лучше провести парный тест на одних и тех же фолдах — он учитывает, что модели проверялись на одинаковых данных, и заметно чувствительнее.

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

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

Оценка на одной отложенной выборке сильно зависит от того, какие объекты в неё попали. усредняет несколько таких оценок и заодно показывает их разброс.

Обозначения
  • номер или количество: индекс шага, число соседей, кластеров или позиций
  • суммирование по всем перечисленным элементам
На практике

Разброс важнее среднего. Модель с CV надёжнее, чем : вторая может в проде показать и 0.78.

фолд 1
фолд 2
фолд 3
фолд 4
фолд 5
обучение валидация
обучений модели5
доля валидации20%
схемаK-Fold
Схема разбиения
Меняйте K: чем больше фолдов, тем больше обучений и тем больше данных в каждом обучении

# Неправильно: скейлер видит валидационные объекты
X = StandardScaler().fit_transform(X)
cross_val_score(model, X, y, cv=5)

# Правильно: всё внутри пайплайна
pipe = Pipeline([("sc", StandardScaler()), ("clf", model)])
cross_val_score(pipe, X, y, cv=5)

То же касается , , борьбы с дисбалансом (SMOTE) и заполнения пропусков. Если хоть один из этих шагов увидит валидационные объекты, оценка станет завышенной.

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

  • Отдельный hold-out, который вообще не участвует в отборе, — единственная честная финальная оценка.
  • Вложенная кросс-валидация: внутренний цикл подбирает , внешний оценивает качество процедуры целиком.
  • Меньше перебора: случайный поиск по разумному пространству вместо сетки из тысяч точек.
  • Смотреть на разброс: разница в 0.001 при стандартном отклонении по фолдам 0.01 — это не разница.
На практике

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

Где применяется

  • Малые выборкиДо нескольких тысяч строк одна слишком шумна.
  • Сравнение моделейРазброс по фолдам показывает, реальна ли разница.
  • Подбор Стандартный способ оценки внутри перебора.
  • Число деревьев подбирается на валидационной части каждого фолда.

Плюсы, минусы и альтернативы

Плюсы

  • Использует все данные и для обучения, и для проверки.
  • Даёт оценку разброса, а не только среднее.
  • Резко снижает риск случайно выбрать худшую модель.
  • Позволяет строить out-of-fold предсказания для .

Минусы

  • Обучение повторяется раз — дорого для тяжёлых моделей.
  • Легко построить неправильно и получить утечку.
  • Не подходит для временных рядов в обычном виде.
  • Для данных с группами требует специальной схемы.

Брать, если

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

Не брать, если

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

Чем заменяют

Связанные темы

Ансамблирование · Утечки и честная валидация · Подбор гиперпараметров · Перебор конфигураций

Hyperparameter tuning96%

Настройка гиперпараметров · Практика ML

Поиск конфигурации модели по валидационной метрике — последний, а не первый шаг работы.

Random Search96%

Случайный поиск · Практика ML

Случайная выборка конфигураций из заданных распределений.

Bayesian Optimization96%

Байесовская оптимизация · Практика ML

Строит модель зависимости метрики от гиперпараметров и выбирает следующую точку осознанно.

Stacking and Blending85%

Стекинг и блендинг · Классическое машинное обучение

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

Random Forest85%

Случайный лес · Классическое машинное обучение

Бэггинг деревьев со случайными подвыборками объектов и признаков: усреднение резко снижает дисперсию.

Gradient Boosting85%

Градиентный бустинг · Классическое машинное обучение

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

Variance85%

Дисперсия · Математический справочник

Мера разброса значений вокруг среднего.

Data leakage85%

Утечка данных · Данные

Ситуация, когда в обучении присутствует информация, недоступная в момент реального предсказания. Главная причина «слишком хороших» метрик.

Train / Validation / Test split85%

Разбиение выборки · Данные

Train учит, validation настраивает гиперпараметры, test даёт единственную честную оценку — и используется один раз.

Data leakage85%

Утечка данных · Практика ML

Самая дорогая ошибка в ML: модель отлично работает офлайн и разваливается в проде.

K-Fold85%

K-Fold · Оценка моделей

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

Stratified K-Fold85%

Стратифицированный K-Fold · Оценка моделей

K-Fold с сохранением пропорции классов в каждом фолде.

Leave-One-Out85%

Leave-One-Out · Оценка моделей

Предельный случай: валидация состоит ровно из одного объекта, и так N раз.

Bootstrap85%

Бутстрэп · Оценка моделей

Многократная выборка с возвращением: даёт распределение метрики и доверительные интервалы без предположений о нормальности.

Normalization & Standardization85%

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

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

Grid Search80%

Поиск по сетке · Практика ML

Полный перебор всех комбинаций заданных значений гиперпараметров.

Learning Rate Scheduling80%

Расписание скорости обучения · Оптимизация обучения

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

Distributed Hyperparameter Search80%

Распределённый подбор гиперпараметров · Вычислительная инфраструктура

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

Experiment Tracking80%

Трекинг экспериментов · MLOps

Фиксация параметров, метрик, артефактов и версии кода для каждого запуска.

Проверить себя

Тема встречается в тестах по направлениям — ошибки приведут обратно на эту страницу.

Тема в работе целиком

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

Следующий шагПроверить себя: Классический MLТема встречается в этом тесте 1 раз. Ошибка приведёт обратно на эту страницу — с объяснением, что именно не сошлось.Перейти →

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