Кросс-валидация
Кросс-валидация (также перекрёстная проверка или скользящий контроль) — статистический метод оценки прогностической модели и проверки её способности обобщать знания на независимых наборах данных[3]. Метод широко применяется в статистическом моделировании и машинном обучении и позволяет минимизировать риски переобучения и недообучения модели[4].
Общие сведения
| Кросс-валидация | |
|---|---|
| англ. Cross-validation | |
| Область использования | Статистика, Машинное обучение |
| Дата появления | 1951[1] |
| Место появления | журнал «Educational and Psychological Measurement»[2] |
| Автор понятия | Чарльз Мозиер[1] |
Определения
- Кросс-валидация представляет собой последовательность повторных разбиений исходного датасета на обучающие и тестовые подмножества, в ходе которой:
- Исходные данные случайным образом делятся на k непересекающихся частей (фолдов)[5].
- На каждой из k итераций модель обучается на k − 1 фолдах, а оставшийся фолд используется для проверки качества.
- Полученные 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].
Структурные элементы процесса кросс-валидации
- Разделение данных. Датасет перемешивается и разбивается на 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].
- Валидация прогнозных моделей финансирования, маркетинга и управления рисками.
- Scikit-learn — базовый набор классов `KFold`, `StratifiedKFold`, `LeaveOneOut`, `TimeSeriesSplit` и функция `cross_val_score`[18]. Расположение — sklearn.model_selection.
- Deepchecks и Evidently — мониторинг дрейфа данных и качества моделей.
- TensorFlow Data Validation (TFDV) — статистический анализ и обнаружение аномалий в данных.
- Caret — унифицированный интерфейс к алгоритмам с поддержкой K-fold, LOOCV и повторяемой кросс-валидации.
- mlr3 — фреймворк для сложных рабочих процессов, включая вложенную кросс-валидацию.
- boot, cvms, nestedcv — специализированные пакеты для CV и бутстрапа высокоразмерных данных.
- Alteryx — визуальный инструмент Cross-Validation для моделей классификации и регрессии.
- H2O.ai AutoML — автоматическая генерация моделей с встроенной кросс-валидацией[18].
Примечания
- ↑ 1 2 Cross-validation. Devopedia. Дата обращения: 29 июля 2024.
- ↑ Problems and Designs of Cross-Validation. ResearchGate. Дата обращения: 29 июля 2024.
- ↑ 1 2 Кросс-валидация. Loginom Wiki. Дата обращения: 20 июня 2025.
- ↑ 1 2 3 Кросс-валидация: что это и как использовать. Sky.pro Wiki. Дата обращения: 20 июня 2025.
- ↑ Кросс-валидация (Cross-Validation). Long-short.pro. Дата обращения: 20 июня 2025.
- ↑ 1 2 Что такое кросс-валидация. Evmservice Blog. Дата обращения: 20 июня 2025.
- ↑ 1 2 Что такое кросс-валидация и зачем она нужна. Sky.pro. Дата обращения: 20 июня 2025.
- ↑ Problems and designs of cross-validation. Leiden University Scholarly Publications. Дата обращения: 29 июля 2024.
- ↑ A little more than half a century ago: Mervyn Stone's 1974 paper on cross-validation. Sample-Space.org. Дата обращения: 29 июля 2024.
- ↑ A Cross-Validatory Choice of Assessment. Biometrika. Дата обращения: 29 июля 2024.
- ↑ The Predictive Sample Reuse Method with Applications. Princeton University. Дата обращения: 29 июля 2024.
- ↑ Cross-validation: A review. University of Vermont. Дата обращения: 29 июля 2024.
- ↑ Time Series Cross-Validation. GeeksforGeeks. Дата обращения: 29 июля 2024.
- ↑ A cross-validation method for estimating the generalization error. Columbia University. Дата обращения: 29 июля 2024.
- ↑ A comparative study of ordinary cross-validation, v-fold cross-validation and the repeated learning-testing methods. Biometrika. Дата обращения: 29 июля 2024.
- ↑ Stratified K-Fold Cross-Validation. GeeksforGeeks. Дата обращения: 29 июля 2024.
- ↑ Cross-validation for time series. Rob J Hyndman. Дата обращения: 29 июля 2024.
- ↑ 1 2 3 4 Cross-validation. Ultralytics Glossary. Дата обращения: 20 июня 2025.
- ↑ Кросс-валидация. Nerdit.ru. Дата обращения: 20 июня 2025.
- ↑ Метрики классификации и регрессии. Яндекс Практикум. Дата обращения: 20 июня 2025.
- ↑ Методы кросс-валидации для временных рядов. OTUS. Дата обращения: 20 июня 2025.
- ↑ Настройка кросс-валидации в Azure Machine Learning. Microsoft Learn. Дата обращения: 20 июня 2025.