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

Метод оценки модели, при котором данные разбиваются на k частей, и модель поочерёдно обучается на k-1 частях и тестируется на оставшейся.

English cross-validation, rotation estimation
Синонимы перекрёстная проверка, CV, k-fold cross-validation, rotation estimation

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

Как это работает

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

Например, при k=5 данные делятся на 5 частей. Модель обучается 5 раз, каждый раз тестируясь на одной из частей. Итоговая метрика — среднее по всем фолдам. Это позволяет снизить дисперсию оценки и избежать зависимости от одного случайного разбиения.

Зачем это нужно

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

Примеры

  • Выбор гиперпараметров: при подборе глубины дерева решений или количества нейронов в слое кросс-валидация позволяет выбрать значение, которое даёт наилучшее среднее качество на всех фолдах.
  • Сравнение моделей: чтобы выбрать между логистической регрессией и градиентным бустингом, можно сравнить их средние ошибки, полученные с помощью 10-кратной кросс-валидации.
  • Оценка на малых данных: в медицинских исследованиях, где выборка пациентов мала, кросс-валидация позволяет эффективно использовать каждый пример.
  • Leave-one-out (LOO): частный случай, когда k равно числу наблюдений. Модель обучается на всех данных, кроме одного объекта, который используется для теста. Применяется для очень маленьких выборок.

Формула или метрика

Средняя ошибка кросс-валидации вычисляется как:

CV = (1/k) * Σ_{i=1}^{k} L(y_i, f_{-i}(x_i))

где L — функция потерь, f_{-i} — модель, обученная без i-го фолда, y_i — истинные ответы на i-м фолде, x_i — признаки i-го фолда.

Типичные ошибки

  • Игнорирование временной структуры: для временных рядов нельзя случайно перемешивать данные, иначе модель будет использовать будущее для предсказания прошлого. Нужна специальная кросс-валидация с расширяющимся окном.
  • Утечка данных: если при разбиении не учитывать группы (например, один пациент может попасть и в train, и в test), оценка будет завышена. Требуется GroupKFold.
  • Слишком маленькое k: при k=2 оценка становится нестабильной, так как каждый фолд содержит половину данных. Обычно выбирают k=5 или 10.
  • Применение после отбора признаков: если отбор признаков проводился на всех данных до кросс-валидации, это приводит к утечке и переоптимистичной оценке.

Как улучшить

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

Источники

Hastie, T., Tibshirani, R., Friedman, J. The Elements of Statistical Learning. Springer, 2009. — ISBN 978-0-387-84857-0 (глава 7).

scikit-learn documentation: Cross-validation: evaluating estimator performance — https://scikit-learn.org/stable/modules/cross_validation.html

Kohavi, R. A study of cross-validation and bootstrap for accuracy estimation and model selection. IJCAI, 1995.

Arlot, S., Celisse, A. A survey of cross-validation procedures for model selection. Statistics Surveys, 2010.