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

Кросс-валидация (также перекрёстная проверка или скользящий контроль) — статистический метод оценки прогностической модели и проверки её способности обобщать знания на независимых наборах данных[3]. Метод широко применяется в статистическом моделировании и машинном обучении и позволяет минимизировать риски переобучения и недообучения модели[4].

Общие сведения
Кросс-валидация
англ. Cross-validation
Область использования Статистика, Машинное обучение
Дата появления 1951[1]
Место появления журнал «Educational and Psychological Measurement»[2]
Автор понятия Чарльз Мозиер[1]

Определения

  • Кросс-валидация представляет собой последовательность повторных разбиений исходного датасета на обучающие и тестовые подмножества, в ходе которой:
  1. Исходные данные случайным образом делятся на k непересекающихся частей (фолдов)[5].
  2. На каждой из k итераций модель обучается на k − 1 фолдах, а оставшийся фолд используется для проверки качества.
  3. Полученные k оценок метрик (точность, F1-мера, среднеквадратичная ошибка и др.) агрегируются, формируя итоговую, менее смещённую оценку производительности[6].

Такое чередование обучающих и тестовых выборок обеспечивает то, что каждое наблюдение побывает в тестовой выборке ровно один раз, что делает оценку модели более надёжной[7].

  • AutoML — процесс автоматизации задач применения машинного обучения к реальным задачам. Это сочетание автоматизации и машинного обучения.
  • K-блочная кросс-валидация (K-Fold) — метод оценки качества модели машинного обучения, при котором данные делятся на k равных частей (блоков). Модель обучается k раз, каждый раз используя k − 1 блок для обучения и оставшийся 1 блок для тестирования. Итоговая оценка — среднее значение метрик качества по всем итерациям, что предотвращает переобучение.
  • F1-мера — метрика оценки качества моделей классификации, представляющая собой гармоническое среднее между точностью (precision) и полнотой (recall).

История

Идеи, лежащие в основе кросс-валидации, появились задолго до её формализации. В 1931 году С. Ларсон предложил разделять набор данных на две части: одну для оценки коэффициентов регрессии, а другую — для проверки прогнозов.

Термин «кросс-валидация» впервые ввёл Чарльз Мозиер в 1951 году в статье «Проблемы и схемы кросс-валидации» (англ. Problems and designs of cross-validation), опубликованной в журнале Educational and Psychological Measurement. В этой работе он описал метод, при котором выборка делится на две части, модель обучается на первой и проверяется на второй, после чего процесс повторяется в обратном порядке. Этот подход сегодня известен как двойная кросс-валидация (англ. double cross-validation)[8].

Современное понимание и широкое применение метода связано с работами статистиков в 1960-х и 1970-х годах. В 1968 году Фредерик Мостеллер и Джон Тьюки описали идею k-блочной кросс-валидации (англ. k-fold cross-validation). Ключевой работой, формализовавшей метод, считается статья Мервина Стоуна «Кросс-валидационный выбор и оценка статистических прогнозов» (англ. Cross-Validatory Choice and Assessment of Statistical Predictions) 1974 года[9]. В ней была детально описана процедура перекрёстной проверки по одному объекту (англ. Leave-One-Out Cross-Validation, LOOCV)[10]. Примерно в то же время значительный вклад в теоретическое обоснование метода внёс Сеймур Гайссер[11][12].

Последующее развитие метода включало создание более вычислительно эффективных и специализированных подходов:

  • Обобщённая кросс-валидация (англ. Generalized Cross-Validation, GCV) — предложена в 1979 году Грейс Ваба и Питером Крейвеном как вычислительно стабильная аппроксимация LOOCV, особенно для линейных моделей[13].
  • K-блочная кросс-валидация (англ. k-fold cross-validation) — стала популярной в 1980-х годах благодаря работам Лео Бреймана и его соавторов, а также анализу Прабира Бурмана (1989) и Пинга Чжана (1993)[14][15]. Этот метод предложил компромисс между надёжностью оценки и вычислительными затратами.
  • Специализированные виды k-блочной кросс-валидации — были разработаны для решения специфических задач:
    • Стратифицированная (англ. Stratified K-Fold) обеспечивает сохранение исходного процентного соотношения классов в каждом блоке, что критично для несбалансированных наборов данных[16].
    • Повторная (англ. Repeated K-Fold) уменьшает дисперсию оценки за счёт многократного повторения процедуры k-блочной проверки с разными случайными разбиениями.
    • Для временных рядов (англ. Time Series Cross-Validation) использует подходы, такие как «скользящая» (англ. rolling) или «прямая цепная» (англ. forward chaining) валидация, чтобы обучающая выборка всегда предшествовала тестовой во времени[17].
undefined

Структурные элементы процесса кросс-валидации

  • Разделение данных. Датасет перемешивается и разбивается на k фолдов (чаще 5 — 10). При дисбалансе классов применяется стратифицированное разбиение, сохраняющее пропорции классов в каждом фолде[4].
  • Итеративное обучение и тестирование. Для каждой итерации выбирается один фолд как валидационный, а оставшиеся объединяются в обучающую выборку. Модель тренируется и проверяется на разных поднаборах, что позволяет выявлять переобучение.
  • Агрегирование результатов. Значения выбранной метрики с каждой итерации усредняются (либо берётся медиана) для получения итоговой оценки устойчивости модели[6].
  • Интерпретация. Сводная метрика используется для сравнения алгоритмов, настройки гиперпараметров и выбора финальной модели[18].

Этапы работы

1. Выбор параметров
  • Определяется количество фолдов k (чаще 5 или 10). Большее k снижает смещение, но увеличивает вычислительные затраты[19].
  • Подбирается метрика качества в зависимости от типа задачи (классификация, регрессия)[20].
2. Разделение данных
  • Данные случайным образом делятся на k равных частей; для временных рядов применяются специализированные схемы TimeSeries Split, сохраняющие хронологию[21].
3. Обучение и проверка
  • На каждой итерации модель обучается на k − 1 фолдах и оценивается на оставшемся. Процесс повторяется k раз, обеспечивая использование каждого наблюдения в роли теста ровно один раз[4].
4. Сбор и агрегация метрик
  • После завершения цикла рассчитывается среднее (или др. агрегат) по всем полученным значениям метрики, формируя итоговую оценку качества[22].

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

  • Проактивная оценка обобщающей способности модели на невидимых данных[7].
  • Эффективное использование всего датасета: каждое наблюдение участвует и в обучении, и в тестировании.
  • Снижение дисперсии оценки благодаря усреднению по фолдам.
  • Выявление переобучения и оптимизация гиперпараметров.
  • Гибкость: возможна адаптация количества фолдов и стратегии разбиения под особенности данных.

Недостатки

  • Высокая вычислительная стоимость: модель обучается k раз.
  • Трудности с временными рядами и зависимыми наблюдениями.
  • Неоднозначный выбор оптимального k и стратегии разбиения.
  • При сильном дисбалансе классов требует стратифицированных методов.
  • Возможные проблемы с «утечкой» информации при неправильном разграничении обучающей и тестовой выборок.

Сферы применения

  • Оценка производительности моделей в академических исследованиях и промышленной Data-science-разработке[3].
  • Подбор и сравнение алгоритмов в системах AutoML.
  • Настройка гиперпараметров в задачах компьютерного зрения, анализа текста и звука.
  • Проверка надёжности моделей диагностики в медицине и биоинформатике[18].
  • Валидация прогнозных моделей финансирования, маркетинга и управления рисками.

Python

  • Scikit-learn — базовый набор классов `KFold`, `StratifiedKFold`, `LeaveOneOut`, `TimeSeriesSplit` и функция `cross_val_score`[18]. Расположение — sklearn.model_selection.
  • Deepchecks и Evidently — мониторинг дрейфа данных и качества моделей.
  • TensorFlow Data Validation (TFDV) — статистический анализ и обнаружение аномалий в данных.

R

  • Caret — унифицированный интерфейс к алгоритмам с поддержкой K-fold, LOOCV и повторяемой кросс-валидации.
  • mlr3 — фреймворк для сложных рабочих процессов, включая вложенную кросс-валидацию.
  • boot, cvms, nestedcv — специализированные пакеты для CV и бутстрапа высокоразмерных данных.

Другие инструменты

  • Alteryx — визуальный инструмент Cross-Validation для моделей классификации и регрессии.
  • H2O.ai AutoML — автоматическая генерация моделей с встроенной кросс-валидацией[18].

Примечания

  1. 1 2 Cross-validation. Devopedia. Дата обращения: 29 июля 2024.
  2. Problems and Designs of Cross-Validation. ResearchGate. Дата обращения: 29 июля 2024.
  3. 1 2 Кросс-валидация. Loginom Wiki. Дата обращения: 20 июня 2025.
  4. 1 2 3 Кросс-валидация: что это и как использовать. Sky.pro Wiki. Дата обращения: 20 июня 2025.
  5. Кросс-валидация (Cross-Validation). Long-short.pro. Дата обращения: 20 июня 2025.
  6. 1 2 Что такое кросс-валидация. Evmservice Blog. Дата обращения: 20 июня 2025.
  7. 1 2 Что такое кросс-валидация и зачем она нужна. Sky.pro. Дата обращения: 20 июня 2025.
  8. Problems and designs of cross-validation. Leiden University Scholarly Publications. Дата обращения: 29 июля 2024.
  9. A little more than half a century ago: Mervyn Stone's 1974 paper on cross-validation. Sample-Space.org. Дата обращения: 29 июля 2024.
  10. A Cross-Validatory Choice of Assessment. Biometrika. Дата обращения: 29 июля 2024.
  11. The Predictive Sample Reuse Method with Applications. Princeton University. Дата обращения: 29 июля 2024.
  12. Cross-validation: A review. University of Vermont. Дата обращения: 29 июля 2024.
  13. Time Series Cross-Validation. GeeksforGeeks. Дата обращения: 29 июля 2024.
  14. A cross-validation method for estimating the generalization error. Columbia University. Дата обращения: 29 июля 2024.
  15. A comparative study of ordinary cross-validation, v-fold cross-validation and the repeated learning-testing methods. Biometrika. Дата обращения: 29 июля 2024.
  16. Stratified K-Fold Cross-Validation. GeeksforGeeks. Дата обращения: 29 июля 2024.
  17. Cross-validation for time series. Rob J Hyndman. Дата обращения: 29 июля 2024.
  18. 1 2 3 4 Cross-validation. Ultralytics Glossary. Дата обращения: 20 июня 2025.
  19. Кросс-валидация. Nerdit.ru. Дата обращения: 20 июня 2025.
  20. Метрики классификации и регрессии. Яндекс Практикум. Дата обращения: 20 июня 2025.
  21. Методы кросс-валидации для временных рядов. OTUS. Дата обращения: 20 июня 2025.
  22. Настройка кросс-валидации в Azure Machine Learning. Microsoft Learn. Дата обращения: 20 июня 2025.

Категории