2012-10-07 8 views
36

Sto per eseguire alcune analisi dei file di log in R (a meno che non riesca a farlo in R) e capisco che i miei dati devono essere inseriti nella RAM (a meno che non utilizzi qualche tipo di correzione come un'interfaccia per un keyval negozio, forse?). Quindi mi chiedo come anticipare quanto tempo i miei dati occuperanno nella RAM e se ne avrò abbastanza. So quanta RAM ho (non una grande quantità - 3 GB sotto XP), e so quante file e colonne il mio file di log finirà per e quali tipi di dati dovrebbero essere le voci di rubrica (che presumibilmente devo controllare come si legge).Come posso sapere quando il set di dati in R sta per essere troppo grande?

Come si inserisce tutto questo in una decisione go/nogo per eseguire l'analisi in R? (Presumibilmente R deve essere in grado di avere un po 'di RAM per fare operazioni, oltre a contenere i dati!) Il mio output richiesto immediato è un insieme di semplici statistiche riassuntive, frequenze, contingenze, ecc. E quindi potrei probabilmente scrivere una sorta di parser/tabulator che mi darà l'output di cui ho bisogno a breve termine, ma voglio anche giocare con molti approcci diversi a questi dati come passo successivo, quindi sto valutando la fattibilità dell'uso di R.

Ho visto un sacco di consigli utili sui set di dati di grandi dimensioni in R qui, che ho letto e rileggerò, ma per ora vorrei capire meglio come capire se dovrei (a) andarci affatto, (b) andare lì ma aspettarsi dover fare qualcosa in più per renderlo gestibile, o (c) scappare prima che sia troppo tardi e fare qualcosa in qualche altra lingua/ambiente (suggerimenti benvenuti ...!). Grazie!

risposta

41

R è adatto per grandi insiemi di dati, sia utilizzando soluzioni out-of-the-box, come bigmemory o ff package (soprattutto read.csv.ffdf) o l'elaborazione della tua roba in blocchi utilizzando i propri script. In quasi tutti i casi una piccola programmazione rende possibile l'elaborazione di set di dati di grandi dimensioni (>> memoria, per esempio 100 Gb). Fare questo tipo di programmazione richiede un po 'di tempo per imparare (non conosco il tuo livello), ma ti rende davvero flessibile. Se questa è la tua tazza di tè, o se devi correre dipende dal tempo che vuoi investire nell'apprendimento di queste abilità. Ma una volta che li hai, renderanno la tua vita come analista di dati molto più facile.

Per quanto riguarda l'analisi dei file di log, so che le pagine di statistiche generate da Call of Duty 4 (gioco multiplayer per computer) funzionano analizzando il file di registro in modo iterativo in un database e quindi recuperando le statistiche per utente dal database. Vedere here per un esempio dell'interfaccia. L'approccio iterativo (in blocchi) significa che la dimensione del file di log è (quasi) illimitata. Tuttavia, ottenere buone prestazioni non è banale.

Un sacco di cose che puoi fare in R, puoi farlo in Python o Matlab, anche in C++ o in Fortran. Ma solo se questo strumento ha il supporto immediato per quello che vuoi, potrei vedere un netto vantaggio di quello strumento su R. Per elaborare grandi dati vedi the HPC Task view. Vedi anche una precedente risposta di min per reading a very large text file in chunks. Altri link correlati che potrebbe essere interessante per voi:

Per quanto riguarda la scelta di R o qualche altro strumento, direi se è abbastanza buono per Google è abbastanza buono per me;).

+1

Consigli molto utili in merito ai problemi coinvolti, grazie Paul. Re il dimensionamento del lavoro q Ho ottenuto una risposta molto specifica su quora, che è la regola empirica che il mem needed = datasetsize * 4 o 5: [link] (http://www.quora.com/R-software/How -can-I-tell-when-my-dataset-in-R-sta-andando-essere-troppo-grande) –

+5

La pubblicazione incrociata del problema non è incoraggiata ... –

+0

Inoltre, se questo risponde alla tua domanda è consuetudine spuntare il segno di spunta verde come segno che questa domanda è stata interrotta. –

Problemi correlati