Come si applica in modo appropriato la convalida incrociata nel contesto della selezione dei parametri di apprendimento per le macchine vettoriali di supporto?


9

Il meraviglioso pacchetto libsvm fornisce un'interfaccia python e un file "easy.py" che cerca automaticamente i parametri di apprendimento (costo e gamma) che massimizzano l'accuratezza del classificatore. All'interno di un determinato insieme di parametri di apprendimento candidati, l'accuratezza è resa operativa dalla convalida incrociata, ma ritengo che ciò mina lo scopo della convalida incrociata. Cioè, nella misura in cui i parametri di apprendimento stessi possono essere scelti in un modo che potrebbe causare un eccesso di dati, ritengo che un approccio più appropriato sarebbe applicare la convalida incrociata a livello della ricerca stessa: eseguire la ricerca su un set di dati di training e quindi valutare la massima precisione dell'SVM risultante dai parametri di apprendimento scelti in modo definitivo mediante valutazione all'interno di un set di dati di test separato. O mi sto perdendo qualcosa qui?

Risposte:


10

Se impari gli iperparametri nei dati di allenamento completi e poi esegui la convalida incrociata, otterrai una stima delle prestazioni ottimisticamente distorta, perché i dati di test in ogni piega saranno già stati utilizzati nell'impostazione degli iperparametri, quindi l'ipermercato i parametri selezionati sono selezionati in parte perché si adattano ai dati nel set di test. La distorsione ottimistica introdotta in questo modo può essere inaspettatamente grande. Cfr. Cawley e Talbot, "Sull'adattamento eccessivo nella selezione del modello e conseguente bias di selezione nella valutazione delle prestazioni", JMLR 11 (lug): 2079-2107, 2010.(In particolare la sezione 5.3). La cosa migliore da fare è la convalida incrociata nidificata. L'idea di base è di convalidare in modo incrociato l'intero metodo utilizzato per generare il modello, quindi considera la selezione del modello (scegliendo gli iperparametri) come semplicemente parte della procedura di adattamento del modello (dove vengono determinati i parametri) e non puoi andare troppo sbagliato.

Se si utilizza la convalida incrociata sul set di allenamento per determinare gli iperparametri e quindi valutare le prestazioni di un modello addestrato utilizzando tali parametri sull'intero set di allenamento, utilizzando un set di test separato, va bene (purché si disponga di dati sufficienti per il montaggio affidabile del modello e la stima delle prestazioni utilizzando partizioni disgiunte).


Bel riferimento!
Andrew,

Nel secondo paragrafo, come incorporeresti anche la selezione delle funzionalità? Andrebbe bene: i) eseguire l'ottimizzazione dei parametri ipertestuali come hai detto sopra (ottenere parametri ipertestuali ottimali) ii) eseguire la selezione della funzione in un altro ciclo di convalida incrociata per ottenere un set di predittori principali (la selezione della funzione viene eseguita su dati di allenamento suddivisi in un set di sottotest e di validazione usando qualunque metodo di ricampionamento usato nell'ottimizzazione dell'iperparametro) iii) addestrare un modello con il parametro ipertestuale superiore e il predittore superiore impostati su dati di allenamento completi. Test su set di test separato.
SM

per essere un po 'più chiari su ii) eseguire la selezione delle funzionalità in un altro round di cross validation per ottenere un set di predittori principali (i dati di training vengono suddivisi in subtraining e set di validazione tramite il metodo di ricampionamento utilizzato nell'ottimizzazione dell'iperparametro, quindi la selezione della funzionalità viene eseguita su dati di sottoallenamento).
SM

In alternativa, è possibile effettuare prima la selezione delle funzionalità tramite la convalida incrociata per ottenere il set di funzionalità principali, quindi eseguire l'ottimizzazione dei parametri iper di qualunque modello di interesse utilizzando il set di funzionalità top (come sopra nella convalida incrociata)? Quindi addestrare i modelli con i loro parametri ipertestuali ottimali sui dati di allenamento completi con solo il set di funzionalità principali già determinato e testare su set di test separati?
SM

0

Non credo che la convalida incrociata sia utilizzata in modo improprio nel caso di LIBSVM perché viene eseguita a livello di dati di test. Tutto ciò che fa è k-fold cross validation e cerca il miglior parametro per il kernel RBF. Fammi sapere che non sei d'accordo.


La selezione degli iperparametri non dovrebbe coinvolgere in alcun modo i dati del test, poiché ciò comporterà una stima delle prestazioni ottimisticamente distorta. Essenzialmente la scelta degli iperparametri dovrebbe essere considerata parte integrante del montaggio dell'SVM, quindi la procedura di test deve anche testare l'errore dovuto alla selezione degli iperparametri, vedi il mio documento a cui faccio riferimento nella mia risposta alla domanda (è un accesso aperto).
Dikran Marsupial,
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.