2012-05-03 11 views
24

Ho sempre pensato che da quello che ho letto che la convalida incrociata viene eseguita in questo modo:Cross Validation in Weka

In convalida incrociata k-fold, il campione originale è a caso partizionato in sottocampioni k. Dei sottocampioni k, un singolo sottocampione viene mantenuto come dati di convalida per testare il modello e i sottocampioni k-1 rimanenti vengono utilizzati come dati di allenamento. Il processo di convalida incrociata viene quindi ripetuto k volte (le pieghe), con ciascuno dei sottocampioni utilizzati una sola volta come dati di convalida. I k risultati delle pieghe, allora possono essere mediati (o in altro modo combinato) per produrre una singola stima

Così modelli K sono costruiti e quella finale è la media di quelli. Nella guida di Weka è scritto che ogni modello è sempre costruito utilizzando TUTTI i set di dati. Quindi, come funziona la convalida incrociata in Weka? Il modello è stato creato da tutti i dati e la "convalida incrociata" significa che viene creato k fold, quindi ogni piega viene valutata su di essa e il risultato finale dell'output è semplicemente il risultato medio delle pieghe?

risposta

44

Quindi, ecco lo scenario nuovo: si dispone di 100 dati etichettati

allenamento impostato

  • weka vorranno 100 dati etichettati
  • essa si applica un algoritmo per costruire un classificatore da questi 100 dati
  • si applica tale classificatore ANCORA su questi 100 dati
  • it vi fornisce le prestazioni del classificatore (applicata agli stessi 100 dati da cui era sviluppato)

Uso 10 CV volte

  • Weka prende 100 dati etichettati

  • produce 10 set di dimensioni uguali. Ogni set è diviso in due gruppi: 90 dati etichettati vengono utilizzati per l'allenamento e 10 dati etichettati vengono utilizzati per il test.

  • produce un classificatore con un algoritmo di 90 dati etichettati e lo applica ai 10 dati di test per il set 1.

  • fa la stessa cosa per set 2 a 10 e produce più 9 classificatori

  • la media è il rendimento dei 10 classificatori prodotte da 10 dimensioni (90 formazione e 10 prove) pari stabilisce

Fatemi sapere se questo risponde alla vostra domanda.

+1

Ho 2 domande: 1) Se è come hai detto perché nella Guida di Weka è scritto che in ogni caso (set di allenamento e CV) il modello è sempre costruito da tutti i dati? Come hai scritto in CV il modello finale è una media di altri 10 modelli, giusto?2) Se "Il modello che ottieni a questo punto è la media di tutti i 10 modelli" come è possibile che usando il set di allenamento e il CV come validazione ho ottenuto gli stessi modelli? (Spero che queste domande non appaiano troppo sciocche!) –

+0

1. Questo significa che per ogni piega viene considerato il set di dati completo. Ci sono alcune varianti di questo CV standard in cui parte dei set di dati sono tenuti fuori per un test separato. 2. Cosa intendi esattamente con "ottenere gli stessi modelli"? –

+0

Per "stessi modelli" intendo che in uscita ho esattamente lo stesso albero –

1

Weka segue la convalida incrociata k-fold convenzionale che hai menzionato qui. Avete il set completo di dati, quindi dividetelo in k nos di set uguali (k1, k2, ..., k10 per esempio per 10 volte CV) senza sovrapposizioni. Quindi, alla prima esecuzione, prendi da k1 a k9 come set di allenamento e sviluppa un modello. Usa quel modello su K10 per ottenere le prestazioni. Poi arriva k1 a k8 e k10 come set di allenamento. Sviluppa un modello da loro e applicalo a k9 per ottenere le prestazioni. In questo modo, usa tutte le pieghe in cui ogni piega al massimo 1 volta viene usata come set di prova.

Quindi Weka media le prestazioni e le presenta nel riquadro di output.

+2

Ok ma in questo modo come viene costruito il modello finale? È una media dei 10 modelli costruiti su CV? Se sì, cosa significa: è sempre costruito utilizzando TUTTI i set di dati? –

+0

Se si seleziona la convalida incrociata di 10 volte nella scheda di classificazione di Weka explorer, il modello che si ottiene è quello che si ottiene con 10 9-1 divisioni. Non avrai 10 singoli modelli ma 1 singolo modello. E sì, lo si ottiene da Weka (non particolarmente da Weka, è applicabile alla teoria generale di 10 volte CV) mentre scorre attraverso l'intero set di dati. –

+0

Mi dispiace ma non riesco a capire del tutto ... Allora, qual è la differenza tra scegliere "Usa training set" e "Cross Validation" in termini di come il modello? Il modello finale è lo stesso! –

5

Penso di aver capito. Prendi (per esempio) weka.classifiers.rules.OneR -x 10 -d outmodel.xxx. Questo fa due cose:

  1. Crea un modello basato sul set di dati completo. Questo è il modello scritto in outmodel.xxx. Questo modello è non utilizzato come parte della convalida incrociata.
  2. Quindi viene eseguita la convalida incrociata. la convalida incrociata comporta la creazione (in questo caso) di 10 nuovi modelli con la formazione e il test su segmenti di dati come è stato descritto. La chiave è che i modelli utilizzati nella convalida incrociata sono temporanei e utilizzati solo per generare statistiche. Non sono equivalenti o utilizzati per il modello che viene fornito all'utente.
+1

Ma qual è lo scopo della convalida incrociata? Se il modello finale fornito all'utente si basa su un set di dati completo, perché è necessaria la convalida incrociata? Penso che la validazione incrociata sia quella di trovare il modello migliore – lenhhoxung

6

avrei risposto in un commento, ma la mia reputazione ancora non mi permetterà di:

Oltre alla risposta accettato di Rushdi, voglio sottolineare che i modelli che vengono creati per la convalida incrociata i set di piegature vengono tutti scartati dopo aver eseguito e calcolato la media delle misurazioni delle prestazioni.

Il modello risultante è sempre basato sul set di allenamento completo, indipendentemente dalle opzioni di test. Poiché M-T-A chiedeva un aggiornamento del link citato, qui è: http://list.waikato.ac.nz/pipermail/wekalist/2009-December/046633.html. È una risposta di uno dei manutentori WEKA, sottolineando proprio ciò che ho scritto.

+0

Sai se esiste un modo per vedere i modelli creati per la convalida incrociata? – drevicko

+0

sì: vedi i messaggi sulla mailing list weka [qui] (http://list.waikato.ac.nz/pipermail/wekalist/2015-July/064572.html) e [qui] (http: //list.waikato .ac.nz/pipermail/wekalist/2011-November/053965.html) – drevicko

+2

Ma qual è lo scopo della convalida incrociata? Se il modello finale fornito all'utente si basa su un set di dati completo, perché è necessaria la convalida incrociata? Penso che la validazione incrociata sia quella di trovare il miglior modello – lenhhoxung