Convalida incrociata e messa a punto dei parametri


17

Qualcuno può dirmi che cosa dà esattamente un'analisi di convalida incrociata come risultato? È solo la precisione media o fornisce qualche modello con parametri ottimizzati?

Perché, ho sentito da qualche parte che la convalida incrociata viene utilizzata per l'ottimizzazione dei parametri.

Risposte:


26

La convalida incrociata fornisce una misura dell'accuratezza fuori dal campione calcolando la media su più partizioni casuali dei dati in campioni di addestramento e test. Viene spesso utilizzato per l'ottimizzazione dei parametri eseguendo la convalida incrociata per più (o molti) possibili valori di un parametro e scegliendo il valore del parametro che fornisce l'errore medio di convalida incrociata più basso.

Quindi il processo stesso non ti fornisce un modello o una stima dei parametri, ma puoi usarlo per aiutarti a scegliere tra alternative.


12

Da aggiungere alla risposta di Jonathan.

Tuttavia, se si utilizza la convalida incrociata per l'ottimizzazione dei parametri, gli out-sample diventano effettivamente parte del modello. Quindi è necessario un altro campione indipendente per misurare correttamente le prestazioni del modello finale.

Impiegata per misurare le prestazioni del modello, la validazione incrociata può misurare più della precisione media:
una seconda cosa che puoi misurare con la validazione incrociata è la stabilità del modello rispetto alla modifica dei dati di addestramento: la validazione incrociata crea molti modelli "surrogati" con set di allenamento leggermente diversi. Se i modelli sono stabili, tutti questi modelli surrogati sono equivalenti, se l'addestramento è instabile, i modelli surrogati variano molto. È possibile quantificare questo "varia molto", ad es. Come varianza delle previsioni di diversi modelli di surrogato per lo stesso campione (nella convalida incrociata ripetuta / ripetuta) o, ad esempio, come varianza dei parametri dei modelli di surrogato.


3

Per aggiungere alle risposte precedenti, inizieremo dall'inizio:

Ci sono alcuni modi in cui puoi adattare i tuoi modelli ai dati di allenamento, alcuni sono ovvi, altri meno. Innanzitutto, e il più importante è l'adattamento eccessivo dei parametri di allenamento (pesi) ai dati (adattamento della curva ai parametri nella regressione logistica, pesi della rete nella rete neurale ecc.). Quindi modelleresti il ​​rumore nei dati: se ti alleni non solo catturi la funzione generatrice sottostante, ma anche la casualità dovuta alla dimensione del campione e al fatto che il campione non è una rappresentazione perfetta della popolazione. Questo overfitting può essere in una certa misura mitigato penalizzando alcuni attributi (nella complessità generale) del modello. Questo può essere fatto interrompendo l'allenamento quando le prestazioni sul campione del treno non migliorano più in modo significativo, rimuovendo alcuni neuroni da una rete neurale (chiamata dropout),https://ieeexplore.ieee.org/document/614177/ ) ecc.). Tuttavia, queste strategie di regolarizzazione sono esse stesse parametrizzate (quando ti fermi ?, quanti neuroni rimuovere? Ecc.). Inoltre, la maggior parte dei modelli di apprendimento automatico ha una serie di iperparametri che devono essere impostati prima dell'inizio della formazione. E questi iperparametri sono sintonizzati nella fase di ottimizzazione dei parametri.

Questo ci porta al secondo e più sottile tipo di overfitting: iper-parametrizzazione. La convalida incrociata può essere utilizzata per trovare i "migliori" iperparametri, allenando ripetutamente il modello da zero sulle pieghe k-1 del campione e testando sull'ultima piega.

Quindi, come si fa esattamente? A seconda della strategia di ricerca (fornita da Tenshi), si impostano iperparametri del modello e si allena il modello k volte, utilizzando ogni volta una piega diversa. "Ricordi" le prestazioni medie del modello su tutte le pieghe del test e ripeti l'intera procedura per un'altra serie di iperparametri. Quindi scegli una serie di iperparametri che corrispondono alle migliori prestazioni durante la convalida incrociata. Come puoi vedere, il costo di calcolo di questa procedura dipende fortemente dal numero di insiemi di iperparametri che devono essere considerati. Ecco perché sono state sviluppate alcune strategie per la scelta di questo set (qui ho intenzione di generalizzare ciò che ha detto Tenshi):

  1. Ricerca griglia: per ogni iperparametro si enumera un numero finito di valori possibili. Quindi la procedura viene eseguita in modo esauriente per tutte le combinazioni di iperparametri enumerati. Ovviamente, se si dispone di iperparametri continui, non è possibile provarli tutti.
  2. Ricerca griglia casuale: simile alla normale ricerca griglia, ma questa volta non si provano tutte le combinazioni in modo esaustivo, ma si campiona invece un numero fisso di volte per tutti i possibili valori. Si noti che qui è possibile non solo enumerare i possibili valori per un iperparametro, ma è anche possibile fornire una distribuzione da cui campionare.
  3. BayesianSearch: la combinazione di valori di iperparametri viene scelta per massimizzare il miglioramento atteso del punteggio. Per di più: http://papers.nips.cc/paper/4522-practical-bayesian-optimization-of-machine-learning-algorithms.pdf . E una biblioteca che si occupa solo di quello: https://github.com/hyperopt/hyperopt . Dato che non è facile combinarlo con sklearn come raccomandato da tenshi, usalo solo se non lavori con sklearn.
  4. Altri modi per la ricerca guidata nello spazio di iperparametri. Dalla mia esperienza sono usati raramente, quindi non li tratterò qui.

Tuttavia, questa non è la fine della storia, poiché gli iperparametri possono (e saranno) troppo adatti ai dati. Nella maggior parte dei casi puoi semplicemente conviverci, ma se vuoi massimizzare il potere di generalizzazione del tuo modello, potresti voler provare a regolarizzare anche gli iperparametri. Innanzitutto, è possibile valutare un po 'meglio le prestazioni su dati fuori campione utilizzando la ricerca della griglia nidificata (dettagli: http://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html , discussione: convalida incrociata nidificata per la selezione del modello) oppure utilizza semplicemente un set di convalida non utilizzato per l'ottimizzazione dell'iperparametro. Per quanto riguarda la regolarizzazione nello spazio dell'iperparametro, è una domanda più o meno aperta. Alcune idee includono la scelta non dell'insieme migliore di valori di iperparametri, ma qualcosa di più vicino al centro; il ragionamento è il seguente: i migliori valori di iperparametro probabilmente superano i dati solo perché si comportano meglio dell'altro dei dati del treno, i parametri cattivi sono semplicemente cattivi, ma quelli nel mezzo possono probabilmente ottenere una generalizzazione migliore rispetto ai migliori . Andrew Ng ha scritto un articolo al riguardo. Un'altra opzione è limitare il tuo spazio di ricerca (stai regolarizzando introducendo forti distorsioni qui - i valori al di fuori dello spazio di ricerca non saranno mai selezionati ovviamente).

Nota laterale: usare l'accuratezza come metrica delle prestazioni nella maggior parte dei casi è una pessima idea, guarda i punteggi f1 e f_beta: questi parametri rifletteranno nella maggior parte dei casi meglio ciò che stai effettivamente cercando di ottimizzare nei problemi di classificazione binaria.

Riassumendo: la convalida incrociata da sola viene utilizzata per valutare le prestazioni del modello su dati fuori campione, ma può anche essere utilizzata per ottimizzare gli iperparametri in congiunzione con una delle strategie di ricerca nello spazio degli iperparametri. L'individuazione di buoni iperparametri consente di evitare o almeno ridurre il sovrautilizzo, ma tenere presente che gli iperparametri possono anche sovrautilizzare i dati.


2

Se sei di origini scikit-learn, questa risposta potrebbe essere utile.

La convalida incrociata k-fold viene utilizzata per dividere i dati in kpartizioni, lo stimatore viene quindi addestrato sulle k-1partizioni e quindi testato sulla kthpartizione. In questo modo, scegliendo quale partizione dovrebbe essere la kthpartizione, ci sono kpossibilità. Quindi ottieni krisultati di tutte le kpossibilità del tuo stimatore.

questi sono metodi computazionalmente costosi, ma se hai intenzione di provare diversi stimatori puoi provare questi tre per fare l'ottimizzazione dell'iperparametro insieme al CV:

io. GridSearchCV - un elenco esaustivo di tutti i possibili P e C per gli iperparametri per tutti gli stimatori. Alla fine fornisce i migliori iperparametri usando la media della media di quel particolare stimatore CV.

II. RandomizedSearchCV - Non esegue tutte le P e C degli iperparametri, ma con un approccio randomizzato, fornisce allo stimatore accurato il più vicino possibile risparmiando di più sul calcolo.

iii. BayesSearchCV - Non fa parte scikit-learnma fa l'ottimizzazione bayesiana per fare una ricerca casuale e adattare i risultati.

tl: dr : CV è usato solo per evitare distorsioni elevate e varianza elevata per il tuo stimatore a causa dei dati che stai trasmettendo. Spero sia stato utile.

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.