Set di dati: suddivisione del set di dati originale

Tutti i buoni progetti di software engineering dedicano una notevole energia al testare le loro app. Analogamente, ti consigliamo vivamente di testare modello ML per determinare la correttezza delle sue previsioni.

Set di addestramento, convalida e test

Dovresti testare un modello rispetto a un insieme di esempi diverso da quelli usati per addestrare il modello. Come scoprirai più tardi, i test su diversi esempi è una prova più efficace dell'idoneità del modello rispetto al test sullo stesso insieme di esempi. Dove puoi trovare questi diversi esempi? Tradizionalmente nel machine learning, si ottengono questi diversi esempi suddividendo il set di dati originale. Potresti pertanto si deve suddividere il set di dati originale in due sottoinsiemi:

Immagine 8. Una barra orizzontale divisa in due parti, di cui circa l'80%
            è il set di addestramento e circa il 20% è il set di test.
Figura 8. Suddivisione non ottimale.

 

Allenamento: controlla le tue intuizioni

Supponi di eseguire l'addestramento sul set di addestramento e la valutazione in base al set di test in più round. In ogni round, vengono usati i risultati del set di test che spiega come aggiornare gli iperparametri e il set di caratteristiche. Puoi vedi qualcosa di sbagliato in questo approccio? Scegli una sola risposta.
Svolgere molti cicli di questa procedura potrebbe provocare per soddisfare implicitamente le peculiarità del set di test.
Sì. Più spesso usi lo stesso set di test, più è probabile che il modello si adatti al set di test. come un insegnante che "insegna al test", inavvertitamente del set di test, il che potrebbe rendere più difficile per il modello per adattarsi ai dati del mondo reale.
Questo approccio va bene. Dopotutto, ti stai addestrando set di addestramento e la valutazione su un set di test separato.
Qui c'è un piccolo problema. Pensa a cosa potrebbe va storto gradualmente.
Questo approccio è inefficiente dal punto di vista computazionale. Non modificare o set di caratteristiche dopo ogni ciclo di test.
I test frequenti sono costosi, ma sono fondamentali. Tuttavia, spesso i test sono molto meno costosi rispetto all'addestramento aggiuntivo. Ottimizzazione e il set di caratteristiche possono migliorare notevolmente della qualità del modello, pertanto occorre sempre dedicare tempo e risorse di calcolo per lavorare su questi.

Dividere il set di dati in due set è una buona idea, ma un approccio migliore consiste nel suddividere il set di dati in tre sottoinsiemi. Oltre al set di addestramento e al set di test, il terzo sottoinsieme è:

  • Un set di convalida esegue il test iniziale sul modello durante l'addestramento.
Figura 9. Una barra orizzontale divisa in tre parti, di cui il 70%
            è il set di addestramento, il 15% il set di convalida e il 15%
            il set di test
Figura 9. Una suddivisione molto migliore.

Utilizza il set di convalida per valutare i risultati del set di addestramento. Dopo un uso ripetuto del set di convalida indica che il modello è per fare previsioni positive, usa il set di test per verificare il modello.

Questo flusso di lavoro è consigliato nella figura seguente. Nella figura, "Modifica modello" significa modificare qualsiasi cosa dalla modifica del tasso di apprendimento all'aggiunta o alla rimozione caratteristiche, alla progettazione di un modello completamente nuovo da zero. Al termine di questo flusso di lavoro, scegli il modello con le migliori prestazioni sul set di test.

Figura 10. Diagramma del flusso di lavoro composto dalle seguenti fasi:
            1. Addestra il modello sulla base del set di addestramento.
            2. Valuta il modello sulla base del set di convalida.
            3. Regolare il modello in base ai risultati sul set di convalida.
            4. Esegui l'iterazione su 1, 2 e 3, scegliendo il modello che
               meglio in termini di set di convalida.
            5. Conferma i risultati sul set di test.
. Figura 10. Un buon flusso di lavoro per lo sviluppo e i test.
.

Il flusso di lavoro mostrato nella Figura 10 è ottimale, ma anche con questo flusso di lavoro i set di test e i set di convalida sono ancora "usabili" con un uso ripetuto. Vale a dire, più utilizzi gli stessi dati per prendere decisioni impostazioni degli iperparametri o altri miglioramenti del modello, minore è la confidenza che il modello faccia buone previsioni sulla base di nuovi dati. Per questo motivo, è una buona idea raccogliere più dati da "aggiornare". il test un set di dati e un set di convalida. Iniziare da zero è un ottimo inizio.

Allenamento: controlla le tue intuizioni

Hai eseguito lo shuffling di tutti gli esempi nel set di dati e suddiviso degli esempi ordinati in ordine casuale, set di dati. Tuttavia, il valore della perdita sul set di test è incredibilmente basso che tu abbia il sospetto che si tratti di un errore. Cosa potrebbe essere andato storto?
Molti degli esempi nel set di test sono duplicati di esempi nel set di addestramento.
Sì. Questo può essere un problema in un set di dati con molti esempi. Ti consigliamo vivamente di eliminare gli esempi duplicati da il set di test prima di eseguire il test.
L'addestramento e i test non sono deterministici. A volte, per caso, la perdita durante il test è incredibilmente bassa. Esegui di nuovo il test per confermare o il risultato finale.
Sebbene la perdita varia un po' a ogni esecuzione, non dovrebbe variare quindi a quanto pare di aver vinto alla lotteria sul machine learning.
Per caso, il set di test conteneva esempi che che il modello ha funzionato bene.
Gli esempi erano ben ordinati, quindi è estremamente improbabile.

Altri problemi con i set di test

Come illustrato nella domanda precedente, gli esempi duplicati possono influire sulla valutazione del modello. Dopo aver suddiviso un set di dati in set di addestramento, convalida e test, eliminare eventuali esempi nel set di convalida o nel set di test che siano duplicati di esempi nel set di addestramento. L'unico test corretto di un modello è verificare nuovi esempi, non duplicati.

Ad esempio, consideriamo un modello che prevede se un'email è spam, utilizzando la riga dell'oggetto, il corpo dell'email e l'indirizzo email del mittente come caratteristiche. Supponiamo di dividere i dati in set di addestramento e test, con una suddivisione 80-20. Dopo l'addestramento, il modello raggiunge una precisione del 99% sia sul set di addestramento il set di test. Probabilmente ti aspetteresti una precisione minore sul set di test, quindi dai un'altra occhiata ai dati e scopri che molti degli esempi nel test sono duplicati di esempi nel set di addestramento. Il problema è che abbiamo ignorato lo scrubbing delle voci duplicate per la stessa email di spam dall'input prima di suddividere i dati. Ti sei addestrato inavvertitamente su alcuni i dati del test.

In sintesi, un buon set di test o di convalida soddisfa tutte le i seguenti criteri:

  • Sono sufficientemente grandi da generare risultati dei test statisticamente significativi.
  • Rappresentazione del set di dati nel suo complesso. In altre parole, non scegliere un set di test con caratteristiche diverse rispetto al set di addestramento.
  • Rappresentante dei dati del mondo reale che il modello incontrerà come parte del suo scopo commerciale.
  • Nessun esempio duplicato nel set di addestramento.

Esercizi: verifica le tue conoscenze

Dato un singolo set di dati con un numero fisso di esempi, Quale delle seguenti affermazioni è vera?
Ogni esempio utilizzato per testare il modello è uno in meno utilizzato durante l'addestramento del modello.
Dividere gli esempi in set di addestramento/test/convalida è un gioco a somma zero. Questo è il compromesso centrale.
Il numero di esempi nel set di test deve essere maggiore di il numero di esempi nel set di convalida.
In teoria, il set di convalida e il test di test devono contenere lo stesso di esempi o quasi.
Il numero di esempi nel set di test deve essere maggiore di il numero di esempi nel set di convalida o di addestramento.
Il numero di esempi nel set di addestramento è solitamente maggiore di il numero di esempi nel set di convalida o nel set di test; ma non ci sono requisiti percentuali per i diversi insiemi.
Supponiamo che il set di test contenga abbastanza esempi per eseguire una test statisticamente significativo. Inoltre, il test su il set di test genera una perdita bassa. Tuttavia, il modello ha eseguito male nel mondo reale. Cosa dovresti fare?
Determinare le differenze tra il set di dati originale e i dati reali.
Sì. Anche i set di dati migliori sono solo un'istantanea di dati reali; la base dati empirici reali tendono a cambiare nel tempo. Anche se il set di test corrisponde ai tuoi set di addestramento abbastanza buono da suggerire una buona qualità del modello, probabilmente non corrisponde in modo adeguato a quelli reali. Potresti dover riaddestrare e ripetere l'addestramento rispetto a un nuovo set di dati.
Ripeti il test sullo stesso set di test. I risultati del test potrebbero essere è stata un'anomalia.
Sebbene il nuovo test possa produrre risultati leggermente diversi, questa tattica probabilmente non è molto utile.
Quanti esempi deve contenere il set di test?
Numero sufficiente di esempi per generare un test statisticamente significativo.
Sì. Quanti esempi sono? Dovrai fare un esperimento.
Almeno il 15% del set di dati originale.
Il 15% può essere o non essere sufficiente.