2012-04-05 14 views
5

Ho un set di dati di grandi dimensioni in R (1M + righe per 6 colonne) che desidero utilizzare per addestrare una foresta casuale (utilizzando il pacchetto randomForest) ai fini della regressione. Sfortunatamente, ricevo un errore Error in matrix(0, n, n) : too many elements specified quando provo a fare tutto in una volta e non è in grado di allocare abbastanza memoria tipi di errori durante l'esecuzione su un sottoinsieme di dati - fino a 10.000 circa osservazioni.Foresta casuale su un grande set di dati

Visto che non c'è possibilità di aggiungere più RAM sulla mia macchina e le foreste casuali sono molto adatte per il tipo di processo che sto cercando di modellare, mi piacerebbe davvero farlo funzionare.

Qualsiasi suggerimento o soluzione alternativa sono molto apprezzati.

+0

Eseguire con 'proximity = FALSE' come [joran] (http://stackoverflow.com/users/324364/joran) suggerito e dirci se funziona. – smci

+0

Un modo relativamente semplice per risolvere il problema potrebbe essere quello di impostare la matrice di input. Tutti i dati probabilmente non ti daranno un modello migliore di uno con un sottoinsieme di dimensioni 10K x 10K. –

+1

Hai dato un'occhiata alla libreria (h2o)? Funziona bene per problemi molto grandi, vedi http://www.r-bloggers.com/benchmarking-random-forest-implementations/ –

risposta

11

Probabilmente stai chiedendo randomForest per creare la matrice di prossimità per i dati, che se ci pensi, sarà follemente grande: 1 milione x 1 milione. Una matrice di queste dimensioni sarebbe necessaria indipendentemente dalla grandezza impostata sampsize. In effetti, semplicemente googling il messaggio di errore sembra confermare questo, come l'autore del pacchetto states che l'unico posto nell'intero codice sorgente in cui è stato trovato consiste nel calcolare la matrice di prossimità.

Ma è difficile aiutare di più, dato che non hai fornito dettagli sul codice effettivo che stai utilizzando.

+0

. Sono arrivato alla stessa conclusione ma non sembra capire perché è necessario e se c'è un modo di addestrare la RF senza il bisogno di farlo. – ktdrv

+1

Non sono sicuro di cosa intendi. Impostazione della prossimità = FALSE impedirà il calcolo delle distanze. – joran

+0

Ho appena fatto un test ed è davvero la foresta stessa che è enorme. Nel mio caso specifico, 'keep.forest = F' ha come risultato un risultato di 14MB, mentre' proximity = FALSE' non ha fatto alcuna differenza né in entrata né in uscita: il risultato è stato di 232 MB. – Wayne

1

Vorrei raccomandare lo bigrfpackage in R, poiché è progettato per il tipo di problema che si è verificato (vale a dire, mancanza di RAM sufficiente). Sfortunatamente, al momento, bigrf è stato rimosso da CRAN, ma è ancora disponibile negli archivi (vedi risposta: Can't install bigrf package).

Un altro approccio potrebbe riguardare la combinazione di RF in base a dati di allenamento diversi, ma i risultati potrebbero essere considerati privi di senso (vedere la risposta: Combining random forests built with different training sets in R per i dettagli). La modifica menzionata in quest'ultimo post ha funzionato per me, ma le RF combinate che ho eseguito erano talvolta migliori, e talvolta peggiori rispetto all'utilizzo di una sola RF (YMMV).

+0

Potrei essere frainteso, ma credo che il pacchetto 'bigrf' dovrebbe gestire regressioni. http://finzi.psych.upenn.edu/library/bigrf/html/bigrf-package.html – neanderslob

+0

hai ragione: ho letto male il loro pacchetto astratto. Modifica la mia risposta originale. Grazie! – Prophet60091

Problemi correlati