Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Cross-Validation

Кросс-валидация обучает и оценивает модель на k чередующихся разбиениях одного набора данных, чтобы оценить способность к обобщению. Разбираем этапы K-fold, варианты, утечку данных и код.

Перекрестная проверка оценивает, насколько хорошо модель будет работать на неизвестных данных: модель несколько раз обучают и проверяют на разных разбиениях одного набора данных, а затем объединяют полученные оценки. При перекрестной проверке с k блоками данные делятся на k равных частей — блоков; каждый блок по очереди становится валидационной выборкой, а модель обучается на остальных k − 1 блоках. Среднее значение k оценок служит оценкой производительности, а их разброс показывает, насколько эта оценка зависит от того, какие примеры попали в валидационную выборку. Перекрестная проверка — стандартный метод оценки, когда данных слишком мало для надежной оценки по одной отложенной выборке; ее широко используют для сравнения алгоритмов и настройки гиперпараметров, не затрагивая тестовые данные.

Как работает перекрестная проверка с k блоками#

Набор данных один раз перемешивают и делят на k блоков, обычно 5 или 10. В каждом из k раундов обучают новую модель на k − 1 блоках и оценивают ее на оставшемся блоке, поэтому каждый пример ровно один раз используется для валидации и k − 1 раз — для обучения. Вычисляют среднее значение k оценок и указывают его вместе со стандартным отклонением. После того как перекрестная проверка помогла выбрать модель или набор гиперпараметров, итоговую модель обычно заново обучают на всех обучающих данных с выбранными настройками. Крайний вариант — перекрестная проверка с исключением одного примера, где k равно числу примеров: в каждом раунде для обучения используется максимум данных, но моделей приходится обучать столько же, сколько есть примеров.

Как интерпретировать результаты перекрестной проверки#

Разброс значений по блокам не менее информативен, чем их среднее. Приведенный ниже скрипт для scikit-learn выполняет перекрестную проверку с 5 блоками на встроенном наборе данных о раке молочной железы:

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import StratifiedKFold, cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

# 569 labeled tumor samples with 30 features each
X, y = load_breast_cancer(return_X_y=True)

# The scaler sits inside the pipeline, so each round fits it on that round's training folds only
model = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))

# 5 stratified folds: each sample is validated exactly once
folds = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)
scores = cross_val_score(model, X, y, cv=folds)
print("Fold accuracies:", scores.round(3))
print(f"Mean {scores.mean():.3f} +/- {scores.std():.3f}")

Точность по пяти блокам находится в диапазоне от 0.956 до 1.000; среднее значение равно 0.979, а стандартное отклонение — 0.014. При одном разбиении 80/20 результатом могло бы стать любое из этих пяти чисел; диапазон составляет 4.4 процентного пункта. Размещение масштабировщика внутри конвейера исключает валидационный блок из вычисления статистик предобработки данных; предварительное масштабирование всего набора данных привело бы к утечке данных из каждого валидационного блока в обучающую выборку.

Выбор варианта перекрестной проверки#

Обычная перекрестная проверка с k блоками предполагает, что примеры независимы и взаимозаменяемы. Если это не так, случайное разбиение приводит к утечке информации или формирует блоки, не соответствующие задаче:

  • Стратифицированная перекрестная проверка с k блоками: сохраняет в каждом блоке пропорции классов, соответствующие пропорциям во всем наборе данных. Это важно, когда в одном из блоков иначе может не оказаться примеров редкого класса.
  • Групповая k-кратная проверка: все примеры одной группы, например одного пациента, видео или полевого участка, остаются в одной части, поэтому модель никогда не проверяется на почти дубликатах обучающих изображений. Стратифицированная групповая k-кратная проверка сочетает оба ограничения.
  • Разбиение временного ряда: модель обучается только на прошлом и проверяется на следующем за ним периоде; в каждом раунде обучающее окно расширяется, поскольку при перемешивании данных, упорядоченных по времени, модель увидит будущее.
  • Вложенная перекрестная проверка: во внешнем блоке выполняется внутренний цикл перекрестной проверки для настройки гиперпараметров, поэтому оценка по внешнему циклу не завышается из-за настройки на тех же блоках, по которым рассчитывается.

Перекрестная проверка для глубокого обучения#

Обучение глубокой сети k раз увеличивает вычислительные затраты в k раз, поэтому для больших наборов данных, таких как ImageNet и COCO, используют одно фиксированное валидационное разбиение, которого уже достаточно для стабильной оценки. Перекрестная проверка полезна для небольших наборов данных изображений размером от нескольких сотен до нескольких тысяч изображений, когда в одном валидационном разбиении может остаться лишь несколько примеров каждого класса. В руководстве Ultralytics по перекрестной проверке с k блоками набор данных для обнаружения объектов делится на пять блоков с помощью KFold из scikit-learn; для каждого блока создаются списки обучающих и валидационных изображений и YAML-файл набора данных, а затем обучается отдельная модель YOLO26. Поскольку на изображениях для обнаружения объектов обычно присутствует несколько классов, разбить их на стратифицированные блоки по одной метке нельзя, поэтому в руководстве также фиксируется отношение числа валидационных меток к числу обучающих для каждого класса в каждом блоке.

  • Проверка на отложенной выборке: одно разбиение, например 80/20, с однократной оценкой. Требуется один запуск обучения; этот подход подходит для больших наборов данных, а результат зависит от того, какие примеры попали в валидационное разбиение.
  • Бутстрэп: обучающие выборки формируются случайным отбором с возвращением, а каждая модель оценивается на примерах, не вошедших в соответствующую выборку. При перекрестной проверке с k блоками данные делятся без возвращения, поэтому каждый пример попадает ровно в один блок.
  • Оценка на тестовом наборе: перекрестная проверка помогает выбрать модель и настройки. Отдельный тестовый набор, не участвующий ни в одном блоке, дает итоговую оценку выбранной модели.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

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

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

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

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения