19 votos

Opciones de análisis de datos fuera de base

He estado usando SAS profesionalmente por cerca de 5 años. Lo he instalado en mi portátil y con frecuencia tienen para analizar conjuntos de datos con 1,000-2,000 variables y cientos de miles de observaciones.

He estado buscando alternativas a SAS que me permiten, para llevar a cabo los análisis de tamaño similar conjuntos de datos. Tengo curiosidad de saber lo que otras personas utilizan para situaciones como esta. Esto ciertamente no es "Big Data" en la forma que se utiliza hoy en día. Ni son mis conjuntos de datos lo suficientemente pequeño como para mantener en la memoria. Necesito una solución que se puede aplicar algoritmos a los datos almacenados en un disco duro. Estas son las cosas que he investigado fue en vano:

  1. R - BigMemory puede crear matrices almacenadas fuera de la memoria, pero los elementos tienen que ser del mismo modo. Yo trabajo con datos que es casi una división 50/50 entre el carácter y la numérica. El FF paquete se acerca a lo que necesito, pero no acabo de entender que los procedimientos sean compatibles con ella. Creo que el apoyo es algo limitado.
  2. Los Pandas - yo estaba muy emocionado acerca de un Python alternativa a R. sin Embargo, también tiene que contener todos los datos en la memoria.
  3. La revolución R - Este muestra un poco de la promesa. Yo tengo una copia en mi ordenador de casa (gratis si usted se inscribe para Kaggle) y todavía tienen que probar como alternativa viable a la SAS. Comentarios sobre la Revolución R como SAS alternativas son muy apreciadas.

Gracias

ACTUALIZACIÓN 1

La edición de añadir que estoy buscando en la vida real, las soluciones prácticas que las personas han utilizado con éxito. Para la mayor parte, SAS me permite chug a través de archivos de gran tamaño sin tener que preocuparse un poco acerca de las restricciones de memoria. Sin embargo SAS se implementa, descubrieron cómo hacer que la memoria de gestión transparente para el usuario. Pero, es con gran tristeza que he utilizado SAS para mi trabajo (me tienen para) y el AMOR de una alternativa de software libre que me permite trabajar en "grandes" de datos sin tener que pensar demasiado acerca de la ubicación de los datos en un momento específico (en memoria o en disco).

La más cercana de las cosas que me he encontrado son R FF paquete y algo en el horizonte para Python llamado Blaze. Y, sin embargo, estos problemas han existido por muchos años, así que lo que analistas han estado haciendo en el medio tiempo? Cómo están el manejo de estos mismos problemas con los límites de la Memoria? La mayoría de las soluciones que se ofrecen parecen ser:

  • Obtener más RAM ... Esta no es una buena solución, de la omi. Es fácil encontrar un conjunto de datos que puede exceder de RAM pero todavía caben en una unidad de disco duro. Además, el flujo de trabajo tiene que dar cabida a todas las estructuras que se crean durante el análisis exploratorio de datos.
  • Un subconjunto de datos -- Esto es bueno para la exploración, pero no para la finalización de los resultados y presentación de informes. Finalmente, los procesos se desarrollan en un subconjunto tendrá que ser aplicada a la totalidad del conjunto de datos (en mi caso, de todos modos).
  • Pedazo a través de los datos-Esto es lo que me gustaría saber más acerca de la gente que realmente se implemente este flujo de trabajo. ¿Cómo se hace? Con qué herramientas? Se puede hacer de una manera que sea transparente para el usuario? (es decir, a crear algunos de los datos contenidos en el disco de la estructura y el marco de trabajo se ocupa de la fragmentación bajo el capó).

3voto

l1feh4ck3r Puntos 81

si estás máximo de 500.000 registros x 2,000 variables, me gustaría pasar un poco más de dinero en la memoria RAM de su computadora portátil y hacer con ella. si usted tiene 16GB, usted probablemente puede leer el conjunto de datos que usted describe en R directamente. y en ese punto, usted será capaz de hacer mucho más - y muy rápidamente.. pero dicen que no es una opción, así que:

mira SQL basada en paquetes de R. estos le permiten conectarse a bases de datos externas y de acceso a las tablas a través de SQL. desde SQL es bastante universal (y dado que R es open-source), el código no se ha perdido, si cambia de trabajo o perder el acceso a SAS. la más sencilla base de datos externa para configurar es RSQLite pero por lejos el más rápido es de MonetDB.R (pruebas de velocidad)

probablemente hay un par de buenas soluciones al problema planteado, mi conjetura es que casi todos ellos implican R ;)

2voto

jpmuc Puntos 4817

Tal vez no es tanto acerca de las aplicaciones/problemas que usted está apuntando, y sus características, pero más acerca de los algoritmos y variantes que usted está usando. Más concretamente, en el fin de manejar grandes volúmenes de datos, muchas variantes basadas en la estocástico de gradiente de la pendiente de algoritmos populares, como SVM, parecen que son capaces de manejar.

Scikit ofrece soporte para algunos de estos algoritmos (SVM, kNN, kmeans, ...). Supongo que este bonito gráfico puede ayudar a determinar rápidamente si scikit tiene sentido para usted en todo.

Espero que ayude

NOTA: lo que sigue es una respuesta en el comentario por zelazny7

Ahora he entendido. Lo que se busca es la de pandas. Echa un vistazo a las conversaciones de la sección. Hay una presentación de la comparación de Panda del flujo de trabajo y del panda brevemente. Panda le permite importar datos en diferentes formatos y manejar bgu archivos a través de HDF5 tablas de integración. Además, puedes interfaz Scikit.

2voto

Boris Tsirelson Puntos 191

Graphchi es excelente y puede manejar grandes conjuntos de datos. Es un poco de dolor para trabajar con, pero pueden manejar los datos gráficos y no gráficos.

2voto

Marcel Lamothe Puntos 133

Ya se sienten cómodos con SAS, y los conjuntos de datos son lo suficientemente pequeños para caber en la memoria RAM, pero tal vez usted no puede caber suficiente memoria RAM en tu computadora portátil. Si no le importa quedarse con SAS, ¿y usted sólo tiene que conectar a SAS ejecuta de forma remota en un equipo con mucha RAM? No tengo idea de cómo funciona, pero estos enlaces pueden ayudarle a empezar.

Hay otros grandes razones para el uso de los Pandas o R, pero no creo que usted necesita preocuparse acerca de los límites de la memoria. Si usted no puede caber suficiente memoria en su ordenador, ejecute el Python o R ejemplo en otros lugares y conectar con SSH, iPython Notebook o RStudio.

-1voto

jws121295 Puntos 36

¿Usted ha considerado un "Real", no-lenguaje interpretado como Fortran?

Parece que las sugerencias de los que hasta ahora son muy proveedor dependiente o interpretado. Interpretado métodos son muy malos en la memoria de las aplicaciones intensas. MatLab puede ser mucho más alto nivel de un idioma de "C", pero el manejo de la memoria optimizaciones en C puede hacer es manejar 100 veces más rápido conjuntos de datos que son millones de veces más grande.

Tanto la "R" y "Python" son maravillosos, de alto nivel, técnicamente rica y muy utilizado idiomas. Ellos también son interpretados.

Usted podría considerar uno de los R-en-Hadoop instancias. (Rhipe, otros) Esto tiene la ventaja de ser capaz de traducir R (de alto nivel, fácil de programar) en MapReduce/Hadoop instrucciones. Hadoop puede hacer un interesante pobres-mans multiprocesamiento clúster.

http://www.datadr.org/ <- (Rhipe link)

Fortran se ha desarrollado durante décadas. Es muy eficiente en el manejo de la memoria, y de la compilación. También tiene algo de más alto nivel de las bibliotecas, de modo que puede hacer muy technially sofisticadas operaciones muy simple. Yo podría a un baúl de juguetes de CFD en MatLab, pero para algo realista y auto-codificado, me gustaría utilizar Fortran para el "big iron" procesamiento y soemthing como MatLab o R para la presentación/resumen de datos.

Fortran y Rhipe son accesibles. MatLab cuesta dinero, y si mi trabajo no pagar por ello, entonces yo estaría utilizando R o Python ahora.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X