È 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.