Come scegliere un classificatore dopo la convalida incrociata?


13

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?


Penso che questa domanda dipenda molto dalla metrica utilizzata per determinare il "miglior approccio". Numerosamente molte persone usano la precisione, ma a seconda del set di dati, è possibile utilizzare altre metriche come una media armonica come il punteggio F1. Quindi la scelta metrica può essere altrettanto importante.
Nathan McCoy,

@NathanMcCoy bene supponendo che scegliamo l'accuratezza, sceglieremmo il classificatore con la massima precisione di prova?
Armon Safai,

Sicuro! Sto solo cercando di menzionare qualcos'altro a cui pensare :)
Nathan McCoy,

Risposte:


15

Esegui la convalida incrociata quando vuoi fare una di queste due cose:

  • Selezione del modello
  • Stima dell'errore di un modello

La selezione del modello può presentarsi in diversi scenari:

  • Selezione di un algoritmo rispetto ad altri per un particolare problema / set di dati
  • Selezione di iperparametri di un particolare algoritmo per un particolare problema / set di dati

(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


Vedo, hai davvero bisogno di avere dati di test separati o puoi semplicemente addestrare il tuo classificatore sul 100% di tutti i dati che hai da quando abbiamo già incrociato la validazione e abbiamo ottenuto l'errore di test approssimativo per il modello?
Armon Safai,

+1 per "ha scelto quello che ha funzionato meglio per quanto riguarda l'errore e la sua varianza tra le pieghe ". Tutti sembrano ignorare la varianza tra le pieghe quando si selezionano i modelli.
stmax,

Perché dovrei preoccuparmi dell'errore del test se solo l'errore CV è ciò che mi interessa? Ho chiesto perché hai scritto "davvero sull'errore stimato fornito dalla procedura CV".
HelloWorld,

Un'altra domanda. Cosa succede se il miglior modello di CV non è il miglior modello se creato per l'intero set di dati?
HelloWorld,

1
Costruisci il modello sul 100% dei dati, questo significa sul 100% dei dati utilizzati per la convalida incrociata. Se in precedenza hai diviso i dati originali sull'80% -20% per l'allenamento e ulteriori test, allora fai CV sull'80%, seleziona il modello e riqualifica l'intero 80%. Avere un set di test in questo caso (20%) ti consente solo di vedere come si sta comportando con i nuovi dati invisibili (puoi pensarli come dati che saranno disponibili in futuro), ma la stima dell'errore che usi è quella del CV . Si spera che produrrà un errore simile con i nuovi dati se si tratta di un buon modello (quel 20%, o in realtà nuovi dati). @ArmonSafai
Javierfdr,

8

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.


Ho pensato che la validazione incrociata di k-fold crea k modelli diversi poiché ci sono 10 diversi set di dati di allenamento.
Armon Safai,

Controlla la mia risposta aggiornata. L'ho perfezionato per affrontare la domanda in modo più diretto e per spiegare meglio con un esempio.
tuomastik,

vedo, quindi quando finalmente alleni il tuo classificatore, usi TUTTI i tuoi dati per addestrare il classificatore dopo aver scelto il tuo algoritmo dalla cross validation
Armon Safai

Sì, se non si desidera eseguire ulteriori analisi, come l'ottimizzazione dell'iperparametro, che richiede una convalida incrociata nidificata in cui il loop CV interno si occupa della messa a punto dell'iperparametro e il loop CV esterno valuta le prestazioni del modello su un set di dati indipendente con ottimale iperparametri.
tuomastik,

1

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


Quindi quando eseguiamo la convalida incrociata, scegliamo solo il modello con la massima precisione di prova?
Armon Safai,

quando dici test, vuoi dire test del set di dati di validazione giusto?
Hima Varsha,

sì, questo è quello che voglio dire
Armon Safai,

una volta che abbiamo usato la validazione incrociata per selezionare il modello con le migliori prestazioni (ad esempio hai 2 modelli: regressione lineare o rete neurale), formiamo quel modello (che si tratti della regressione lineare o della rete neurale) su tutti i dati
Hima Varsha,

1
@HimaVarsha, quindi se decidessimo di prendere la media, come sceglieremmo il "classificatore medio"?
Armon Safai,
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.