Perché la funzione bootstrap di scikit-learn ricampiona il set di test?


15

Quando ho utilizzato il bootstrap per la valutazione del modello, ho sempre pensato che i campioni out-of-bag fossero usati direttamente come set di test. Tuttavia, questo non sembra essere il caso dell'approccio scikit-learn deprecato , che sembra costruire il set di test dal disegno con la sostituzione dal sottoinsieme di dati out-of-bag. Qual è il ragionamento statistico alla base di questo? Esistono scenari specifici in cui questa tecnica è migliore della semplice valutazione del campione out-of-bag o viceversa?Bootstrap


convalida incrociata? ricampionamento?
EngrStudent,

Se ti riferisci al tag, questo non è stato aggiunto da me. Sto eseguendo il bootstrap in alternativa al CV, in realtà.
gibberfish

Penso che tu abbia frainteso. Nella convalida incrociata ripeteranno il processo più volte su un sottoinsieme dei dati e esamineranno la variazione nei risultati o nei parametri del modello. In tal caso, la stessa variazione dei parametri informa sulla qualità dell'adattamento e non necessariamente sull'errore OOB. Non ho familiarità con la libreria particolare, quindi ho appena lasciato un commento con l'idea.
EngrStudent,

Risposte:


3

I campioni Bootstrap vengono utilizzati per valutare le prestazioni dell'algoritmo mediante numerose iterazioni. Nel fare ciò, viene valutata la prestazione su set modificati casualmente.

Al contrario, quando si esegue ad esempio 10 Fold Cross Validation, si eseguono solo 10 iterazioni su diversi set di dati di treni e test.

Ora, quando la dimensione del campione è piccola, diciamo e il numero di iterazioni di bootstrap è elevato, scegliamo e non ricampionerai i tuoi dati di test come fai con il tuo set di dati del treno, avrai situazioni in cui il tuo l'algoritmo vede lo stesso test o molto simile più di una volta. Una situazione che originariamente volevi evitare usando bootstrap.n=20i=10,000

Il link che pubblichi non è attivo, quindi ho aggiunto la descrizione della funzione nella versione corrente (0.14) di sklearn

Descrizione del metodo

Campionamento casuale con iteratore di convalida incrociata sostitutivo Fornisce indici treno / test per dividere i dati nei set di test del treno durante il ricampionamento dei tempi di input n_iter: ogni volta che viene eseguita una nuova suddivisione casuale dei dati e quindi vengono prelevati campioni (con sostituzione) su ciascun lato della divisione per costruire i set di addestramento e test. Nota: contrariamente ad altre strategie di convalida incrociata, il bootstrap permetterà ad alcuni campioni di presentarsi più volte in ogni divisione. Tuttavia, un campione che si verifica nella divisione del treno non si verificherà mai nella divisione di prova e viceversa. Se vuoi che ogni campione si verifichi al massimo una volta, probabilmente dovresti usare invece la validazione incrociata di ShuffleSplit.


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.