Una rapida introduzione alla convalida incrociata leave-one-out (loocv)
Per valutare le prestazioni di un modello su un set di dati, dobbiamo misurare quanto bene le previsioni fatte dal modello corrispondono ai dati osservati.
Il modo più comune per misurarlo è utilizzare l’errore quadratico medio (MSE), che viene calcolato come segue:
MSE = (1/n)*Σ(y i – f(x i )) 2
Oro:
- n: numero totale di osservazioni
- y i : il valore di risposta dell’i -esima osservazione
- f( xi ): Il valore di risposta previsto dell’i- esima osservazione
Più le previsioni del modello si avvicinano alle osservazioni, più basso sarà il MSE.
In pratica, utilizziamo il seguente processo per calcolare l’MSE di un dato modello:
1. Dividere un set di dati in un set di training e un set di test.
2. Crea il modello utilizzando solo i dati del set di training.
3. Utilizzare il modello per fare previsioni sul set di test e misurare l’MSE: questo è chiamato test MSE .
I test MSE ci danno un’idea delle prestazioni di un modello su dati che non ha mai visto prima, ovvero dati che non sono stati utilizzati per “addestrare” il modello.
Tuttavia, lo svantaggio di utilizzare un singolo set di test è che il test MSE può variare in modo significativo a seconda delle osservazioni utilizzate nei set di training e di test.
È possibile che se utilizziamo un diverso insieme di osservazioni per il training set e il test set, il nostro test MSE potrebbe rivelarsi molto più grande o più piccolo.
Un modo per evitare questo problema è adattare un modello più volte utilizzando ogni volta un set di training e test diverso, quindi calcolare l’MSE di test come media di tutti gli MSE di test.
Questo metodo generale è noto come convalida incrociata e una sua forma specifica è nota come convalida incrociata Leave-One-Out .
Convalida incrociata Leave-One-Out
La convalida incrociata Leave-one-out utilizza il seguente approccio per valutare un modello:
1. Suddividere un set di dati in un set di training e in un set di test, utilizzando tutte le osservazioni tranne una come parte del set di training:
Si noti che lasciamo solo un’osservazione “fuori” dal training set. È qui che il metodo prende il nome di convalida incrociata “leave-one-out”.
2. Crea il modello utilizzando solo i dati del set di training.
3. Utilizzare il modello per prevedere il valore di risposta della singola osservazione esclusa dal modello e calcolare l’MSE.
4. Ripetere il processo n volte.
Infine, ripetiamo questo processo n volte (dove n è il numero totale di osservazioni nel set di dati), tralasciando ogni volta un’osservazione diversa dal set di addestramento.
Calcoliamo quindi l’MSE del test come media di tutti gli MSE del test:
Prova MSE = (1/n)*ΣMSE i
Oro:
- n: il numero totale di osservazioni nel set di dati
- MSEi: il test MSE durante l’ i-esimo periodo di adattamento del modello.
Vantaggi e svantaggi di LOOCV
La convalida incrociata “leave-one-out” offre i seguenti vantaggi :
- Fornisce una misura molto meno distorta del test MSE rispetto all’utilizzo di un singolo set di test, perché adattiamo ripetutamente un modello a un set di dati contenente n-1 osservazioni.
- Si tende a non sovrastimare l’MSE del test rispetto all’utilizzo di un singolo set di test.
Tuttavia, la convalida incrociata diretta presenta i seguenti svantaggi:
- L’utilizzo di questo processo può richiedere molto tempo quando n è grande.
- Può anche richiedere molto tempo se un modello è particolarmente complesso e impiega molto tempo per adattarsi a un set di dati.
- Questo può essere computazionalmente costoso.
Fortunatamente, l’informatica moderna è diventata così efficiente nella maggior parte dei settori che LOOCV è un metodo molto più ragionevole da utilizzare rispetto a molti anni fa.
Si noti che LOOCV può essere utilizzato anche in contesti di regressione e classificazione . Per i problemi di regressione, calcola il test MSE come differenza quadratica media tra previsioni e osservazioni, mentre nei problemi di classificazione calcola il test MSE come percentuale di osservazioni classificate correttamente su n aggiustamenti ripetuti del modello.
Come eseguire LOOCV in R e Python
I seguenti tutorial forniscono esempi passo passo su come eseguire LOOCV per un determinato modello in R e Python:
Convalida incrociata Leave-One-Out in R
Convalida incrociata Leave-One-Out in Python