Quando eseguiamo la convalida incrociata di k-fold, dovremmo semplicemente utilizzare il classificatore con la massima precisione di prova? Qual è generalmente l'approccio migliore per ottenere un classificatore dalla validazione incrociata?
Quando eseguiamo la convalida incrociata di k-fold, dovremmo semplicemente utilizzare il classificatore con la massima precisione di prova? Qual è generalmente l'approccio migliore per ottenere un classificatore dalla validazione incrociata?
Risposte:
Esegui la convalida incrociata quando vuoi fare una di queste due cose:
La selezione del modello può presentarsi in diversi scenari:
(tieni presente che se stai selezionando un algoritmo - meglio chiamarlo modello - e stai facendo anche la ricerca di iperparametri, devi fare la validazione incrociata nidificata. È davvero necessario il CV nidificato? )
La convalida incrociata garantisce fino a un certo punto che la stima dell'errore è il più vicino possibile come errore di generalizzazione per quel modello (sebbene questo sia molto difficile da approssimare). Quando si osserva l'errore medio tra le pieghe è possibile avere una buona proiezione dell'errore previsto per un modello basato sull'insieme di dati completo. È anche importante osservare la varianza della previsione, vale a dire quanto l'errore varia da una piega all'altra. Se la variazione è troppo elevata (valori notevolmente diversi) il modello tenderà a essere instabile. Il bootstrap è l'altro metodo che fornisce una buona approssimazione in questo senso. Suggerisco di leggere attentamente la sezione 7 del libro "Elementi di apprendimento statistico", disponibile gratuitamente su: ELS-Standford
Come è stato menzionato prima, non è necessario prendere il modello costruito in nessuna delle pieghe. Invece, devi ricostruire il modello con il set di dati completo (quello che è stato diviso in pieghe). Se hai un set di test separato, puoi usarlo per provare questo modello finale, ottenendo un errore simile (e sicuramente più alto) di quello ottenuto da CV. Tuttavia, è necessario fare affidamento sull'errore stimato fornito dalla procedura CV.
Dopo aver eseguito CV con diversi modelli (combinazione di algoritmi, ecc.) Ha scelto quello che si è comportato meglio per quanto riguarda l'errore e la sua varianza tra le pieghe. Sarà necessario ricostruire il modello con l'intero set di dati. Ecco una confusione comune in termini: facciamo comunemente riferimento alla selezione del modello, pensando che il modello sia il modello pronto per la previsione basato sui dati, ma in questo caso si riferisce alla combinazione di algoritmo + procedure di preprocesing applicate. Pertanto, per ottenere il modello effettivo necessario per effettuare previsioni / classificazioni, è necessario crearlo utilizzando la combinazione del vincitore sull'intero set di dati.
L'ultima cosa da notare è che se si sta applicando qualsiasi tipo di preelaborazione, si utilizzano le informazioni sulla classe (selezione delle caratteristiche, riduzione della dimensionalità LDA, ecc.) Che devono essere eseguite in ogni piega e non in precedenza sui dati. Questo è un aspetto critico. Dovrebbe fare la stessa cosa se si applicano metodi di preelaborazione che prevedono informazioni dirette sui dati (PCA, normalizzazione, standardizzazione, ecc.). Tuttavia, è possibile applicare la preelaborazione che non dipende dai dati (eliminazione di una variabile in seguito all'opinione di un esperto, ma questo è abbastanza ovvio). Questo video può aiutarti in quella direzione: CV nel modo giusto e sbagliato
Ecco una bella spiegazione finale sull'argomento: CV e selezione del modello
No. Non selezioni nessuno dei classificatori k creati durante la convalida incrociata di k-fold. Innanzi tutto, lo scopo della convalida incrociata non è quello di elaborare un modello predittivo, ma di valutare quanto accuratamente un modello predittivo si esibirà nella pratica. In secondo luogo, per ragioni di argomento, supponiamo che doveste usare la convalida incrociata di k-fold con k = 10 per scoprire quale dei tre diversi algoritmi di classificazione sarebbe il più adatto a risolvere un determinato problema di classificazione. In tal caso, i dati vengono suddivisi casualmente in k parti di uguale dimensione. Una delle parti è riservata ai test e le altre parti k-1 verranno utilizzate per l'addestramento. Il processo di convalida incrociata viene ripetuto k (volte) volte in modo che su ogni iterazione vengano utilizzate parti diverse per i test. Dopo aver eseguito la convalida incrociata, guardi i risultati di ogni piega e ti chiedi quale algoritmo di classificazione (non uno dei modelli addestrati!) È il più adatto. Non vuoi scegliere l'algoritmo che ha la massima accuratezza del test su una delle 10 iterazioni, perché forse è capitato casualmente che i dati del test su quella particolare iterazione contenessero esempi molto semplici, che portano quindi a un'elevata accuratezza del test. Quello che vuoi fare è scegliere l'algoritmo che ha prodotto la massima precisione che quindi porta ad un'elevata precisione di prova. Quello che vuoi fare è scegliere l'algoritmo che ha prodotto la massima precisione che quindi porta ad un'elevata precisione di prova. Quello che vuoi fare è scegliere l'algoritmo che ha prodotto la massima precisionemedia su tutte le k pieghe . Ora che hai scelto l'algoritmo, puoi allenarlo utilizzando tutti i tuoi dati di allenamento e iniziare a fare previsioni in natura.
Questo va oltre lo scopo di questa domanda, ma dovresti anche ottimizzare gli iperparametri del modello (se presenti) per ottenere il massimo dall'algoritmo selezionato. Le persone di solito eseguono l'ottimizzazione dell'iperparametro usando la validazione incrociata.
Supponiamo quindi che tu abbia una formazione di cui stai utilizzando l'80% come formazione e il 20% come dati di convalida. Possiamo allenarci sull'80% e testare sul restante 20%, ma è possibile che il 20% che abbiamo preso non sia in somiglianza con i dati dei test effettivi e potrebbe comportare risultati negativi. Quindi, per evitare ciò, possiamo usare la validazione incrociata di k-fold.
Quindi diciamo che hai diversi modelli e vuoi sapere quale funziona meglio con il tuo set di dati, la validazione incrociata di k-fold funziona alla grande. Puoi conoscere gli errori di validazione sulle prestazioni di validazione k e scegliere il modello migliore basato su quello. Questo è generalmente lo scopo della validazione incrociata di k-fold.
Venendo a un solo modello e se si sta verificando con k-fold cross-validation, è possibile ottenere un approssimativo di errori dei dati di test, ma when you are actually training it finally, you can use the complete training data
. (Perché qui si presume che tutti i dati funzioneranno insieme meglio di una parte di esso A volte potrebbe non essere il caso, ma questo è il presupposto generale.)