Come scegliere un modello predittivo dopo la convalida incrociata di k-fold?


149

Mi chiedo come scegliere un modello predittivo dopo aver eseguito la convalida incrociata di K-fold.

Questo può essere espresso in modo strano, quindi lasciatemi spiegare in modo più dettagliato: ogni volta che eseguo la convalida incrociata di K-fold, utilizzo K sottoinsiemi dei dati di allenamento e finisco con K diversi modelli.

Vorrei sapere come scegliere uno dei modelli K, in modo da poterlo presentare a qualcuno e dire "questo è il miglior modello che possiamo produrre".

È corretto scegliere uno dei modelli K? O c'è qualche tipo di best practice che è coinvolta, come scegliere il modello che ottiene l'errore di test mediano?


2
Potresti trovare utili le risposte alla seguente domanda: stats.stackexchange.com/questions/2306/…
BGreene

Dovrai ripetere 5 volte CV 100 volte e fare una media dei risultati per ottenere una precisione sufficiente. E la risposta di @bogdanovist è perfetta. È possibile ottenere la stessa precisione della stima dell'accuratezza dal bootstrap con un minor numero di adattamenti del modello.
Frank Harrell,

@Frank Harrell, perché dici che sono necessarie 100 ripetizioni (di solito uso 10 ripetizioni su 10 volte), è questa una regola empirica in quanto l'OP non ha fornito dettagli?
BGreene,

2
Per 10 volte il cv è meglio fare ripetizioni. Saranno necessarie più ripetizioni con 5 volte. Queste sono le regole empiriche. Un singolo cv di 10 volte darà una risposta instabile, vale a dire, ripeti le 10 divisioni e avrai abbastanza di una risposta diversa di cui preoccuparti. 50
Frank Harrell,

Quasi un duplicato esatto: stats.stackexchange.com/questions/11602 con molte risposte meritevoli. Forse questi fili dovrebbero essere uniti, ma non sono sicuro in quale direzione. Entrambi hanno accettato risposte molto valide. Ma l'altro è più vecchio e ha più punti di vista / voti, quindi potrebbe avere senso unire questo in quello.
amoeba,

Risposte:


201

Penso che manchi ancora qualcosa nella tua comprensione dello scopo della validazione incrociata.

Facciamo un po 'di terminologia, generalmente quando diciamo "un modello" ci riferiamo a un metodo particolare per descrivere come alcuni dati di input si relazionano a ciò che stiamo cercando di prevedere. Generalmente non ci riferiamo a casi particolari di quel metodo come a modelli diversi. Quindi potresti dire 'Ho un modello di regressione lineare' ma non chiameresti due diversi set di coefficienti addestrati modelli diversi. Almeno non nel contesto della selezione del modello.

Pertanto, quando esegui la convalida incrociata di K-fold, stai testando la capacità del tuo modello di essere addestrato da alcuni dati e quindi prevedere i dati che non ha visto. Per questo utilizziamo la validazione incrociata perché se ti alleni utilizzando tutti i dati che hai, non ne hai più nessuno per il test. Potresti farlo una volta, ad esempio usando l'80% dei dati per allenarti e il 20% per testare, ma cosa succede se il 20% che ti è capitato di scegliere per testare contiene un mucchio di punti particolarmente facili (o particolarmente difficili) prevedere? Non avremo elaborato la migliore stima possibile della capacità dei modelli di apprendere e prevedere.

Vogliamo utilizzare tutti i dati. Quindi, per continuare l'esempio sopra riportato di una divisione 80/20, faremmo 5 volte la convalida incrociata addestrando il modello 5 volte sull'80% dei dati e testando sul 20%. Assicuriamo che ogni punto dati finisca nel set di test del 20% esattamente una volta. Abbiamo quindi utilizzato tutti i punti dati che dobbiamo contribuire a comprendere in che misura il nostro modello svolge il compito di apprendere da alcuni dati e prevedere alcuni nuovi dati.

Ma lo scopo della validazione incrociata non è quello di elaborare il nostro modello finale. Non usiamo queste 5 istanze del nostro modello addestrato per fare previsioni reali. Per questo vogliamo usare tutti i dati che dobbiamo elaborare con il miglior modello possibile. Lo scopo della validazione incrociata è il controllo del modello, non la costruzione del modello.

Ora, supponiamo di avere due modelli, un modello di regressione lineare e una rete neurale. Come possiamo dire quale modello è migliore? Possiamo eseguire la convalida incrociata di K-fold e vedere quale si rivela migliore nel prevedere i set point del test. Ma una volta che abbiamo utilizzato la convalida incrociata per selezionare il modello con le migliori prestazioni, formiamo quel modello (che si tratti della regressione lineare o della rete neurale) su tutti i dati. Non utilizziamo le istanze del modello effettivo che abbiamo addestrato durante la convalida incrociata per il nostro modello predittivo finale.

Si noti che esiste una tecnica chiamata aggregazione bootstrap (generalmente abbreviata in 'bagging') che utilizza in qualche modo istanze del modello prodotte in modo simile alla convalida incrociata per costruire un modello di ensemble, ma che è una tecnica avanzata oltre l'ambito della tua domanda qui.


8
Sono completamente d'accordo con questo punto e ho pensato di utilizzare tutti i dati. Detto questo, se addestrassimo il nostro modello finale utilizzando l'intero set di dati, questo non comporterebbe un eccesso di adattamento e quindi sabotare le previsioni future?
Berk U.

19
No! L'overfitting ha a che fare con la complessità del modello, non ha nulla a che fare con la quantità di dati utilizzati per addestrare il modello. La complessità del modello ha a che fare con il metodo utilizzato dal modello, non con i valori che i suoi parametri assumono. Ad esempio se includere x ^ 2 coefficienti e x coefficienti in un modello di regressione.
Bogdanovist,

17
@Bogdanovist: dico piuttosto che il sovradimensionamento ha a che fare con casi di addestramento troppo pochi per un modello troppo complesso. Quindi (anche) ha a che fare con un numero di casi di addestramento. Ma avere più casi di formazione ridurrà il rischio di overfitting (per una costante complessità del modello).
cbeleites,

3
@Bogdanovist For that we want to use all the data we have to come up with the best model possible.- Quando si esegue una ricerca della griglia con la convalida incrociata di K-fold, significa che useresti i migliori parametri trovati dalla ricerca della griglia e adatteresti un modello su tutti i dati di allenamento, quindi valuteresti le prestazioni di generalizzazione usando il set di test?
arun

4
@arun, se hai utilizzato la convalida incrociata di k-fold e hai selezionato il modello migliore con i migliori parametri e iperparametri, quindi dopo aver inserito il modello finale sul set di allenamento, non è necessario verificare nuovamente le prestazioni utilizzando un set di test. Questo perché hai già verificato il comportamento del modello con parametri specificati su dati invisibili.
Sandeep S. Sandhu,

29

Consentitemi di aggiungere alcuni punti oltre alla risposta di Bogdanovist

Come dici tu, alleni diversi modelli. Si differenziano per il fatto che 1 / (k-1) dei dati di allenamento viene scambiato con altri casi. Questi modelli sono talvolta chiamati modelli surrogati perché le prestazioni (medie) misurate per questi modelli sono prese come surrogate delle prestazioni del modello addestrato su tutti i casi.k

Ora, ci sono alcune ipotesi in questo processo.

  • Presupposto 1: i modelli surrogati sono equivalenti al modello "dati interi".
    È abbastanza comune che questa ipotesi si interrompa e il sintomo è il noto pregiudizio pessimistico della convalida incrociata -fold (o altri schemi di validazione basati sul ricampionamento). Le prestazioni dei modelli surrogati sono in media peggiori rispetto alle prestazioni del modello "dati interi" se la curva di apprendimento ha ancora una pendenza positiva (cioè un minor numero di campioni di addestramento porta a modelli peggiori).k

  • L'assunzione 2 è una versione più debole dell'assunzione 1: anche se i modelli surrogati sono in media peggiori rispetto all'intero modello di dati, assumiamo che siano equivalenti tra loro. Ciò consente di riassumere i risultati del test per i modelli di surrogato come prestazioni medie. L'instabilità dei modelli porta alla rottura di questa ipotesi: le prestazioni reali dei modelli addestrati sui casi di addestramento di variano molto. È possibile misurarlo eseguendo iterazioni / ripetizioni della convalida incrociata -fold (nuove assegnazioni casuali ai sottoinsiemi ) e osservando la varianza (differenze casuali) tra le previsioni di diversi modelli surrogati per lo stesso caso.N k - 1k
    kkNk1kkk

  • Il numero finito di casi indica che la misurazione delle prestazioni sarà soggetta a un errore casuale (varianza) dovuto al numero finito di casi di test. Questa fonte di varianza è diversa (e quindi si aggiunge alla) varianza di instabilità del modello.

Le differenze nelle prestazioni osservate sono dovute a queste due fonti di varianza.

La "selezione" a cui pensi è una selezione di set di dati: selezionare uno dei modelli surrogati significa selezionare un sottoinsieme di campioni di addestramento e affermare che questo sottoinsieme di campioni di addestramento porta a un modello superiore. Anche se questo può essere vero, di solito la "superiorità" è falsa. In ogni caso, poiché scegliere "il migliore" dei modelli surrogati è un'ottimizzazione basata sui dati, è necessario convalidare (misurare le prestazioni) questo modello selezionato con nuovi dati sconosciuti. Il set di test all'interno di questa validazione incrociata non è indipendente in quanto è stato utilizzato per selezionare il modello surrogato.

Potresti voler dare un'occhiata al nostro documento, si tratta di classificare dove le cose sono generalmente peggiori rispetto alla regressione. Tuttavia, mostra come si sommano queste fonti di varianza e distorsione.
Beleites, C. e Neugebauer, U. e Bocklitz, T. e Krafft, C. e Popp, J .: Pianificazione della dimensione del campione per i modelli di classificazione. Anal Chim Acta, 2013, 760, 25-33.
DOI: 10.1016 / j.aca.2012.11.007
manoscritto accettato su arXiv: 1211.1323


Tu e Bogdanovist siete in disaccordo quando dici picking "the best" of the surrogate models is a data-driven optimization, you'd need to validate (measure performance) this picked model with new unknown data. The test set within this cross validation is not independent as it was used to select the surrogate model.e lui dice che But once we have used cross-validation to select the better performing model, we train that model (whether it be the linear regression or the neural network) on all the data.questo è abbastanza comune ed è cruciale che venga specificato un approccio standardizzato
jpcgandre

Soprattutto per piccoli set di dati in cui forse non è possibile escludere i dati dal CV ma i rischi di un overfitting del modello sono elevati! Sono necessari riferimenti per chiarire questo problema.
jpcgandre,

5
@jpcgandre: non vedo alcun disaccordo. Bogdanovist spiega come calcolare effettivamente il modello di scelta dagli iperparametri che sono stati selezionati tramite validazione incrociata e ho aggiunto che dopo tale selezione, il modello deve subire un altro livello (esterno) indipendente di validazione. In altre parole, ad es. Un progetto di validazione nidificato: loop di validazione interno per la selezione dell'iperparametro, loop esterno per testare i modelli selezionati (se vi capita di avere abbastanza casi, potreste anche optare per un set di test indipendente).
cbeleites,

5
La convalida interna / esterna impostata è per la convalida incrociata nota come convalida incrociata doppia o nidificata, l'ho vista anche denominata convalida del modello incrociato ( dx.doi.org/10.1016/j.chemolab.2006.04.021 ). Con set di test indipendente corrisponde alla suddivisione in tre set: treno / (ottimizzazione) validazione / test (= validazione finale). Se hai così pochi casi che non puoi tralasciare i dati per un CV di secondo livello, direi che dovresti correggere i tuoi iperparametri con altri mezzi invece di cercare di ottimizzare selezionando uno dei set di iperparametri.
cbeleites,

@cbeleites Ho una domanda. Quindi, per ottenere i parametri del modello finale, prenderesti la media degli iperparametri da ciascuna piega esterna e riqualificheresti l'intero set di dati usando quell'iperparametro medio? Oppure farebbe la ricerca dell'iperparametro in un CV regolare, quindi confermerebbe la stabilità di questo metodo usando un CV annidato ripetuto?
Michelle,

11

Ho trovato questo eccellente articolo Come addestrare un modello finale di machine learning molto utile per chiarire tutte le confusioni che ho sull'uso del CV nell'apprendimento automatico.

Fondamentalmente utilizziamo CV (ad esempio 80/20 split, k-fold, ecc.) Per stimare quanto bene eseguirà l'intera procedura (compresa l'ingegneria dei dati, la scelta del modello (es. Algoritmo) e iperparametri, ecc.) dati. E una volta scelta la "procedura" vincente, i modelli montati da CV hanno raggiunto il loro scopo e ora possono essere scartati. Quindi si utilizza la stessa "procedura" vincente e si allena il modello finale utilizzando l'intero set di dati.


1

È una domanda molto interessante. Per chiarire, dovremmo comprendere la differenza tra modello e valutazione del modello. Usiamo un set completo di formazione per costruire un modello e prevediamo che questo modello verrà finalmente utilizzato.

La valutazione incrociata di K comporterebbe la costruzione di modelli K ma tutto verrebbe abbandonato. I modelli K sono solo usati per la valutazione. e ha appena prodotto metriche per dirti quanto questo modello si adatta ai tuoi dati.

Ad esempio, scegli LinearRegression algo ed esegui due operazioni sullo stesso set di training: uno con validazione incrociata di 10 volte e l'altro con 20 volte. il modello di regressione (o classificatore) dovrebbe essere lo stesso, ma il coefficiente di correlazione e l'errore al quadrato relativo della radice sono diversi.

Di seguito sono riportate due serie per la convalida incrociata 10 volte e 20 volte con weka

1a manche con 10 volte

=== Run information ===
Test mode:    10-fold cross-validation
...
=== Classifier model (full training set) ===


Linear Regression Model  <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9206
Mean absolute error                35151281151.9807
Root mean squared error            42707499176.2097
Relative absolute error                 37.0147 %
Root relative squared error             38.9596 %
Total Number of Instances              144     

2a manche con 20 volte

=== Run information ===
...
Test mode:    20-fold cross-validation

=== Classifier model (full training set) ===


Linear Regression Model   <---- This model is the same

Date = 844769960.1903 * passenger_numbers -711510446549.7296

Time taken to build model: 0 seconds

=== Cross-validation ===  <---- Hereafter produced different metrics
=== Summary ===

Correlation coefficient                  0.9203
Mean absolute error                35093728104.8746
Root mean squared error            42790545071.8199
Relative absolute error                 36.9394 %
Root relative squared error             39.0096 %
Total Number of Instances              144     

0

Non sono sicuro che la discussione sopra sia del tutto corretta. Nella convalida incrociata, possiamo dividere i dati in formazione e test per ogni corsa. Utilizzando solo i dati di addestramento, è necessario adattare il modello e scegliere i parametri di ottimizzazione in ciascuna classe di modelli considerati. Ad esempio, nelle reti neurali i parametri di ottimizzazione sono il numero di neuroni e le scelte per la funzione di attivazione. Per fare ciò, si esegue una convalida incrociata nei soli dati di allenamento .

Una volta trovato il modello migliore in ogni classe, il modello più adatto viene valutato utilizzando i dati del test. Il ciclo di convalida incrociata "esterno" può essere utilizzato per fornire una migliore stima delle prestazioni dei dati di test nonché una stima della variabilità. Una discussione può quindi confrontare le prestazioni del test per classi diverse, ad esempio reti neurali e SVM. Viene scelta una classe di modello, con la dimensione del modello fissa e ora vengono utilizzati tutti i dati per apprendere il modello migliore.

Ora, se come parte del tuo algoritmo di apprendimento automatico vuoi selezionare costantemente la migliore classe di modello (diciamo ogni settimana), allora anche questa scelta deve essere valutata nei dati di addestramento! La misurazione dei dati di test non può essere utilizzata per giudicare la scelta della classe del modello se si tratta di un'opzione dinamica.


0

Perché utilizziamo la validazione incrociata di k-fold?

La convalida incrociata è un metodo per stimare l'abilità di un metodo su dati invisibili. Come usare una divisione di prova del treno.

La convalida incrociata crea e valuta sistematicamente più modelli su più sottoinsiemi del set di dati. Questo, a sua volta, fornisce una popolazione di misure di performance .

  • Siamo in grado di calcolare la media di queste misure per avere un'idea del rendimento medio della procedura.
  • Possiamo calcolare la deviazione standard di queste misure per avere un'idea di quanto l'abilità della procedura dovrebbe variare nella pratica.

Ciò è utile anche per fornire un confronto più sfumato di una procedura con un'altra quando si sta tentando di scegliere quale algoritmo e procedure di preparazione dei dati utilizzare.

Inoltre, queste informazioni sono preziose in quanto è possibile utilizzare la media e la diffusione per fornire un intervallo di confidenza sulle prestazioni previste in una procedura di apprendimento automatico nella pratica.

riferimento

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.