Underfitting e Overfitting nel Machine Learning

Credeteci o no, nel mondo reale non avremo mai un dataset pulito e perfetto. Ogni set di dati avrà alcune parti strane o mancanti o dati squilibrati. Oppure noi come sviluppatori di Machine Learning introdurremo alcuni errori o carenze nel nostro modello. Uno dei motivi principali è che vogliamo che il nostro modello sia in grado di descrivere un modello sottostante. Sfortunatamente la natura dei dati della vita reale è che essi presentano un certo livello di rumore e outlier, e per la maggior parte vogliamo che il modello catturi il segnale nei dati e non il rumore.

Ora, per catturare accuratamente il modello sottostante nei dati, il modello potrebbe dover incorporare il rumore. L’implicazione è che il modello derivato si adatta bene ai dati di modellazione ma non generalizza abbastanza bene ad altri campioni che non sono stati inclusi nel processo di modellazione.

Esiste una terminologia per descrivere quanto bene un modello di apprendimento automatico impara e generalizza a nuovi dati, questo è overfitting e underfitting. L’obiettivo di un buon modello di apprendimento automatico è quello di generalizzare bene dal set di dati di formazione a qualsiasi set di dati del dominio del problema. Questo ci permette di fare previsioni basate su un set di dati che il modello non ha mai visto.

In statistica ci si riferisce a un fit come a quanto il vostro modello è vicino alla classe / funzione / valore di destinazione. Overfitting e underfitting sono le due maggiori cause di scarse prestazioni di algoritmi o modelli di apprendimento automatico.

Comprendiamo cosa sono Best Fit, Overfitting e Underfitting? Seguito da alcuni codici.

Che cos’è l’Overfitting & Underfitting?

Overfitting si riferisce allo scenario in cui un modello di apprendimento automatico non può generalizzare o adattarsi bene su set di dati non visti. Un chiaro segno di overfitting dell’apprendimento automatico è se il suo errore sul set di dati di test o di convalida è molto più grande dell’errore sul set di dati di allenamento.

Overfitting è un termine usato in statistica che si riferisce a un errore di modellazione che si verifica quando una funzione corrisponde troppo strettamente a un set di dati. Come risultato, l’overfitting può fallire nell’adattare ulteriori dati, e questo può influenzare l’accuratezza della previsione delle osservazioni future.

L’overfitting avviene quando un modello impara il dettaglio e il rumore nel dataset di allenamento nella misura in cui impatta negativamente la performance del modello su un nuovo dataset. Ciò significa che il rumore o le fluttuazioni casuali nel set di dati di allenamento vengono raccolti e appresi come concetti dal modello. Il problema è che questi concetti non si applicano ai nuovi set di dati e hanno un impatto negativo sulla capacità del modello di generalizzare.

L’opposto di overfitting è underfitting.

Underfitting si riferisce a un modello che non può né modellare il set di dati di allenamento né generalizzare a nuovi set di dati. Un modello di apprendimento automatico underfit non è un modello adatto e sarà ovvio in quanto avrà scarse prestazioni sul set di dati di allenamento.

Underfitting spesso non viene discusso in quanto è facile da rilevare data una buona metrica di performance.

Comprensione con esempi

Esempio 1:

Supponiamo che tre studenti si siano preparati per un esame di matematica.

Il primo studente ha studiato solo le operazioni matematiche di addizione e ha saltato altre operazioni matematiche come sottrazione, divisione, moltiplicazione ecc.

Il secondo studente ha una memoria particolarmente buona. Così, il secondo studente ha memorizzato tutti i problemi presentati nel libro di testo.

E il terzo studente ha studiato tutte le operazioni matematiche ed è ben preparato per l’esame.

Nell’esame lo studente uno sarà solo in grado di risolvere le domande relative all’Addizione e fallirà nei problemi o domande poste relative ad altre operazioni matematiche.

Lo studente due sarà in grado di rispondere alle domande solo se gli è capitato di apparire nel libro di testo (in quanto lo ha memorizzato) e non sarà in grado di rispondere a nessun’altra domanda.

Lo studente tre sarà in grado di risolvere ragionevolmente bene tutti i problemi dell’esame.

Gli algoritmi di apprendimento automatico hanno un comportamento simile ai nostri tre studenti, a volte il modello generato dall’algoritmo sono simili al primo studente. Imparano solo da una piccola parte del dataset di allenamento, in questi casi il modello è Underfitting.

A volte il modello memorizza l’intero dataset di allenamento, come il secondo studente. Si comportano molto bene su istanze conosciute, ma falliscono malamente su dati non visti o istanze sconosciute. In questi casi si dice che il modello è Overfitting.

E quando il modello si comporta bene sia nel dataset di allenamento che sui dati non visti o sulle istanze sconosciute come il terzo studente, è un buon adattamento.

Esempio 2:

Facciamo un altro esempio e consideriamo che avete visitato una città “X” e avete fatto un giro in taxi. Parlando con gli amici, vi accorgete in seguito che il tassista vi ha fatto pagare il doppio o il triplo della tariffa standard. Questo è successo perché eri nuovo nella città e l’autista ti ha letteralmente preso in giro.

Inoltre, hai acquistato alcuni oggetti da un venditore ambulante, e di nuovo hai finito per pagare più del loro valore. Alla fine decidi che la gente della città “X” è disonesta. Che è un tratto umano, la gente spesso generalizza. Anche i modelli di apprendimento automatico hanno questa debolezza se non stiamo attenti ad evitare pregiudizi durante le fasi di sviluppo: modellazione, selezione degli algoritmi, caratteristiche, set di dati di allenamento, ecc.

Supponiamo che nella stessa città “X” un altro tassista vi abbia fatto pagare ragionevolmente e secondo il tassametro, ma in base all’esperienza, ritenete che anche questo tassista abbia fatto pagare di più. Questo si chiama Overfitting.

Da questi due esempi possiamo dire che, se il modello si comporta bene sul test o sul set di dati non visto, allora è un best fit o un buon modello. E se non si è comportato bene sul test o sul set di dati non visti, ma ha fatto bene sul set di dati di allenamento, allora è un modello Overfit. E qualsiasi modello che non ha fatto bene nel dataset di allenamento né in quello di test allora è un modello Underfit.

In seguito vedremo un esempio con codice python.

Esempio 3:

Questo esempio dimostra i problemi di underfitting e overfitting e come possiamo usare la regressione lineare con caratteristiche polinomiali per approssimare funzioni non lineari.

Generiamo due variabili X e y. X avrà qualche numero/campione casuale, mentre y è una parte della funzione coseno.

In base ai dati il grafico sarà simile a… un semplice tracciato di X e y.

Alleniamo il nostro modello usando la regressione lineare, prevediamolo e visualizziamolo.

Visualizziamo il modello predetto.

Possiamo vedere che la linea retta non è in grado di catturare i modelli nei dati. Questo è un esempio di under-fitting. L’errore sarà enorme in questo modello.

Consideriamo la funzione polinomiale con alcuni gradi e alleniamo il nostro modello.

Possiamo vedere che una funzione lineare (polinomiale di grado 1) non è sufficiente per adattarsi ai campioni di allenamento. Questo è chiamato underfitting.

Un polinomio di grado 4 approssima la funzione vera quasi perfettamente. Questo è chiamato Best Fit o Good Model.

Tuttavia, per gradi più alti (con grado 15) il modello sovraadatta il dataset di allenamento, cioè impara il rumore dei dati di allenamento.

Valutiamo quantitativamente l’overfitting / underfitting usando la cross-validazione.

Calcoliamo anche l’errore quadratico medio (MSE) sul set di dati di convalida, più alto è, meno è probabile che il modello generalizza correttamente dal set di dati di allenamento.

Il codice completo può essere consultato da
https://colab.research.google.com/drive/1XzngJPT8WUyHFW-JxhrawVhPurJlv1cA?usp=sharing

Rilevare l’overfitting o l’underfitting

Una sfida chiave per rilevare qualsiasi tipo di adattamento (sia underfitting o best fit o overfitting), è quasi impossibile prima di testare i dati. Può aiutare ad affrontare le caratteristiche intrinseche dell’overfitting, che è l’incapacità di generalizzare un set di dati. I dati possono quindi essere separati in diversi sottoinsiemi per facilitare l’addestramento e il test. I dati vengono divisi in due parti principali, cioè un dataset di test e un dataset di allenamento.

La tecnica di suddivisione può variare in base al tipo di dataset e si può usare qualsiasi tecnica di suddivisione.

Se il nostro modello fa molto meglio sul dataset di allenamento che sul dataset di test, allora probabilmente stiamo sovrafitting Per esempio, il nostro modello ha ottenuto una precisione del 99% sul dataset di allenamento ma solo del 50-55% sul dataset di test. È Overfitting il modello e non ha eseguito bene su set di dati inediti.

Se il nostro modello fa molto meglio sul set di dati di test che sul set di dati di formazione, allora siamo probabilmente underfitting.

E se il nostro modello fa bene su entrambi i set di dati di formazione e test, allora abbiamo il miglior adattamento. Per esempio, il nostro modello ha ottenuto il 90% di accuratezza sul set di dati di allenamento e ottiene l’88% – 92% di accuratezza sul set di dati di test. È il modello che si adatta meglio.

Un altro modo semplice per rilevare ciò è usare la convalida incrociata. Questo tenta di esaminare il modello addestrato con un nuovo set di dati per verificare la sua accuratezza predittiva. Dato un set di dati, una parte di questo viene trattenuta (diciamo il 30%) mentre il resto viene usato per addestrare il modello. Una volta che il modello è stato addestrato, i dati riservati vengono utilizzati per verificare l’accuratezza del modello rispetto all’accuratezza derivata dai dati utilizzati nell’addestramento. Una variazione significativa in questi due segnala l’overfitting.

Come prevenire l’overfitting o l’underfitting

Rilevare l’overfitting o l’underfitting è utile, ma non risolve il problema. Fortunatamente, avete diverse opzioni da provare. Ecco alcune delle soluzioni più popolari.

Il rimedio per l’Underfitting, è quello di andare avanti e provare algoritmi di apprendimento automatico alternativi. Tuttavia, fornisce un buon contrasto al problema dell’overfitting.

Per prevenire l’overfitting, ci sono vari modi e alcuni di essi sono mostrati di seguito.

  • Cross-validation:
    • La cross-validation è una potente misura preventiva contro l’overfitting.
    • Utilizza i tuoi dati di allenamento iniziale per generare più mini suddivisioni treno-test. Usa queste suddivisioni per mettere a punto il tuo modello.
    • Nella convalida incrociata k-fold standard, dividiamo i dati in k sottoinsiemi, chiamati folds. Poi, iterativamente addestriamo l’algoritmo su k-1 sottoinsiemi mentre usiamo il sottoinsieme rimanente come test set (chiamato “holdout fold”).
    • La convalida incrociata ti permette di sintonizzare gli iperparametri solo con il tuo dataset di allenamento originale. Questo ti permette di mantenere il tuo set di dati di test come un set di dati veramente inedito per selezionare il tuo modello finale.
  • Allenamento con più dati
    • Non funzionerà sempre, ma l’allenamento con più dati può aiutare gli algoritmi a rilevare meglio il segnale.
    • Come l’utente inserisce più dati di allenamento nel modello, esso non sarà in grado di adattare tutti i campioni e sarà costretto a generalizzare per ottenere risultati.
    • Gli utenti dovrebbero raccogliere continuamente più dati come un modo per aumentare la precisione del modello.
    • Tuttavia, questo metodo è considerato costoso e, quindi, gli utenti dovrebbero assicurarsi che i dati utilizzati siano rilevanti e puliti.
    • Ovviamente, questo non è sempre il caso. Se aggiungiamo semplicemente altri dati rumorosi, questa tecnica non sarà d’aiuto. Ecco perché dovreste sempre assicurarvi che i vostri dati siano puliti e rilevanti.
  • Aumento dei dati
    • Un’alternativa all’addestramento con più dati è l’aumento dei dati, che è meno costoso rispetto al primo.
    • Se non siete in grado di raccogliere continuamente più dati, potete far sembrare diversi i set di dati disponibili.
    • L’aumento dei dati fa apparire un campione di dati leggermente diverso ogni volta che viene elaborato dal modello. Il processo fa apparire ogni serie di dati unica al modello e impedisce al modello di imparare le caratteristiche delle serie di dati.
  • Ridurre la complessità o la semplificazione dei dati
    • L’overfitting può verificarsi a causa della complessità di un modello, in modo tale che, anche con grandi volumi di dati, il modello riesce ancora a sovradimensionare il dataset di allenamento.
    • Il metodo di semplificazione dei dati è usato per ridurre l’overfitting diminuendo la complessità del modello per renderlo abbastanza semplice da non sovrafittare.
    • Alcune delle azioni che possono essere implementate includono la potatura di un albero di decisione, la riduzione del numero di parametri in una rete neurale, e l’uso del dropout su una rete neurale.
    • Semplificare il modello può anche rendere il modello più leggero e più veloce.
  • Regolarizzazione
    • La regolarizzazione si riferisce ad una vasta gamma di tecniche per forzare artificialmente il vostro modello ad essere più semplice.
    • Il metodo dipenderà dal tipo di apprendista che state usando. Per esempio, potreste potare un albero decisionale, usare il dropout su una rete neurale, o aggiungere un parametro di penalità alla funzione di costo nella regressione.
    • Spesso, il metodo di regolarizzazione è anche un iperparametro, il che significa che può essere sintonizzato attraverso la validazione incrociata.
    • Per saperne di più sulla regolarizzazione fate riferimento all’articolo https://datascience.foundation/datatalk/regularization-machine-learning-teacher scritto e spiegato molto bene da Abhishek Mishra.
  • Ensembling
    • Ensembles sono metodi di apprendimento automatico per combinare previsioni da più modelli separati. Ci sono alcuni metodi diversi per l’ensembling, ma i due più comuni sono: Boosting e Bagging.
    • Boosting funziona usando semplici modelli di base per aumentare la loro complessità complessiva. Addestra un gran numero di apprendisti deboli disposti in sequenza, in modo che ogni apprendista nella sequenza impari dagli errori dell’apprendista che lo precede.
    • Boosting cerca di migliorare la flessibilità predittiva dei modelli semplici.
    • Boosting combina tutti gli apprendisti deboli nella sequenza per far emergere un apprendista forte.
    • Bagging funziona addestrando molti apprendisti forti disposti in un modello parallelo e poi combinandoli per ottimizzare le loro previsioni.
    • Bagging tenta di ridurre la possibilità di overfitting di modelli complessi.
    • Bagging combina poi tutti gli allievi forti insieme per “smussare” le loro previsioni.
  • Early Stopping
    • Quando si sta addestrando un algoritmo di apprendimento in modo iterativo, si può misurare il rendimento di ogni iterazione del modello.
    • Fino ad un certo numero di iterazioni, le nuove iterazioni migliorano il modello. Dopo quel punto, tuttavia, la capacità del modello di generalizzare può indebolirsi poiché inizia a sovrafittare i dati di formazione.
    • L’arresto precoce si riferisce all’arresto del processo di formazione prima che l’allievo superi quel punto.
    • Oggi, questa tecnica è usata principalmente nell’apprendimento profondo mentre altre tecniche (ad es. Regolarizzazione) sono preferiti per l’apprendimento automatico classico.
  • È necessario aggiungere la regolarizzazione in caso di modelli lineari e SVM.
  • Nei modelli ad albero decisionale è possibile ridurre la profondità massima.
  • Mentre nelle reti neurali, è possibile introdurre il dropout layer per ridurre l’overfitting.

Riassunto veloce

L’overfitting è un errore di modellazione che introduce distorsioni nel modello perché è troppo legato al set di dati.

Overfitting rende il modello rilevante solo per il suo set di dati, e irrilevante per qualsiasi altro set di dati.

Alcuni dei metodi usati per prevenire l’overfitting includono ensembling, aumento dei dati, semplificazione dei dati, e cross-validation.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.