Condividi tramite


Impedire l'overfitting e lo sbilanciamento dei dati con ML automatizzato

L'overfitting e lo sbilanciamento dei dati sono ostacoli comuni quando si creano modelli di Machine Learning. Per impostazione predefinita, ML automatizzato di Azure Machine Learning fornisce grafici e metriche che consentono di identificare questi rischi e implementa le procedure consigliate per attenuarli.

Identificare l'overfitting

Nell'apprendimento automatico l'overfitting si verifica quando un modello si adatta troppo ai dati di training e, di conseguenza, non è in grado di prevedere accuratamente i dati di test non visualizzati. In altre parole, il modello ha memorizzato modelli e disturbi specifici nei dati di training, ma non è sufficientemente flessibile per eseguire stime sui dati reali.

Considerare i seguenti modelli sottoposti a training e le relative precisioni di training e di test.

Modello Accuratezza di training Accuratezza di test
Un 99,9% 95%
G 87% 87%
A 99,9% 45%

Si consideri il modello A. In base a un malinteso comune, se l'accuratezza di test sui dati non visualizzati è inferiore all'accuratezza di training, si parla di overfitting. L'accuratezza di test, tuttavia, deve essere sempre inferiore all'accuratezza di training e la distinzione tra overfitting e adattamento appropriato si riduce a quanto è meno accurato.

Confrontano i modelli A e B, il modello A è migliore perché ha una maggiore accuratezza di test e anche se tale accuratezza è leggermente inferiore al 95%, non si tratta di una differenza significativa che suggerisca la presenza di overfitting. Non è possibile scegliere il modello B perché le precisioni di training e di test sono più vicine.

Il modello C rappresenta un caso chiaro di overfitting: l'accuratezza di training è elevata, ma quella di test non lo è altrettanto. Questa distinzione è soggettiva, ma deriva dalla conoscenza del problema e dei dati e dalle grandezze di errore accettabili.

Impedire l'overfitting

Nei casi più evidenti, un modello con overfitting presuppone che le combinazioni di valori di funzionalità visualizzate durante il training determinino sempre lo stesso output per la destinazione.

Il modo migliore per evitare l'overfitting consiste nel seguire le procedure consigliate di ML, tra cui:

  • Uso di più dati di training ed eliminazione della distorsione statistica
  • Prevenzione della perdita di destinazione
  • Uso di un numero minore di funzionalità
  • Regolarizzazione e ottimizzazione degli iperparametri
  • Limitazioni della complessità del modello
  • Convalida incrociata

Nel contesto di ML automatizzato, i primi tre modi elencano le procedure consigliate da implementare. Gli ultimi tre elementi in grassetto sono le procedure consigliate implementate da ML automatizzato per impostazione predefinita per la protezione da overfitting. In impostazioni diverse da quelle di ML automatizzato, è opportuno seguire tutte le sei procedure consigliate per evitare i modelli con overfitting.

Procedure consigliate implementate dall'utente

Usare più dati

L'uso di un numero maggiore di dati è il modo migliore e più semplice per evitare l'overfitting e consente in genere di aumentare l'accuratezza. Quando si usa un numero maggiore di dati, diventa più difficile per il modello memorizzare modelli esatti e il modello è forzato a raggiungere soluzioni più flessibili per soddisfare più condizioni. È anche importante riconoscere la distorsione statistica per garantire che i dati di training non includano modelli isolati che non esistono nei dati di stima reali. Questo scenario può essere difficile da risolvere, perché potrebbe essere presente un overfitting rispetto ai dati di test in tempo reale.

Prevenire la perdita di destinazione

La perdita di destinazione è un problema simile, per cui non è possibile rilevare overfitting tra i set di dati di training e di test, ma è possibile rilevarlo in fase di stima. La perdita di destinazione si verifica quando il modello "bara" durante la fase di training potendo accedere a dati che normalmente non dovrebbe avere al momento della previsione. Ad esempio, per stimare il lunedì quale sarà il prezzo di un prodotto il venerdì, se le funzionalità includessero accidentalmente i dati del giovedì, questi sarebbero dati che il modello non avrà al tempo della stima, perché non è in grado di prevedere il futuro. La perdita di destinazione è un semplice errore da eliminare, ma è spesso caratterizzata da un'accuratezza per il problema. Se si tenta di stimare il prezzo azionario ed è stato eseguito il training di un modello con un'accuratezza del 95%, è probabile che si verifichi una perdita di destinazione in alcune delle funzionalità.

Usare un numero minore di funzionalità

La rimozione di funzionalità può anche contribuire a risolvere i problemi di overfitting evitando che il modello disponga di troppi campi da usare per memorizzare modelli specifici, determinando in tal modo una maggiore flessibilità. Può essere difficile eseguire una misura quantitativa, ma se è possibile rimuovere le funzionalità e mantenere la stessa accuratezza, è probabile che il modello sia più flessibile e riduca il rischio di overfitting.

Procedure consigliate per l'implementazione di ML automatizzato

Regolarizzazione e ottimizzazione degli iperparametri

La regolarizzazione è il processo che consente di ridurre una funzione di costo per penalizzare i modelli complessi e quelli con overfitting. Sono disponibili tipi diversi di funzioni di regolarizzazione, ma in generale tutti penalizzano le dimensioni, la varianza e la complessità dei coefficienti del modello. ML automatizzato usa L1 (Lasso), L2 (Ridge) ed ElasticNet (L1 e L2 simultaneamente) in combinazioni diverse con impostazioni di iperparametri del modello differenti che controllano l'overfitting. ML automatizzato varia il grado di regolarizzazione del modello e sceglie il risultato migliore.

Limitazioni della complessità del modello

ML automatizzato implementa anche limitazioni di complessità del modello per evitare l'overfitting. Nella maggior parte dei casi questa implementazione è specifica per gli algoritmi delle foreste o degli alberi delle decisioni, in cui la profondità massima dell'albero e il numero totale di alberi usati nelle tecniche della foresta o dell'insieme sono limitati.

Convalida incrociata

La convalida incrociata è il processo di acquisizione di molti subset di dati di training completi e di esecuzione del training di un modello su ogni subset. Il concetto è che un modello potrebbe essere "fortunato" ed essere estremamente preciso per un subset, ma se usa molti subset il modello non riuscirà a ottenere ogni volta questa elevata accuratezza. Quando si esegue la convalida incrociata, si fornisce un set di dati di controllo della convalida, si specifica il numero di subset della convalida e ML automatizzato consente di eseguire il training del modello e di ottimizzare gli iperparametri per ridurre gli errori nel set di convalida. Un numero di subset della convalida incrociata può presentare overfitting, ma usandone un numero elevato si riduce la probabilità che il modello finale sia caratterizzato da overfitting. Lo svantaggio è che la convalida incrociata comporta tempi di training più lunghi e un costo maggiore, perché viene eseguito il training una volta per ogni n dei subset di convalida incrociata.

Nota

La convalida incrociata non è abilitata per impostazione predefinita e deve essere configurata nelle impostazioni di Machine Learning automatizzato. Dopo la configurazione della convalida incrociata e dopo che stato specificato un set di dati di convalida, tuttavia, il processo viene automatizzato.

Identificare i modelli con sbilanciamento dei dati

Lo sbilanciamento dei dati è comunemente presente nei dati per gli scenari di classificazione di apprendimento automatico e si riferiscono a dati che contengono un rapporto sproporzionato delle osservazioni in ogni classe. Questo squilibrio può comportare un effetto percepito erroneamente come positivo dell'accuratezza di un modello, perché i dati di input presentano una distorsione verso una classe, che determina che il modello sottoposto a training simuli tale distorsione.

Inoltre, i processi di ML automatizzato generano automaticamente i grafici seguenti. Questi grafici consentono di comprendere la correttezza delle classificazioni del modello e di identificare i modelli potenzialmente interessati dallo sbilanciamento dei dati.

Grafico Descrizione
Matrice di confusione Valuta le etichette classificate correttamente rispetto alle etichette effettive dei dati.
Precisione-richiamo Valuta il rapporto tra le etichette corrette rispetto al rapporto tra le istanze di etichette dei dati trovate
Curve ROC Valuta il rapporto tra le etichette corrette rispetto al rapporto tra le etichette falso positive.

Gestire lo sbilanciamento dei dati

Nell'ambito dell'obiettivo di semplificare il flusso di lavoro dell'apprendimento automatico, in ML automatizzato sono integrate funzionalità che consentono di gestire lo sbilanciamento dei dati, ad esempio le seguenti:

  • Una colonna ponderata: ML automatizzato crea una colonna ponderata come input, causando la ponderazione verso l'alto o verso il basso delle righe nei dati, il che può essere usato per rendere una classe più o meno "importante".

  • Gli algoritmi usati da ML automatizzato rilevano uno squilibrio quando il numero di campioni nella classe di minoranza è uguale o inferiore al 20% del numero di campioni nella classe di maggioranza, in cui la classe di minoranza fa riferimento a quella con il minor numero di campioni e la classe di maggioranza fa riferimento a quella con la maggior parte dei campioni. Successivamente, Machine Learning automatizzato eseguirà un esperimento con dati sottocampionati per verificare se l'uso dei pesi della classe possa risolvere il problema e migliorare le prestazioni. Se l'esperimento consente di ottenere prestazioni migliori, viene applicato questo rimedio.

  • Uso di una metrica delle prestazioni più adatta allo sbilanciamento dei dati. Ad esempio, AUC_weighted è una metrica primaria che calcola il contributo di ogni classe in base al numero relativo di campioni che rappresentano tale classe, pertanto è più affidabile rispetto allo squilibrio.

Le tecniche seguenti sono opzioni aggiuntive per la gestione dello sbilanciamento dei dati al di fuori di ML automatizzato.

  • Ricampionamento per equilibrare lo sbilanciamento delle classi, eseguendo il campionamento verso l'alto delle classi più piccole o quello verso il basso delle classi più grandi. Tali metodi richiedono competenze per eseguire l'elaborazione e l'analisi.

  • Esaminare le metriche delle prestazioni per lo sbilanciamento dei dati. Ad esempio, il punteggio F1 è la media armonica di precisione e richiamo. La precisione misura l'esattezza di un classificatore, dove una precisione maggiore indica un minor numero di falsi positivi, mentre il richiamo misura la completezza di un classificatore, dove un richiamo maggiore indica un minor numero di falsi negativi.

Passaggi successivi

Vedere esempi e informazioni su come creare modelli tramite ML automatizzato: