2013-10-12 13 views
20

C'è qualcuno che possa spiegarmi in parole molto semplici qual è la differenza tra la convalida incrociata e la ricerca della griglia? Come funziona e dovrei fare prima una convalida incrociata e poi una ricerca in rete?Cross Validation and Grid Search

La mia domanda deriva dalla lettura di questo documento: sklearn

risposta

56

convalida incrociata è quando si riserva una parte dei dati da utilizzare nella valutazione del modello. Esistono diversi metodi di convalida incrociata. Il concetto più semplice è quello di prendere solo il 70% (basta creare un numero qui, non deve essere il 70%) dei dati e utilizzarlo per l'allenamento, e quindi usare il restante 30% dei dati per valutare il modello prestazione. La ragione per cui sono necessari dati diversi per la formazione e la valutazione del modello è la protezione dal sovradattamento. Esistono altre tecniche di convalida incrociata (leggermente più coinvolte), ovviamente, come la convalida incrociata di k-fold, che spesso viene utilizzata nella pratica.

Ricerca griglia significa che si dispone di un insieme di modelli (che si differenziano tra loro nei valori dei parametri, che si trovano su una griglia). Quello che fai è quindi allenare ciascuno dei modelli e valutarlo utilizzando la convalida incrociata. Quindi seleziona quello che ha funzionato meglio.

Per fornire un esempio concreto, se si utilizza una macchina vettoriale di supporto, è possibile utilizzare valori diversi per gamma e C. Ad esempio, potresti avere una griglia con i seguenti valori per (gamma, C): (1, 1), (0.1, 1), (1, 10), (0.1, 10). È una griglia perché è come un prodotto di [1, 0.1] per gamma e [1, 10] per C. Grid-search fondamentalmente formerebbe un SVM per ciascuno di questi quattro valori di (gamma, C), quindi lo valuterà usando la convalida incrociata e selezionerà quello che ha fatto meglio.

8

La convalida incrociata è un metodo per stimare in modo affidabile le prestazioni del set di prova (generalizzazione) di un modello. Grid-search è un modo per selezionare il meglio di una famiglia di modelli, parametrizzati da una griglia di parametri.

Qui per "modello" non intendo un'istanza addestrata, più gli algoritmi insieme ai parametri, ad esempio SVC(C=1, kernel='poly').

(non sono sicuro se che si qualifica parole come semplici, volevo solo dare una breve definizione conciso oltre a bella spiegazione di O Neeman)

+2

Beh, ho capito. Ma nell'Esempio di scikit-learn c'è dapprima una divisione del data_set facendo 'X_train, X_test, y_train, y_test = train_test_split ( X, y, test_size = 0.5, random_state = 0' e quindi nella ricerca della griglia 'clf = GridSearchCV (SVC (C = 1), tuned_parameters, cv = 5, scoring = score)' questo significa che il primo step split per es. 1000 allenamento impostato su 500 treni e 500 oggetti di prova e dopo di che la ricerca della griglia divide la formazione di 500 in "cv = 5" 5 volte la convalida incrociata? Quindi i 500 oggetti dove divisi in forse 250 e 250 o 400 e 100 e così via ?! – Linda

+6

Sì, è vero. Metà dei dati viene riservata per la valutazione ** dopo ** la selezione del modello di ricerca della griglia (che utilizza la convalida incrociata 5 volte). La ragione è che non vogliono solo selezionare il modello migliore, ma anche avere una buona stima per quanto bene si generalizza (quanto bene si comporta sui nuovi dati). Non puoi semplicemente utilizzare il punteggio dalla convalida incrociata della ricerca della griglia, perché hai scelto il modello che ha ottenuto il punteggio più alto, quindi potrebbe esserci una sorta di bias di selezione incorporato nel punteggio. Ecco perché mantengono parte dei dati da testare al termine della ricerca della griglia. –

5

convalida incrociata, semplicemente separando i dati di prova e di formazione e convalidare i risultati dell'allenamento con i dati del test. Esistono due tecniche di convalida incrociata che conosco.

Prima convalida incrociata Test/Train. Divisione dei dati come test e formazione.

In secondo luogo, la convalida incrociata di k-fold divide i dati in k bin, utilizza ciascun raccoglitore come dati di test e utilizza il resto dei dati come dati di addestramento e convalida i dati di test. Ripeti il ​​processo k volte. E ottieni le prestazioni medie. k-fold validazione incrociata particolarmente utile per dataset di piccole dimensioni poiché massimizza sia i dati di test che quelli di allenamento.

Ricerca griglia; Lavorando sistematicamente con più combinazioni di melodie dei parametri, convalida incrociate ciascuna e determina quale offre le migliori prestazioni. Puoi lavorare con molte combinazioni modificando solo un po 'i parametri.