Herramientas de software de estadísticas y minería de datos para manejar grandes conjuntos de datos

27

Actualmente tengo que analizar aproximadamente 20 millones de registros y construir modelos de predicción. Hasta ahora he probado Statistica, SPSS, RapidMiner y R. Entre estos, Statistica parece ser el más adecuado para tratar la minería de datos y la interfaz de usuario de RapidMiner también es muy útil, pero parece que Statistica, RapidMiner y SPSS son adecuados solo para conjuntos de datos más pequeños. .

¿Alguien podría recomendar una buena herramienta para grandes conjuntos de datos?

¡Gracias!

niko
fuente
66
¿Puedes ser un poco más específico? ¿Qué es lo que realmente quiere extraer de datos y cómo planea hacerlo? He usado R para analizar registros de tamaño similar al tuyo, y no fue una mala experiencia en absoluto.
suncoolsu
Esta pregunta tendrá una fecha rápida. Puede ser bueno tener un resumen semestral (wiki) para lo último en tales herramientas.
Iterator

Respuestas:

19

Segundo comentario de @suncoolsu: la dimensionalidad de su conjunto de datos no es el único criterio que debería orientarlo hacia un software específico. Por ejemplo, si solo está planeando agrupar sin supervisión o usar PCA, existen varias herramientas dedicadas que hacen frente a grandes conjuntos de datos, como se encuentra comúnmente en los estudios genómicos.

Ahora, R (64 bits) maneja grandes cantidades de datos bastante bien, y usted todavía tiene la opción de almacenamiento en disco utilización en lugar de acceso a la RAM, pero ver CRAN vista de tareas de alto rendimiento y computación paralela con R . GLM estándar puede acomodar fácilmente 20,000 obs. (pero vea también speedglm ) dentro de un tiempo razonable, como se muestra a continuación:

> require(MASS)
> n <- 20000
> X <- mvrnorm(n, mu=c(0,0), Sigma=matrix(c(1,.8,.8,1), 2, 2))
> df <- cbind.data.frame(X, grp=gl(4, n/4), y=sample(c(0,1), n, rep=TRUE))
> system.time(glm(y ~ ., data=df))
   user  system  elapsed
  0.361   0.018    0.379

Para dar una ilustración más concreta, utilicé R para procesar y analizar datos genéticos grandes (800 individuos x 800k SNPs , donde el modelo estadístico principal era un GLM estratificado con varias covariables (2 min); eso fue posible gracias a R eficiente y Códigos C disponibles en el paquete snpMatrix (en comparación, el mismo tipo de modelo tomó alrededor de 8 minutos usando un software dedicado C ++ ( plink ). También trabajé en un estudio clínico (12k pacientes x 50 variables de interés) y R se ajusta a mis necesidades Finalmente, hasta donde yo sé, el paquete lme4 es el único software que permite ajustar el modelo de efectos mixtos con conjuntos de datos grandes y no balanceados (como es el caso de la evaluación educativa a gran escala).

Stata / SE es otro software que puede manejar grandes conjuntos de datos . SAS y SPSS son software basado en archivos, por lo que manejarán grandes volúmenes de datos. Una revisión comparativa del software para minería de datos está disponible en Herramientas de minería de datos: cuál es el mejor para CRM . Para la visualización, también hay muchas opciones; quizás un buen comienzo es Gráficos de grandes conjuntos de datos: visualizar un millón ( revisado en el JSS por P Murrell), y todos los hilos relacionados en este sitio.

chl
fuente
@chl: ¿Ha encontrado una solución de computación paralela efectiva para R de 64 bits? La última vez que miré (a fines de este verano) los únicos no comerciales parecían funcionar solo en 32 bits R.
whuber
1
@whuber Nope. Tuve que cambiar a 64 bits el año pasado para administrar grandes conjuntos de datos genéticos, pero los modelos estadísticos que utilizamos no requieren paralelización (que yo sepa). Pensé que había un enlace OpenMP para R pero no investigé esto más a fondo. Sé que Revolution Analytics ha hecho un esfuerzo en este sentido ( j.mp/d7dFb5 ), pero aún en 32 bits (esto es probablemente a lo que se refirió). Mientras tanto, encontré R / parallel ( rparallel.org ), pero no sé cuán confiable / maduro es.
chl
@chl Los probé todos pero no pude hacer que ninguno de ellos funcionara.
whuber
@Whuber: ¿estás en Windows o en una caja * nix (mac, linux, ...)
user603
2
Le recomendaría que instale ubuntu (google 'descargar ubuntu') y que ejecute sus aplicaciones solo para Windows desde ubuntu a través de virtualbox ( youtube.com/watch?v=KXgKnd-u2R4 ). Los editores R y latex se ejecutan en ubuntu como un encanto.
usuario603
8

La mayoría de los algoritmos en Apache Mahout escalan mucho más allá de los registros de 20M, incluso con datos de alta dimensión. Si solo necesita construir un modelo de predicción, existen herramientas específicas como Vowpal Wabbit (http://hunch.net/~vw/) que pueden escalar fácilmente a miles de millones de registros en una sola máquina.

Pedro Oliveira
fuente
Genial ... ¡No estaba al tanto de eso!
chl
7

Existe el paquete RHIPE (integración R-Hadoop). Puede hacer que sea muy fácil (con excepciones) analizar grandes cantidades de datos en R.

suncoolsu
fuente
¿Tienes éxito con eso? En caso afirmativo, ¿para qué tipo de aplicación?
chl
Sí, RHIPE es genial. Algunos de mis amigos lo usan para analizar datos de tráfico de Internet. Uno de sus objetivos es modelar los intentos de robo. Los datos son enormes en tales casos, ¡los petabytes son comunes!
suncoolsu
4

Es difícil dar una buena respuesta sin saber qué tipo de modelos tiene en mente.

Para la regresión lineal, he utilizado con éxito el paquete biglm en R.

NPE
fuente
4

Como está creando modelos predictivos a partir de grandes conjuntos de datos, podría beneficiarse de BigQuery de Google (una versión alojada de la tecnología del documento de investigación de Google sobre análisis masivo de conjuntos de datos con Dremel). Puede exportar los resultados de la consulta como CSV para ingestión en un clasificador predictivo, por ejemplo.

BigQuery tiene una WebUI que le permite ejecutar consultas y exportar resultados. La versión beta (v1) de BigQuery presentaba un cliente R, y la versión de producción (v2) eventualmente tendrá un cliente R también.

Michael Manoochehri
fuente
3

Entrenamos observaciones de 3,5 millones y 44 características usando R de 64 bits en una instancia EC2 con 32 GB de RAM y 4 núcleos. Utilizamos bosques aleatorios y funcionó bien. Tenga en cuenta que tuvimos que preprocesar / manipular los datos antes del entrenamiento.

sabunime
fuente
3

SAS Enterprise Miner versión 6.2 no tendría problemas para manejar 20 millones de observaciones y una variedad de modelos que se pueden adaptar a su situación. Sin embargo, el problema con SAS suele ser el costo. Aquí hay un resumen de lo que SAS EM puede hacer: SAS EM 6.2: Novedades

Feral Oink
fuente
0

¡RHIPE es una gran solución, y probablemente elegiría esta si tuviera este problema! pero has considerado NCSS? Hasta donde yo sé, la última versión 10 puede construir estos modelos. El ver completo. es muy costoso, pero en varios servicios de escritorio remoto puede ejecutar la aplicación solo por una pequeña tarifa, pero no sé ... más bien verifique eso

Brandon
fuente