2012-10-07 24 views
36

Voy a realizar algunos análisis de archivos de registro en R (a menos que no pueda hacerlo en R), y entiendo que mis datos deben caber en la RAM (a menos que use algún tipo de solución como una interfaz para un keyval tienda, tal vez?). Así que me pregunto cómo saber de antemano cuánto espacio ocuparán mis datos en la RAM, y si tendré suficiente. Sé cuánto RAM tengo (no una gran cantidad, 3 GB en XP), y sé cuántas filas y cols terminará mi archivo de registro y qué tipos de datos deben ser las entradas de col (que presumiblemente debo verificar como se lee).¿Cómo puedo saber cuándo mi conjunto de datos en R va a ser demasiado grande?

¿Cómo unir esto en una decisión de go/nogo para llevar a cabo el análisis en R? (Presumiblemente, R necesita poder tener algo de RAM para hacer operaciones, ¡y también para mantener los datos!) Mi salida requerida inmediata es un conjunto de simples estadísticas de resumen, frecuencias, contingencias, etc., y entonces probablemente podría escribir algún tipo de analizador/tabulador que me dará la salida que necesito a corto plazo, pero también quiero jugar con muchos enfoques diferentes de estos datos como paso siguiente, entonces estoy viendo la viabilidad de usar R.

He visto muchos consejos útiles sobre grandes conjuntos de datos en R aquí, que he leído y volveré a leer, pero por ahora me gustaría entender mejor cómo debo saber si (a) debo ir allí, (b) ir allí, pero esperar tener que hacer algunas cosas adicionales para hacerlo manejable, o (c) escapar antes de que sea demasiado tarde y hacer algo en otro idioma/entorno (¡sugerencias bienvenidas ...!). ¡Gracias!

Respuesta

41

R es muy adecuado para grandes conjuntos de datos, ya sea usando soluciones fuera de la caja como bigmemory o la ff package (especialmente read.csv.ffdf) o procesar su materia en trozos utilizando sus propios scripts. En casi todos los casos, una pequeña programación hace que el procesamiento de grandes conjuntos de datos (>> memoria, digamos 100 Gb) sea muy posible. Hacer este tipo de programación le lleva algo de tiempo aprender (no sé cuál es su nivel), pero lo hace realmente flexible. Si esta es su taza de té, o si necesita correr depende del tiempo que desea invertir en el aprendizaje de estas habilidades. Pero una vez que los tenga, harán que su vida como analista de datos sea mucho más fácil.

Con respecto al análisis de archivos de registro, sé que las páginas estadísticas generadas por Call of Duty 4 (juego multijugador por computadora) funcionan analizando el archivo de registro iterativamente en una base de datos y luego recuperando las estadísticas por usuario de la base de datos. Consulte here para ver un ejemplo de la interfaz. El enfoque iterativo (en fragmentos) significa que el tamaño del archivo de registro es (casi) ilimitado. Sin embargo, obtener un buen rendimiento no es trivial.

Muchas de las cosas que puedes hacer en R, puedes hacerlo en Python o Matlab, incluso en C++ o Fortran. Pero solo si esa herramienta tiene soporte listo para usar para lo que desea, podría ver una clara ventaja de esa herramienta sobre R. Para procesar datos de gran tamaño, vea the HPC Task view. Consulte también una respuesta anterior de min para reading a very large text file in chunks. Otros enlaces relacionados que pueden ser interesantes para usted:

En lo que respecta a la elección de R o alguna otra herramienta, yo diría que si es lo suficientemente bueno para Google es lo suficientemente bueno para mí;).

+1

Consejo muy útil sobre los problemas involucrados, gracias Paul. Re el tamaño del trabajo q Obtuve una respuesta muy específica en quora, que es la regla general que los mem necesitaron = datasetsize * 4 o 5: [link] (http://www.quora.com/R-software/How -can-I-tell-when-my-dataset-in-R-is-going-to-be-too-large) –

+5

No se recomienda hacer una publicación cruzada de su problema ... –

+0

Además, si esto responde a su pregunta es costumbre marcar la marca de verificación verde como una señal de que se ha agregado esta pregunta. –

Cuestiones relacionadas