Scelta di K nella validazione incrociata di K-fold


136

Sto usando il fold convalida incrociata un paio di volte per valutare le prestazioni di alcuni algoritmi di apprendimento, ma sono sempre stato perplesso su come dovrei scegliere il valore di .KKK

Ho spesso visto e usato un valore di , ma questo mi sembra del tutto arbitrario, e ora uso solo per abitudine invece di pensarci su. A me sembra che tu stia ottenendo una granularità migliore mentre migliori il valore di , quindi idealmente dovresti rendere la tua molto grande, ma c'è anche il rischio di essere di parte.10 K KK=1010KK

Mi piacerebbe sapere da cosa dovrebbe dipendere il valore di e come dovrei pensarci quando valuto il mio algoritmo. Cambia qualcosa se uso o meno la versione stratificata della convalida incrociata?K


Risposte:


69

La scelta di è alquanto arbitraria. Ecco come decido :kk=10k

  • prima di tutto, al fine di ridurre la varianza del risultato del CV, puoi e dovresti ripetere / iterare il CV con nuove divisioni casuali.
    Ciò rende l'argomento di elevato tempo di calcolo maggiore = => in gran parte irrilevante, poiché si desidera comunque calcolare molti modelli. Tendo a pensare principalmente al numero totale di modelli calcolati (in analogia al bootstrap). Quindi potrei decidere per CV 100 x 10 volte o CV 200 x 5 volte.k

  • @ogrisel ha già spiegato che solitamente grandi dimensioni significa meno distorsioni (pessimistiche). (Alcune eccezioni sono note in particolare per , vale a dire lasciare un fuori).k = nkk=n

  • Se possibile, uso una che è un divisore della dimensione del campione, o la dimensione dei gruppi nel campione che dovrebbero essere stratificati.k

  • troppo grande significa che è possibile solo un numero basso di combinazioni di campioni, limitando così il numero di iterazioni diverse.k

    • Per un abbandono: sono possibili combinazioni di modello / campione differenti. Le iterazioni non hanno alcun senso.(n1)=n=k
    • Ad esempio e : exist esistono diverse combinazioni di modelli / test. Puoi considerare di esaminare tutte le possibili combinazioni qui come 19 iterazioni di -fold CV o un totale di 190 modelli non sono molto.n=20k=10(n=202)=190=19kk
  • Questi pensieri hanno più peso con campioni di piccole dimensioni. Con più campioni disponibili, non ha molta importanza. Il possibile numero di combinazioni diventa presto abbastanza grande, quindi le 100 dicerie di CV di 10 volte non corrono il rischio di essere duplicate. Inoltre, un numero maggiore di campioni di training generalmente indica una parte più piatta della curva di apprendimento, quindi la differenza tra i modelli surrogati e il modello "reale" addestrato su tutti i campioni diventa trascurabile.kn


6
(+1) per l'elaborazione, ma (-1) per i conteggi delle ripetizioni del CV. È vero che il rischio di creare duplicati esatti (guardando gli ID delle osservazioni) è piccolo (dati sufficienti ecc.), Ma il rischio di creare duplicati di strutture / dati è molto elevato. Non vorrei ripetere un CV più di 10 volte, non importa quale sia k ... solo per evitare la sottovalutazione della varianza.
Steffen,

3
@steffen, non è quello che già ha sottolineato Ogrisel: che i modelli (surrogati) non sono realmente indipendenti? Sono completamente d'accordo che questo è il caso. In realtà, provo a tenerne conto interpretando i risultati in termini di stabilità dei modelli (surrogati). scambiando "alcuni" campioni (che non volevo elaborare qui - ma vedi ad esempio stats.stackexchange.com/a/26548/4598 ). E non calcolo l'errore standard ma piuttosto riporto ad esempio la mediana e il al percentile degli errori osservati durante le iterazioni. Pubblicherò una domanda separata a riguardo. 5th95th
cbeleites,

2
Vedo. Concordo sul fatto che l'approccio è valido per stimare la stabilità del surrogato. Quello che avevo in mente era il test statistico di follow-up per decidere se un modello superasse un altro. Ripetere un modo cv troppo spesso aumenta in modo imprevedibile la possibilità di un errore alfa. Quindi stavo confondendo l'interno con la convalida esterna (come dikran l'ha messo qui ).
Steffen,

2
@cbeleites: sono d'accordo con te. La varianza dovuta alla dimensione del campione limitata di solito domina l'incertezza del modello.
jpcgandre,

2
@jpcgandre: almeno per errori di classificazione come sensibilità, specificità ecc., è possibile calcolare l'incertezza dovuta al numero totale di casi testati. Mentre è vero che questa è solo una parte della varianza totale, almeno nelle situazioni che incontro nel mio lavoro, questa incertezza è spesso così grande che è sufficiente anche una stima approssimativa per chiarire che le conclusioni sono fortemente limitate. E questa limitazione rimane, non andrà via usando 50x 8 volte o 80x 5 volte anziché 40x 10 volte la convalida incrociata.
cbeleites,

37

Una K maggiore indica una minore propensione a sopravvalutare il vero errore atteso (poiché le pieghe dell'allenamento saranno più vicine al set di dati totale) ma una varianza più elevata e un tempo di esecuzione più elevato (man mano che ci si avvicina al caso limite: CV "Lascia un singolo").

Se la pendenza della curva di apprendimento è sufficientemente piatta su training_size = 90% del set di dati totale, la distorsione può essere ignorata e K = 10 è ragionevole.

Inoltre, una K più alta fornisce più campioni per stimare un intervallo di confidenza più accurato sulla stima (utilizzando un errore standard parametrico assumendo la normalità della distribuzione degli errori del test CV o un CI bootstrap non parametrico che fa semplicemente l'assunto iid che in realtà non è molto vero poiché le pieghe del CV non sono indipendenti l'una dall'altra).

Modifica: sottostimando => sovrastimando il vero errore previsto

Modifica: la parte di questa risposta su varianze più elevate per K o LOOCV di grandi dimensioni è probabilmente errata (non sempre vera). Maggiori dettagli con simulazioni in questa risposta: parzialità e varianza nella validazione incrociata tra K-fold e one-out (grazie a Xavier Bourret Sicotte per questo lavoro).


1
puoi spiegare qualcosa in più sulla varianza più alta con grande ? Come prima approssimazione avrei detto che la varianza totale del risultato CV (= qualche tipo di errore calcolata da tutti gli campioni testati da uno qualsiasi dei modelli surrogati ) = varianza dovuta al test di solo campioni + varianza dovuta a differenze tra i modelli (instabilità). Cosa mi sto perdendo? knknk
cbeleites

6
Per varianza intendo la varianza dell'errore di test atteso stimato ottenuto prendendo la mediana o la media degli errori di piega CV rispetto alla "vera distribuzione", non attraverso le pieghe CV. Quando k è grande sei più vicino al LOO-CV che dipende molto dal particolare set di addestramento che hai a portata di mano: se il numero di campioni è piccolo, può non essere così rappresentativo della vera distribuzione, quindi la varianza. Quando k è grande, k-fold CV può simulare campioni così arbitrari del set di addestramento.
Ogrisel,

8
In aggiunta: Kohavi studia il bias-varianza-compromesso nella validazione nel capitolo 3 della sua tesi di dottorato . Lo consiglio vivamente.
Steffen,

3
+1, tra cui "K più grande significa varianza più elevata", a quanto ho capito, con grande , tutti i set di allenamento avranno grandi dati in comune, quindi i modelli addestrati saranno in qualche modo correlati, con conseguenti errori di test correlati , quindi la media dell'errore di test avrà una varianza maggiore, giusto? KKKK
avocado,

Sì, penso che questa sia un'intuizione corretta.
Ogrisel,

0

Non so come Kinfluenzi l'accuratezza e la generalizzazione, e ciò può dipendere dall'algoritmo di apprendimento, ma influisce sicuramente sulla complessità computazionale quasi linearmente (asintoticamente, linearmente) per gli algoritmi di allenamento con complessità algoritmica lineare nel numero di istanze di allenamento. Il tempo di calcolo per l'allenamento aumenta i K-1tempi se il tempo di allenamento è lineare nel numero di istanze di allenamento. Quindi, per piccoli gruppi di addestramento, prenderei in considerazione gli aspetti di accuratezza e generalizzazione, soprattutto dato che dobbiamo ottenere il massimo da un numero limitato di istanze di addestramento.

Tuttavia, per set di allenamento di grandi dimensioni e algoritmi di apprendimento con elevata crescita della complessità computazionale asintotica nel numero di istanze di allenamento (almeno lineare), seleziono solo in K=2modo che non vi sia alcun aumento del tempo di calcolo per un algoritmo di allenamento con complessità asintotica lineare nel numero delle istanze di addestramento.


-6

Soluzione:

K = N/N*0.30
  • N = Dimensione del set di dati
  • K = Piega

Commento: possiamo anche scegliere il 20% anziché il 30%, a seconda delle dimensioni che si desidera scegliere come set di test.

Esempio:

Se dimensione set di dati: N = 1500; K = 1500/1500 * 0,30 = 3,33; Possiamo scegliere il valore K come 3 o 4

Nota:

Un valore K elevato nel lasciare una fuori convalida incrociata comporterebbe un eccesso di adattamento. Un valore K piccolo nel lasciare una fuori convalida incrociata comporterebbe un sottoadattamento.

L'approccio potrebbe essere ingenuo, ma sarebbe comunque meglio che scegliere k = 10 per set di dati di dimensioni diverse.


4
(-1)quindi stai suggerendo di usare sempre k = 3 o 4 indipendentemente dalla dimensione del campione - questo è IMHO non sostanzialmente diverso dall'uso k = 10 ugualmente indipendentemente dalla dimensione del campione. NN0.3=10.33.33=const.
cbeleites,

K = N / N * 0,3 = 10/3 che è una costante. Quindi non è logico usare quel valore per ogni condizione.
Kamal Thapa,
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.