Ultralytics YOLO27: Iscriviti alla lista d'attesa.
Licenza YOLO
Torna al glossario di Ultralytics

Cross-Validation

La convalida incrociata addestra e valuta un modello su k suddivisioni a rotazione dello stesso set di dati per stimarne la capacità di generalizzazione. Scopri i passaggi della k-fold, le varianti, la fuga di dati e il codice.

La convalida incrociata stima le prestazioni di un modello su dati non visti addestrandolo e valutandolo più volte su diverse suddivisioni dello stesso dataset e combinando i punteggi. Nella convalida incrociata k-fold, i dati vengono divisi in k parti uguali, dette fold, e ogni fold funge una volta da dati di validazione, mentre il modello viene addestrato sugli altri k − 1 fold. La media dei k punteggi stima le prestazioni e la loro dispersione mostra quanto la stima dipenda dagli esempi finiti nel set di validazione. La convalida incrociata è il metodo di valutazione standard quando i dati sono troppo scarsi perché una singola suddivisione con dati tenuti da parte fornisca un punteggio affidabile; è ampiamente usata per confrontare algoritmi e ottimizzare gli iperparametri senza toccare i dati di test.

Come funziona la convalida incrociata k-fold#

Il dataset viene mescolato una volta e suddiviso in k fold, solitamente 5 o 10. In ciascuno dei k cicli, si addestra un nuovo modello su k − 1 fold e lo si valuta sul fold rimanente; così ogni esempio viene usato per la validazione esattamente una volta e per l'addestramento k − 1 volte. I k punteggi vengono mediati e riportati insieme alla loro deviazione standard. Una volta scelta la configurazione del modello o degli iperparametri tramite convalida incrociata, di solito si riaddestra il modello finale su tutti i dati di addestramento con quella configurazione. La convalida incrociata leave-one-out è il caso estremo in cui k è pari al numero di esempi: usa la maggior quantità di dati per l'addestramento a ogni ciclo, al costo di addestrare tanti modelli quanti sono gli esempi.

Come leggere i punteggi della convalida incrociata#

La dispersione tra i fold è informativa quanto la media. Lo script scikit-learn qui sotto esegue una convalida incrociata a 5 fold sul dataset integrato sul cancro al seno:

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}")

Le accuratezze dei fold vanno da 0.956 a 1.000, con una media di 0.979 e una deviazione standard di 0.014. Una singola suddivisione 80/20 avrebbe riportato uno qualsiasi di quei cinque numeri, con un intervallo di 4.4 punti percentuali. Inserire lo scaler nella pipeline evita che le statistiche di preelaborazione dei dati includano il fold di validazione; scalare prima l'intero dataset causerebbe data leakage da ciascun fold di validazione verso l'addestramento.

Scelta di una variante di convalida incrociata#

Il k-fold semplice presume che gli esempi siano indipendenti e intercambiabili. Quando non lo sono, una suddivisione casuale causa perdite di informazioni o produce fold che non rappresentano correttamente il compito:

  • k-fold stratificato: mantiene in ogni fold la stessa proporzione di classi presente nell'intero dataset, un aspetto importante quando una classe rara potrebbe altrimenti mancare in un fold.
  • K-fold a gruppi: mantiene tutti gli esempi di un gruppo, come un paziente, un video o un sito sul campo, nella stessa partizione, così il modello non viene mai validato su immagini di addestramento quasi duplicate. Il k-fold stratificato a gruppi combina entrambi i vincoli.
  • Suddivisione per serie temporali: addestra solo sui dati passati e convalida sul periodo successivo, ampliando a ogni ciclo la finestra di addestramento, perché mescolare dati ordinati nel tempo permette al modello di vedere il futuro.
  • Convalida incrociata annidata: esegue un ciclo interno di convalida incrociata per ottimizzare gli iperparametri all'interno di ogni fold esterno, così il punteggio esterno non viene gonfiato dall'ottimizzazione sugli stessi fold che valuta.

Convalida incrociata per il deep learning#

Addestrare una rete profonda k volte moltiplica per k il costo di calcolo; perciò dataset grandi come ImageNet e COCO usano un'unica suddivisione di validazione fissa, già abbastanza ampia da fornire un punteggio stabile. La convalida incrociata è utile per piccoli dataset di visione artificiale composti da alcune centinaia o alcune migliaia di immagini, in cui una suddivisione di validazione potrebbe contenere solo pochi esempi per classe. La guida Ultralytics alla convalida incrociata k-fold divide un dataset di rilevamento in cinque fold con KFold di scikit-learn, crea elenchi di immagini per l'addestramento e la validazione e un file YAML del dataset per ogni fold, quindi addestra un modello YOLO26 per fold. Poiché le immagini di rilevamento contengono di solito più classi, non è possibile stratificarle in base a una singola etichetta; la guida registra quindi anche, per ogni fold, il rapporto tra le etichette di validazione e quelle di addestramento per ciascuna classe.

  • Validazione hold-out: una singola suddivisione, per esempio 80/20, valutata una volta. Richiede una sola esecuzione di addestramento, è adatta ai dataset grandi e il suo punteggio dipende dagli esempi che finiscono nel fold di validazione.
  • Bootstrap: crea set di addestramento campionando con reinserimento e valuta ogni modello sugli esempi esclusi dal campionamento. Il k-fold suddivide i dati senza reinserimento, quindi ogni esempio appartiene esattamente a un fold.
  • Valutazione sul test set: la convalida incrociata sceglie tra modelli e configurazioni. Un set di test separato, escluso da tutti i fold, fornisce la stima finale del modello scelto.

Esplora le soluzioni

La visione artificiale nello sport

La visione artificiale nello sport

Scopri come Ultralytics YOLO alimenta la computer vision nello sport con il tracciamento di giocatori e palloni, l'analisi delle prestazioni, gli approfondimenti per gli allenatori e la riabilitazione degli atleti.
Scopri di più
Computer vision per immagini aeree

Computer vision per immagini aeree

Trasforma immagini aeree e riprese da drone in informazioni utili in tempo reale per agricoltura, acquacoltura, conservazione e analisi geospaziale con Ultralytics YOLO.
Scopri di più
Computer vision nel settore aerospaziale

Computer vision nel settore aerospaziale

Applica la visione artificiale nel settore aerospaziale con Ultralytics YOLO per l'ispezione degli aeromobili, il rilevamento di FOD sulle piste, le operazioni di terra aeroportuali e il rilevamento di difetti nei materiali compositi.
Scopri di più
Visione artificiale nella sicurezza

Visione artificiale nella sicurezza

Proteggi ogni sito con i modelli Ultralytics YOLO. L'IA visiva alimenta il monitoraggio perimetrale, il rilevamento delle minacce, il riconoscimento delle targhe e la sicurezza sul lavoro.
Scopri di più
Visione artificiale nella robotica

Visione artificiale nella robotica

Dai più potenza alle macchine intelligenti con i modelli Ultralytics YOLO. Nell'ambito della robotica, l'IA visiva alimenta la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.
Scopri di più
Visione artificiale nella logistica

Visione artificiale nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. L'IA per la visione consente l'ispezione dei pacchi, la selezione, il tracciamento dei veicoli e il monitoraggio della sicurezza nei magazzini in tempo reale.
Scopri di più
Visione artificiale nel commercio al dettaglio

Visione artificiale nel commercio al dettaglio

Ripensa il commercio al dettaglio con i modelli Ultralytics YOLO. L'IA per la visione consente di tracciare le scorte, monitorare gli scaffali, gestire le code e ottenere informazioni più approfondite sui clienti.
Scopri di più
Visione artificiale in ambito sanitario

Visione artificiale in ambito sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. In ambito sanitario, l'IA per la visione consente di elaborare più rapidamente le immagini mediche, migliorare la diagnostica e monitorare i pazienti.
Scopri di più
Computer vision nella produzione

Computer vision nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La visione basata sull'IA migliora il controllo qualità, il rilevamento dei difetti, la conformità ai requisiti sui DPI e l'automazione delle linee di assemblaggio.
Scopri di più
Computer vision nel settore automobilistico

Computer vision nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La visione basata sull'IA migliora la sicurezza stradale, i sistemi di assistenza alla guida e l'automazione dei veicoli, per strade più intelligenti.
Scopri di più
Visione artificiale in agricoltura

Visione artificiale in agricoltura

Porta l'IA visiva nell'agricoltura intelligente con i modelli Ultralytics YOLO. Gestisci il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per ottenere raccolti più abbondanti e intelligenti.
Scopri di più

Costruiamo insieme il futuro dell'IA!

Inizia il tuo percorso verso il futuro del machine learning