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:
Un set di test per la valutazione del
addestrato al modello.
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.
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.
.
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.