교차 검증이 모델의 일반화 능력을 향상시키고 과적합을 방지하는 방법을 알아보세요. Ultralytics 활용한 K-Fold 평가 구현법을 통해 견고한 머신러닝을 구현하는 방법을 확인하세요.
교차 검증은 제한된 데이터 샘플에서 머신 러닝(ML) 모델의 성능을 평가하기 위해 사용되는 강력한 통계적 재표본 추출 절차입니다. 데이터를 단일 훈련 세트와 테스트 세트로 분할하는 표준 홀드아웃 방법과 달리, 교차 검증은 데이터셋을 여러 부분 집합으로 분할하여 모든 데이터 포인트가 훈련과 검증 모두에 사용되도록 합니다. 이 기법은 통계 분석 결과가 독립적인 데이터 세트에 어떻게 일반화될지 평가하는 데 중요하며, 모델이 일반화 가능한 패턴을 학습하기보다 훈련 예시를 암기하는 과적합을 detect 데 도움을 줍니다.
이 기법의 가장 널리 사용되는 변형은 K-폴드 교차 검증입니다. 이 과정에서는 전체 데이터셋을 무작위로 k개의 동일한 크기의 그룹, 즉 "폴드"로 나눕니다. 그런 다음 훈련 과정을 k번 반복합니다. 각 반복에서 하나의 폴드가 모델 테스트를 위한 검증 데이터로 사용되는 반면, 나머지 k-1개의 폴드는 훈련 데이터로 사용됩니다.
최종 성능 지표는 일반적으로 각 루프에서 얻은 점수(예: 정확도, 정밀도 또는 평균 정밀도(mAP))를 평균하여 계산됩니다. 이 접근법은 훈련-테스트 분할의 단일 실행과 관련된 분산을 크게 줄여 일반화 오차에 대한 보다 신뢰할 수 있는 추정치를 제공합니다. 이는 평가가 테스트 데이터의 임의적 선택에 의해 편향되지 않도록 보장합니다.
교차 검증은 소규모 데이터셋을 다루거나 엄격한 하이퍼파라미터 튜닝을 수행할 때 특히 유용합니다. PyTorch 와 같은 현대적인 딥러닝 프레임워크는 훈련 루프를 용이하게 하지만, 폴드 관리는 신중한 데이터 준비가 필요합니다.
다음 예제는 YOLO26 모델을 사용한 5-fold 교차 검증 실험을 위해 미리 생성된 YAML 구성 파일을 반복 처리하는 방법을 보여줍니다. 이는 데이터셋을 이미 다섯 개의 별도 구성 파일로 분할해 놓은 상태를 가정합니다.
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-Fold 교차 검증 가이드를 참조하십시오.
데이터가 부족하거나 수집 비용이 높거나 안전에 중대한 신뢰성이 요구되는 산업 분야에서는 교차 검증이 필수적이다.
교차 검증을 AI 개발 라이프사이클에 통합하면 편향-분산 상충 관계에 대한 중요한 통찰력을 제공합니다.
교차 검증을 다른 평가 용어와 구분하는 것이 중요합니다:
여러 폴드에서 생성된 아티팩트, 메트릭 및 모델을 관리하는 것은 복잡할 수 있습니다. Ultralytics 중앙 집중식 실험 추적 기능을 제공하여 이를 간소화합니다. 이를 통해 팀은 서로 다른 폴드 간 성능을 비교하고 모델 평가 인사이트를 손쉽게 시각화할 수 있습니다.