Scopri come la validazione incrociata migliora la generalizzazione dei modelli e previene il sovradattamento. Scopri come implementare la valutazione K-Fold con Ultralytics per un ML robusto.
La validazione incrociata è una solida procedura di ricampionamento statistico utilizzata per valutare le prestazioni dei modelli di apprendimento automatico (ML) su un campione di dati limitato . A differenza del metodo standard di hold-out, che divide i dati in un unico set di addestramento e test, la validazione incrociata prevede la suddivisione del set di dati in più sottoinsiemi per garantire che ogni punto dati venga utilizzato sia per l'addestramento che per la validazione. Questa tecnica è fondamentale per valutare in che modo i risultati di un'analisi statistica saranno generalizzati a un set di dati indipendente, aiutando a detect l'overfitting, ovvero quando un modello potrebbe memorizzare gli esempi di addestramento anziché apprendere modelli generalizzabili.
La variante più utilizzata di questa tecnica è la validazione incrociata K-Fold. In questo processo, l' intero set di dati viene suddiviso in modo casuale in k gruppi di uguale dimensione, o "fold". Il processo di addestramento viene quindi ripetuto k volte. In ogni iterazione, un singolo fold funge da dati di validazione per testare il modello, mentre i restanti k-1 fold fungono da dati di addestramento.
La metrica di prestazione finale viene solitamente calcolata facendo la media dei punteggi, quali accuratezza, precisione o precisione media (mAP), ottenuti da ciascun ciclo. Questo approccio riduce significativamente la varianza associata a una singola prova di una divisione train-test, fornendo una stima più affidabile dell' errore di generalizzazione. Assicura che la valutazione non sia influenzata da una selezione arbitraria dei dati di test.
La validazione incrociata è particolarmente utile quando si lavora con set di dati più piccoli o quando si esegue una rigorosa messa a punto degli iperparametri. Mentre i moderni framework di deep learning come PyTorch facilitano il ciclo di addestramento , la gestione dei fold richiede un'attenta preparazione dei dati.
L'esempio seguente mostra come iterare attraverso file di configurazione YAML pregenerati per un esperimento di validazione incrociata a 5 pieghe utilizzando il modello YOLO26. Questo presuppone che il set di dati sia già stato suddiviso in cinque file di configurazione separati.
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}")
Per approfondire l'automazione della generazione della divisione, consultare la guida su K-Fold Cross-Validation.
La validazione incrociata è indispensabile nei settori in cui i dati sono scarsi, costosi da raccogliere o dove è richiesta un'affidabilità critica per la sicurezza .
L'integrazione della validazione incrociata nel ciclo di vita dello sviluppo dell'IA fornisce informazioni cruciali sul compromesso tra bias e varianza.
È importante distinguere la validazione incrociata da altri termini di valutazione:
La gestione di artefatti, metriche e modelli provenienti da più fold può essere complessa. Ultralytics semplifica questo processo offrendo un monitoraggio centralizzato degli esperimenti , consentendo ai team di confrontare le prestazioni tra diversi fold e visualizzare facilmente le informazioni relative alla valutazione dei modelli.