Foresta casuale in un'impostazione di Big Data


8

Ho un set di dati con 5.818.446 righe e 51 colonne, di cui 50 sono predittori. La mia risposta è quantitativa, quindi sono interessato a un modello di regressione. Sto provando ad adattare una foresta casuale ai miei dati usando il pacchetto caret. Tuttavia, non ho abbastanza RAM per farlo.

Ho cercato soluzioni al mio problema. Oltre ad avere un computer più potente, sembra che io possa usare il bagging per risolvere il mio problema. Pertanto, la mia idea è la seguente:

  1. Crea sia partizioni di treno che di prova dal mio set di dati originale

  2. Campione con sostituzione di una piccola parte del mio set di dati del treno in R (diciamo l'1% di esso, ovvero 58.185 linee)

  3. Adatta una foresta casuale a questa piccola parte di dati

  4. Salva il risultato del modello

  5. Ripeti i passaggi da 2 a 4 1.000 volte

  6. Combina questi 1.000 modelli ottenuti dai passaggi 2-5

Tuttavia, la foresta casuale stessa utilizza il bagging per adattare il modello ai dati e quindi non sono sicuro che il mio approccio sia corretto. Pertanto, ho alcune domande per te:

i) Il mio approccio è corretto? Voglio dire, dal momento che non ho abbastanza RAM nel mio sistema, è corretto adattare molti diversi modelli di foresta casuali a diversi blocchi di dati e combinarli dopo?

ii) Supponendo che il mio approccio sia corretto, l'1% dei dati è una buona regola empirica per la dimensione del mio campione? Anche con l'1% dei dati, ho ancora .np

iii) Supponendo che il mio approccio sia corretto, esiste una serie di repliche per i modelli che dovrei usare? Ho pensato a 1.000 per motivi.


Dato che l'insacco è un metodo per generare ogni albero decisionale in una foresta casuale, che ne dici di fare un singolo DT per 1% e poi combinare gli alberi ? Voila, una foresta casuale fatta in casa. Quindi puoi costruire 1000 o più alberi e fare combinazioni casuali di alberi per vedere cosa funziona meglio sui tuoi dati di test; anche se poi ti stai adattando ai tuoi dati di test, quindi forse prendili tutti e corri con loro.
Engineero,

Ooo! Oppure combinali tutti con uno strato di uscita completamente collegato e poi allena tale strato con la l1regolarizzazione, che in genere porta i pesi dei componenti insignificanti a quasi zero, in modo da poter vedere ispezionando quali alberi dovresti tenere.
Engineero,

@Engineero Il metodo che descrivi è generalmente noto come "lavelli da cucina casuali": adatta un gran numero di discenti deboli per formare una rappresentazione di base delle caratteristiche originali (anche blocchi di decisione) e quindi ponderare i nodi terminali, forse con una certa regolarizzazione dei pesi dei nodi . people.eecs.berkeley.edu/~brecht/kitchensinks.html
Sycorax dice

1 / Non ho alcuna conoscenza definitiva, quindi non sto postando una risposta. Ma questo metodo dovrebbe andare bene. Si noti che il numero di campioni in ciascun "batch" implica un limite superiore per la profondità di ciascun albero, e quindi la capacità di ciascun albero di adattare i dati, quindi si potrebbe considerare di sintonizzare oltre 0,5%, 1%, 2%, 4 % (nozionale) ... dei dati durante la generazione di ciascun albero. Il numero di alberi da utilizzare è puramente una questione di in quale momento "perdita di plateau" del modello; questa scelta non ha bisogno di essere sintonizzata in quanto la perdita attesa è una funzione decrescente monotona di per le regole di punteggio corrette continue. T
Sycorax dice di ripristinare Monica

2 / Per maggiori informazioni sul numero di alberi, vedi la mia risposta qui: stats.stackexchange.com/questions/348245/…
Sycorax dice

Risposte:


3

Questo non affronta le tue domande specifiche, ma la motivazione dietro di esse. Il bigRFpacchetto potrebbe risolvere il tuo problema:

Questa è un'implementazione R degli algoritmi di Random Forest di Leo Breiman e Adele Cutler per la classificazione e la regressione, con ottimizzazioni per le prestazioni e per la gestione di set di dati che sono troppo grandi per essere elaborati in memoria.

Anche:

Per set di dati di grandi dimensioni, i dati di addestramento, i calcoli intermedi e alcuni output (ad es. Matrici di prossimità) possono essere memorizzati nella cache del disco utilizzando oggetti "big.matrix". Ciò consente alle foreste casuali di essere costruite su set di dati abbastanza grandi senza colpire i limiti di RAM, il che causerà uno scambio eccessivo di memoria virtuale da parte del sistema operativo.

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.