Узнайте, как перекрестная проверка улучшает обобщение модели и предотвращает переобучение. Узнайте, как реализовать K-кратную оценку с помощью Ultralytics для надежного машинного обучения.
detect росс-валидация — это надежная процедура повторной выборки, используемая для оценки эффективности моделей машинного обучения (ML) на ограниченной выборке данных . В отличие от стандартного метода удержания, который разделяет данные на один набор для обучения и один набор для тестирования, кросс-валидация предполагает разделение набора данных на несколько подмножеств, чтобы каждая точка данных использовалась как для обучения, так и для валидации. Эта техника имеет решающее значение для оценки того, как результаты статистического анализа будут обобщаться на независимый набор данных, помогая обнаружить переобучение, когда модель может запоминать учебные примеры, а не изучать обобщаемые шаблоны.
Наиболее широко используемым вариантом этой техники является K-кратная перекрестная валидация. В этом процессе весь набор данных случайным образом делится на k равных групп, или «складов». Процесс обучения затем повторяется k раз. В каждой итерации один склад выступает в качестве валидационных данных для тестирования модели, а остальные k-1 складов служат в качестве обучающих данных.
Окончательный показатель производительности обычно рассчитывается путем усреднения оценок, таких как точность, прецизионность или средняя средняя точность (mAP), полученных в каждом цикле. Такой подход значительно снижает дисперсию, связанную с одним испытанием разделения на обучающую и тестовую выборки, обеспечивая более надежную оценку ошибки обобщения. Это гарантирует, что оценка не будет искажена произвольным выбором тестовых данных.
Перекрестная проверка особенно полезна при работе с небольшими наборами данных или при выполнении тщательной настройки гиперпараметров. В то время как современные фреймворки глубокого обучения, такие как PyTorch упрощают цикл обучения , управление складками требует тщательной подготовки данных.
Следующий пример демонстрирует, как выполнить итерацию по заранее сгенерированным файлам конфигурации YAML для 5-кратного кросс-валидационного эксперимента с использованием модели YOLO26. При этом предполагается, что вы уже разделили набор данных на пять отдельных файлов конфигурации.
from ultralytics import YOLO
# List of dataset configuration files representing 5 folds
fold_yamls = [f"dataset_fold_{i}.yaml" for i in range(5)]
for i, yaml_file in enumerate(fold_yamls):
# Load a fresh YOLO26 Nano model for each fold
model = YOLO("yolo26n.pt")
# Train the model, saving results to a unique project directory
results = model.train(data=yaml_file, epochs=20, project="cv_experiment", name=f"fold_{i}")
Для более глубокого изучения автоматизации генерации разбиения обратитесь к руководству по K-кратной перекрестной проверке.
Перекрестная валидация незаменима в отраслях, где данных мало, их сбор дорого стоит или где требуется критически важная для безопасности надежность.
Интеграция перекрестной проверки в жизненный цикл разработки ИИ дает важную информацию о компромиссе между смещением и дисперсией.
Важно отличать перекрестную валидацию от других терминов, связанных с оценкой:
Управление артефактами, метриками и моделями из нескольких слоев может быть сложной задачей. Ultralytics упрощает эту задачу, предлагая централизованное отслеживание экспериментов , что позволяет командам сравнивать производительность в разных слоях и легко визуализировать результаты оценки моделей.