Perché esiste un'asimmetria tra la fase di addestramento e la fase di valutazione?


27

È noto, soprattutto nell'elaborazione del linguaggio naturale, che l'apprendimento automatico dovrebbe procedere in due fasi, una fase di addestramento e una fase di valutazione, e dovrebbero utilizzare dati diversi. Perchè è questo? Intuitivamente, questo processo aiuta a evitare un eccesso di adattamento dei dati, ma non riesco a vedere una ragione (teorica dell'informazione) in questo caso.

Di conseguenza, ho visto alcuni numeri gettati in giro per quanto di un set di dati dovrebbe essere usato per l'allenamento e quanto per la valutazione, come rispettivamente 2/3 e 1/3. C'è qualche base teorica per scegliere una particolare distribuzione?

Risposte:


15

È divertente che la risposta più votata in realtà non risponda alla domanda :) quindi ho pensato che sarebbe stato bello sostenerlo con un po 'più di teoria - per lo più tratta da "Data mining: strumenti e tecniche di machine learning pratico" e Tom Mitchell "Apprendimento automatico" .


Introduzione.

Quindi abbiamo un classificatore e un set di dati limitato e una certa quantità di dati deve andare nel set di addestramento e il resto viene utilizzato per i test (se necessario, un terzo sottoinsieme utilizzato per la convalida).

Il dilemma che affrontiamo è questo: per trovare un buon classificatore, il "sottoinsieme di addestramento" dovrebbe essere il più grande possibile, ma per ottenere una buona stima dell'errore il "sottoinsieme di test" dovrebbe essere il più grande possibile - ma entrambi i sottoinsiemi sono presi dal stessa piscina.

È ovvio che il set di allenamento dovrebbe essere più grande del set di test - ovvero, la divisione non dovrebbe essere 1: 1 (l'obiettivo principale è allenarsi , non testare ) - ma non è chiaro dove dovrebbe essere la divisione.

Procedura di controllo.

La procedura di suddivisione del "superset" in sottoinsiemi è chiamata metodo di controllo . Nota che potresti essere sfortunato e che alcuni esempi di una determinata classe potrebbero mancare (o presentare in modo eccessivo) in uno dei sottoinsiemi, che possono essere indirizzati tramite

  • campionamento casuale, che garantisce che ogni classe sia correttamente rappresentata in tutti i sottoinsiemi di dati - la procedura è chiamata holdout stratificato
  • campionamento casuale con ripetute procedure di test-training-validazione su di esso - che si chiama holdout stratificato ripetuto

In una singola procedura di controllo (non ripetuta), potresti considerare di scambiare i ruoli dei dati di test e di allenamento e calcolare la media dei due risultati, ma ciò è plausibile solo con una divisione 1: 1 tra training e set di test che non è accettabile (vedi Introduzione ). Ma questo dà un'idea e un metodo migliorato (al suo posto si usa la validazione incrociata ) - vedi sotto!

Convalida incrociata.

Nella convalida incrociata, si decide su un numero fisso di pieghe (partizioni dei dati). Se utilizziamo tre pieghe, i dati vengono suddivisi in tre partizioni uguali e

  • usiamo 2/3 per l'allenamento e 1/3 per i test
  • e ripetere la procedura tre volte in modo che, alla fine, ogni istanza sia stata utilizzata esattamente una volta per il test.

Questo si chiama triplice convalida incrociata e se anche la stratificazione viene adottata (cosa che spesso accade) viene chiamata tripla convalida stratificata .

Ma ecco, il modo standard non è la divisione di 2/3: 1/3. Citando "Data mining: strumenti e tecniche pratiche di apprendimento automatico" ,

Il modo standard [...] è utilizzare la convalida incrociata a strati 10 volte. I dati vengono divisi casualmente in 10 parti in cui la classe è rappresentata approssimativamente nelle stesse proporzioni dell'intero set di dati. Ogni parte viene svolta a sua volta e lo schema di apprendimento si forma sui rimanenti nove decimi; quindi il suo tasso di errore viene calcolato sul set di controllo. Pertanto, la procedura di apprendimento viene eseguita in totale 10 volte su diversi set di allenamento (ognuno dei quali ha molto in comune). Infine, le 10 stime di errore sono calcolate in media per produrre una stima di errore complessiva.

Perché 10? Perché "i test ..Extensive in numerose serie di dati, con diverse tecniche di apprendimento, hanno dimostrato che il 10 è di circa il giusto numero di pieghe per ottenere la migliore stima dell'errore, e ci sono anche alcune prove teoriche che esegue questo in su .." Mi rifugio ho scoperto quali test approfonditi e prove teoriche intendevano, ma questo sembra un buon inizio per scavare di più - se lo desideri.

Fondamentalmente dicono solo

Sebbene questi argomenti non siano affatto conclusivi e il dibattito continua a imperversare nei circoli di machine learning e data mining su quale sia lo schema migliore per la valutazione, la convalida incrociata 10 volte è diventata il metodo standard in termini pratici. [...] Inoltre, non c'è nulla di magico nell'esatto numero 10: la convalida incrociata 5 volte o 20 volte sarà probabilmente altrettanto buona.

Bootstrap e - finalmente! - la risposta alla domanda originale.

Ma non siamo ancora arrivati ​​alla risposta, perché il 2/3: 1/3 è spesso raccomandato. La mia opinione è che sia ereditato dal metodo bootstrap .

Si basa sul campionamento con la sostituzione. In precedenza, abbiamo inserito un campione dal "grand set" esattamente in uno dei sottoinsiemi. Il bootstraping è diverso e un campione può essere facilmente visualizzato sia nell'allenamento che nel set di test.

Esaminiamo uno scenario particolare in cui prendiamo un set di dati D1 di n istanze e lo campioniamo n volte con la sostituzione, per ottenere un altro set di dati D2 di n istanze.

Ora guarda attentamente.

Poiché alcuni elementi in D2 verranno (quasi certamente) ripetuti, nel set di dati originale devono essere presenti alcune istanze che non sono state selezionate: le useremo come istanze di test.

Qual è la possibilità che una determinata istanza non sia stata raccolta per D2 ? La probabilità di essere raccolto su ogni take è 1 / n, quindi l'opposto è (1 - 1 / n) .

Quando moltiplichiamo queste probabilità insieme, è (1 - 1 / n) ^ n che è e ^ -1 che è circa 0,3. Ciò significa che il nostro set di test sarà di circa 1/3 e il set di allenamento sarà di circa 2/3.

Mi immagino che questo è il motivo per cui si consiglia di utilizzo 1/3: 2/3 diviso: questo rapporto è tratto dal metodo di stima bootstrap.

Avvolgendolo.

Voglio concludere con una citazione dal libro di data mining (che non posso provare ma presumo corretto) in cui generalmente raccomandano di preferire la convalida incrociata 10 volte:

La procedura bootstrap può essere il modo migliore per stimare l'errore per set di dati molto piccoli. Tuttavia, come la validazione incrociata lasciata in sospeso, presenta degli svantaggi che possono essere illustrati considerando una situazione artificiale speciale [...] un set di dati completamente casuale con due classi. Il vero tasso di errore è del 50% per qualsiasi regola di predizione, ma uno schema che memorizza il set di allenamento darebbe un punteggio di resubstitution perfetto del 100% in modo tale che le istanze di etraining = 0 e lo bootstrap da 0,632 lo mescolino con un peso da 0,368 a dare un tasso di errore complessivo di solo il 31,6% (0,632 ¥ 50% + 0,368 ¥ 0%), che è fuorviante ottimista.


13

Considera un set finito di record m. Se si utilizzano tutti i record come set di allenamento, è possibile adattare perfettamente tutti i punti al seguente polinomio:

y = a0 + a1 * X + a2 * X ^ 2 + ... + an * X ^ m

Ora, se hai qualche nuovo record, non utilizzato nel set di allenamento e i valori di un vettore di input X sono diversi da qualsiasi vettore X, utilizzato nel set di training, cosa puoi dire sull'accuratezza della previsione y?

Ti suggerisco di fare un esempio in cui hai un vettore di input 1 o 2 dimensionale X (per visualizzare il polinomio di adattamento) e controllare quanto è grande l'errore di predizione per una coppia (X, y) i cui valori X sono solo un leggermente diverso dai valori del set di allenamento.

Non so se questa spiegazione sia abbastanza teorica, ma spero che aiuti. Ho cercato di spiegare il problema sul modello di regressione poiché lo considero più intuitivamente comprensibile di altri (SVM, Neural Networks ...).

Quando si crea un modello, è necessario dividere i dati in almeno set di addestramento e set di test (alcuni dividono i dati in addestramento, valutazione e set di convalida incrociata). Di solito il 70% dei dati viene utilizzato per il set di allenamento e il 30% per la valutazione e quindi, quando si crea il modello, è necessario controllare l'errore di training e l'errore di test. Se entrambi gli errori sono grandi, significa che il tuo modello è troppo semplice (il modello ha una propensione elevata). D'altra parte se l'errore di allenamento è molto piccolo ma c'è una grande differenza tra allenamento ed errore di test, significa che il modello è troppo complesso (il modello presenta una varianza elevata).

Il modo migliore per scegliere il giusto compromesso è tracciare l'addestramento e testare gli errori per modelli di varia complessità e quindi scegliere quello in cui l'errore del test è minimo (vedere la figura seguente). inserisci qui la descrizione dell'immagine


5
Questa è davvero un'ottima risposta per come - non tanto per il perché. Ma forse questa è solo una domanda sbagliata : ciò che ci interessa davvero è ciò che funziona empiricamente, non la teoria.
Tamzin Blake,

@Thom: Quindi davvero la tua domanda è il secondo paragrafo e non la fine del primo ("non riesco a capire perché") perché ciò che funziona empiricamente è che ti stai adattando troppo: il tuo modello fa un ottimo lavoro nel gestire piccole stranezze nel tuo dati di addestramento che non sono presenti nel caso generale.
vinto il

1
@winwaed Le domande sono "Why is there ...?", "Why is this?" e "C'è qualche ...?", tutte chiaramente indicate da punti interrogativi. Ho familiarità con il fenomeno e lo trovo intuitivo e ho familiarità con esempi empirici, ma non so perché sia così, e sembra che la teoria dell'informazione debba avere una risposta per me. Il commento sopra è stato solo una riflessione sul fatto che forse le domande "perché" non sono particolarmente rilevanti dopo aver verificato empiricamente le regolarità che è possibile sfruttare.
Tamzin Blake,

7

Questo è il problema della generalizzazione, ovvero quanto bene la nostra ipotesi classificherà correttamente esempi futuri che non fanno parte del set di addestramento. Vedi questo fantastico esempio, cosa è successo nel caso in cui il tuo modello si adatta solo ai dati che hai e non a uno nuovo: la legge di Titius-Bode


Un buon esempio: è più o meno lo stesso delle ipotesi scientifiche. Stiamo ancora parlando di modelli che siano modelli ML statistici o modelli dell'universo.
vinto il

1

Finora @andreiser ha dato una risposta brillante alla seconda parte della domanda dell'OP relativa alla suddivisione dei dati di addestramento / test, e @niko ha spiegato come evitare il sovradimensionamento, ma nessuno ha ottenuto il merito della domanda: perché usare dati diversi per formazione e valutazione ci aiuta a evitare un eccesso di adattamento.


I nostri dati sono suddivisi in:

  1. Istanze di addestramento
  2. Istanze di convalida
  3. Istanze di test (valutazione)

M

M1,...,Mn

È importante capire quali sono i diversi ruoli delle istanze di convalida e test.

  1. Istanze di addestramento: utilizzate per adattarsi ai modelli.
  2. Istanze di convalida: utilizzate per scegliere un modello
  3. Istanze di test (valutazione): utilizzate per misurare l'accuratezza di un modello su nuovi dati

Vedi la pagina 222 di The Elements of Statistical Learning: Data Mining, Inference, and Prediction per maggiori dettagli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.