Come descriveresti la validazione incrociata a qualcuno senza un background di analisi dei dati?
Come descriveresti la validazione incrociata a qualcuno senza un background di analisi dei dati?
Risposte:
Considera la seguente situazione:
Voglio prendere la metropolitana per andare nel mio ufficio. Il mio piano è di prendere la macchina, parcheggiare in metropolitana e poi prendere il treno per andare nel mio ufficio. Il mio obiettivo è prendere il treno alle 8:15 ogni giorno in modo da poter raggiungere il mio ufficio in tempo. Devo decidere quanto segue: (a) l'ora in cui devo partire da casa mia e (b) il percorso che seguirò per guidare fino alla stazione.
Nell'esempio sopra, ho due parametri (cioè l'ora di partenza da casa e il percorso da prendere per la stazione) e ho bisogno di scegliere questi parametri in modo da raggiungere la stazione entro le 8.15.
Per risolvere il problema di cui sopra, posso provare diversi insiemi di "parametri" (ovvero diverse combinazioni di orari di partenza e di rotta) il lunedì, il mercoledì e il venerdì, per vedere quale combinazione è la "migliore". L'idea è che una volta identificata la migliore combinazione, posso usarla ogni giorno in modo da raggiungere il mio obiettivo.
Problema di overfitting
Il problema con l'approccio di cui sopra è che potrei esagerare, il che significa essenzialmente che la migliore combinazione che identifico potrebbe in un certo senso essere unica per lun, mer e venerdì e quella combinazione potrebbe non funzionare per mar e gio. Si può verificare un sovradimensionamento se nella mia ricerca della migliore combinazione di orari e percorsi sfrutta alcuni aspetti della situazione del traffico il lunedì / mercoledì / venerdì che non si verificano il martedì e il giovedì.
Una soluzione al sovradimensionamento: convalida incrociata
La convalida incrociata è una soluzione al sovradimensionamento. L'idea è che una volta identificata la nostra migliore combinazione di parametri (nel nostro caso tempo e percorso) testiamo le prestazioni di quel set di parametri in un contesto diverso. Pertanto, potremmo voler testare anche martedì e giovedì per assicurarci che le nostre scelte funzionino anche per quei giorni.
Estensione dell'analogia alle statistiche
Nelle statistiche, abbiamo un problema simile. Spesso utilizziamo un insieme limitato di dati per stimare i parametri sconosciuti che non conosciamo. Se ci adattiamo troppo, le nostre stime dei parametri funzioneranno molto bene per i dati esistenti, ma non per quando li usiamo in un altro contesto. Pertanto, la convalida incrociata aiuta a evitare il problema di overfitting di cui sopra dimostrandoci una certa rassicurazione che le stime dei parametri non sono univoche rispetto ai dati che abbiamo usato per stimarle.
Naturalmente, la validazione incrociata non è perfetta. Tornando al nostro esempio di metropolitana, può succedere che anche dopo la convalida incrociata, la nostra migliore scelta di parametri potrebbe non funzionare un mese lungo la linea a causa di vari problemi (ad es. Costruzione, variazioni del volume del traffico nel tempo, ecc.).
Penso che questo sia meglio descritto con la seguente immagine (in questo caso mostra la convalida incrociata di k-fold):
La convalida incrociata è una tecnica utilizzata per proteggere da un eccesso di adattamento in un modello predittivo, in particolare in un caso in cui la quantità di dati può essere limitata. Nella convalida incrociata, si crea un numero fisso di pieghe (o partizioni) dei dati, si esegue l'analisi su ogni piega, quindi si calcola la stima complessiva dell'errore.
"Evita di imparare a memoria i tuoi dati di allenamento assicurandoti che il modello addestrato funzioni bene su dati indipendenti."
Diciamo che indaghi su qualche processo; hai raccolto alcuni dati per descriverlo e hai creato un modello (statistico o ML, non importa). Ma ora, come giudicare se va bene? Probabilmente si adatta sospettosamente bene ai dati su cui è stato costruito, quindi nessuno crederà che il tuo modello sia così splendido che pensi.
La prima idea è quella di separare un sottoinsieme dei tuoi dati e usarlo per testare il modello costruito con il tuo metodo sul resto dei dati. Ora il risultato è decisamente privo di adattamento, tuttavia (soprattutto per piccoli set) avresti potuto essere (non) fortunato e disegnare (meno) casi più semplici da testare, rendendo (più difficile) più facile prevedere ... Anche la tua precisione / la stima dell'errore / bontà è inutile per il confronto / ottimizzazione del modello, poiché probabilmente non si sa nulla della sua distribuzione.
In caso di dubbio, utilizzare la forza bruta, quindi replicare il processo sopra descritto, raccogliere alcune stime di accuratezza / errore / bontà e valutarle in media - e quindi ottenere la convalida incrociata. Tra le stime migliori otterrai anche un istogramma, quindi sarai in grado di approssimare la distribuzione o eseguire alcuni test non parametrici.
E questo è tutto; i dettagli della divisione test-train sono la ragione di diversi tipi di CV, tuttavia, salvo rari casi e piccole differenze di forza, sono piuttosto equivalenti. In effetti è un enorme vantaggio, perché lo rende un metodo equo e antiproiettile; è molto difficile imbrogliarlo.
Dato che non hai accesso ai dati del test al momento dell'allenamento e desideri che il tuo modello vada bene sui dati del test invisibile, "fingi" di avere accesso ad alcuni dati del test ripetutamente sottocampionando una piccola parte di i tuoi dati di allenamento, mantieni questo set durante l'allenamento del modello e quindi considera il set tenuto come un proxy per i dati di test (e scegli i parametri del modello che danno le migliori prestazioni sui dati dati). Speri che campionando casualmente vari sottoinsiemi dai dati di allenamento, potresti farli apparire come i dati del test (nel senso medio del comportamento), e quindi i parametri del modello appreso saranno buoni anche per i dati del test (cioè il tuo modello generalizza bene per i dati invisibili).