Перекрестная проверка

Материал из MachineLearning.

Перейти к: навигация, поиск
Статья написана с использованием LLM GPT-4 Turbo и проверена участником Amir Baidanov 02:56, 19 июля 2026 (MSD)


Перекрёстная проверка (cross-validation, CV) — метод оценки обобщающей способности моделей машинного обучения, основанный на многократном разбиении обучающей выборки на непересекающиеся подмножества. В отличие от простого разбиения на тренировочную и тестовую выборки (hold-out), кросс-валидация позволяет использовать все данные как для обучения, так и для оценки, снижая зависимость результата от конкретного разбиения. Метод является стандартным инструментом для выбора гиперпараметров, сравнения моделей и оценки их качества, особенно когда объём данных ограничен.

Содержание

Интуитивная картина

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

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

Историческая справка

Перекрёстная проверка имеет долгую историю в статистике и машинном обучении. Одним из первых методов был leave-one-out (LOO), предложенный в 1930-х годах для оценки качества статистических моделей [1]. В 1970-х годах Сеймур Гейссер предложил обобщение на K-fold кросс-валидацию [1].

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

Базовые схемы кросс-валидации

Hold-out

Простейшая схема: выборка делится на две части — тренировочную (обычно 60–80%) и тестовую (20–40%). Модель обучается на тренировочной части и оценивается на тестовой.

Преимущества: простота и быстрота. Недостатки: сильная зависимость от конкретного разбиения; при малом объёме данных оценка может быть нестабильной.

K-fold кросс-валидация

Выборка разбивается на K приблизительно равных непересекающихся блоков (фолдов). Для каждого i = 1, \dots, K:

  1. Модель обучается на всех блоках, кроме i-го;
  2. Оценивается на i-м блоке (валидационном);
  3. Вычисляется метрика качества.

Итоговая оценка — среднее арифметическое метрик по всем K итерациям:

CV = \frac{1}{K} \sum_{i=1}^K \text{Metric}(model_i, fold_i)

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

Leave-One-Out (LOO)

Частный случай K-fold при K = N, где N — число объектов. На каждом шаге один объект используется для валидации, остальные N - 1 — для обучения.

Преимущества: практически несмещённая оценка. Недостатки: крайне высокая вычислительная сложность; для многих алгоритмов (нейронные сети) практически неприменима.

Стратифицированная K-fold

Вариант K-fold для задач классификации с несбалансированными классами. При разбиении сохраняется пропорция классов в каждом блоке, что особенно важно для задач с редкими классами.

Варианты для временных рядов

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

  • TimeSeriesSplit — обучающая выборка всегда идёт перед валидационной;
  • Forward chaining — последовательное расширение обучающего окна.

Эти методы сохраняют временной порядок и предотвращают утечку данных из будущего.

Выбор гиперпараметров с использованием кросс-валидации

Кросс-валидация является стандартным инструментом для выбора гиперпараметров. Для каждого набора гиперпараметров выполняется кросс-валидация, и выбираются параметры с наилучшей средней метрикой.

GridSearchCV

Полный перебор по сетке гиперпараметров. Недостаток: экспоненциальная сложность при большом числе параметров.

RandomizedSearchCV

Случайный поиск по распределениям гиперпараметров. Эффективнее сеточного при большом числе параметров [1].

Байесовская оптимизация

Более эффективный подход, использующий вероятностную модель для направленного поиска, часто дающий лучшие результаты при меньшем числе итераций [1].

Пример: выбор гиперпараметров с K-fold

Рассмотрим задачу классификации на наборе из 1000 объектов. Мы хотим выбрать оптимальное значение гиперпараметра C для SVM с RBF-ядром.

1. Разбиваем выборку на 5 блоков по 200 объектов в каждом. 2. Для каждого значения C \in \{0.1, 1, 10, 100\}:

  - Для каждого блока i:
    * Обучаем модель на остальных 4 блоках (800 объектов);
    * Вычисляем accuracy на блоке i (200 объектов).
  - Вычисляем среднюю accuracy по 5 блокам.

3. Выбираем C с максимальной средней accuracy.

Результат: если C = 1 даёт accuracy 0.89, C = 10 — 0.91, C = 100 — 0.90, выбираем C = 10.

Этот пример показывает, как кросс-валидация позволяет объективно сравнивать гиперпараметры, используя все данные для проверки.

Связь с теорией обобщения

Кросс-валидация даёт оценку ожидаемой ошибки на новых данных. Согласно теории Вапника — Червоненкиса, обобщающая способность модели зависит от сложности класса моделей и числа объектов [1]. Кросс-валидация позволяет оценить эту способность на практике.

Смещение и разброс оценок

  • Для малых K (например, 2–3) оценка имеет высокое смещение (обучающая выборка сильно меньше полной) и низкую дисперсию;
  • Для больших K (например, LOO) оценка имеет низкое смещение, но высокую дисперсию и вычислительную стоимость;
  • K = 5 или 10 дают хороший баланс между смещением и дисперсией [1].

Практические рекомендации

Выбор числа блоков K

  • При небольшом объёме данных (<100) — использовать LOO или K=5–10;
  • При среднем объёме (100–10000) — K=5 или 10;
  • При большом объёме (>10000) — K=3–5 для снижения вычислительных затрат.

Обработка несбалансированных данных

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

Работа с зависимыми данными

Для временных рядов, географических данных или данных с групповой структурой использовать групповые разбиения (GroupKFold, TimeSeriesSplit), чтобы объекты из одной группы не попадали одновременно в тренировочную и валидационную выборки.

Предотвращение утечки данных

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

Вычислительные затраты

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

Преимущества и недостатки

Преимущества

  • Более устойчивая оценка качества по сравнению с hold-out;
  • Эффективное использование ограниченных данных;
  • Позволяет выбирать гиперпараметры и сравнивать модели;
  • Стандартный метод, реализованный во всех популярных библиотеках.

Недостатки

  • Высокая вычислительная сложность (особенно при больших K);
  • Сложность применения к временным рядам и зависимым данным;
  • Может давать смещённые оценки при неправильной стратификации;
  • При наличии сильных выбросов может быть нестабильна.

Современные направления

Вложенная кросс-валидация

Двойной цикл кросс-валидации: внешний цикл оценивает финальную модель, внутренний — выбирает гиперпараметры. Это даёт несмещённую оценку качества, но требует значительных вычислений [1].

Кросс-валидация для нейросетей

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

Групповые разбиения

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

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

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

Краткий вывод

Перекрёстная проверка — универсальный метод оценки обобщающей способности моделей машинного обучения, особенно ценный при ограниченном объёме данных. K-fold кросс-валидация с K=5 или 10 является стандартным выбором для большинства задач. Правильное применение требует учёта структуры данных (несбалансированность классов, временные зависимости, группировки) и предотвращения утечки данных. Несмотря на вычислительные затраты, кросс-валидация остаётся золотым стандартом для выбора гиперпараметров и сравнения моделей, а современные разработки направлены на её адаптацию к большим данным и сложным архитектурам.

См. также

Примечания


Литература

  1. Stone M. (1974). Cross-validatory choice and assessment of statistical predictions. Journal of the Royal Statistical Society, 36(2): 111–147.
  2. Geisser S. (1975). The predictive sample reuse method with applications. Journal of the American Statistical Association, 70(350): 320–328.
  3. Vapnik V. N. (1998). Statistical Learning Theory. Wiley.
  4. Hastie T., Tibshirani R., Friedman J. (2009). The Elements of Statistical Learning. Springer.
  5. Bergstra J., Bengio Y. (2012). Random search for hyper-parameter optimization. Journal of Machine Learning Research, 13(Feb): 281–305.
  6. Snoek J., Larochelle H., Adams R. P. (2012). Practical Bayesian optimization of machine learning algorithms. Advances in Neural Information Processing Systems, 25: 2951–2959.
  7. Varma S., Simon R. (2006). Bias in error estimation when using cross-validation for model selection. BMC Bioinformatics, 7(1): 91.
  8. Kohavi R. (1995). A study of cross-validation and bootstrap for accuracy estimation and model selection. Proceedings of the 14th International Joint Conference on Artificial Intelligence, 1137–1143.

Ссылки

Личные инструменты