Pregunta

R tiene muchas bibliotecas que tienen por objeto el análisis de datos (por ejemplo JAGS, insectos, etc .. ARULES), y se menciona en los libros de texto populares, tales como: J.Krusche, hacer un análisis bayesiano de datos; B.Lantz, "la máquina de aprendizaje con R".

he visto una pauta de 5 TB para un conjunto de datos a ser considerados como grandes volúmenes de datos.

Mi pregunta es: ¿Es R adecuada para la cantidad de datos por lo general se ve en problemas grandes volúmenes de datos? ¿Existen estrategias para ser empleadas cuando se utiliza R con este tamaño de conjunto de datos?

¿Fue útil?

Solución

En realidad esto viene alrededor. En el libro I en una cáscara de nuez hay incluso una sección sobre el uso de R con Hadoop para el procesamiento de grandes volúmenes de datos. Hay algunos arounds de trabajo que hay que hacer porque R 'hará todo lo del trabajo en la memoria, por lo que son, básicamente limitada a la cantidad de RAM que tiene a su disposición.

A maduro proyecto para R y Hadoop es RHadoop

RHadoop se ha dividido en varios sub-proyectos, rhdfs, rhbase, rmr2, plyrmr y QuickCheck ( wiki ) .

Otros consejos

El principal problema con el uso de R para grandes conjuntos de datos es la restricción RAM. La razón detrás de mantener todos los datos en la memoria RAM es que proporciona acceso mucho más rápido y manipulaciones de datos de lo que sería el almacenamiento en discos duros. Si usted está dispuesto a tomar un golpe en el rendimiento, entonces sí, es bastante práctico para el trabajo con grandes conjuntos de datos en R .

  • RODBC paquete: Permite la conexión a base de datos externa de R para recuperar los datos y mango. Por lo tanto, siendo los datos manipulada se limita a la memoria RAM. El conjunto de datos global puede ir mucho más grande.
  • El paquete ff permite el uso de más grande que los conjuntos de datos RAM mediante la utilización de páginas de memoria mapeada.
  • BigLM: Se basa en modelos lineales generalizados de datos grandes. Se carga los datos en la memoria en trozos.
  • bigmemory: Un paquete de R que permite paralelo potente y eficaz memoria análisis y extracción de datos de los conjuntos de datos masivos. Permite el almacenamiento de objetos grandes (matrices, etc.) en la memoria (en la RAM) usando objetos externos puntero para referirse a ellos.

Algunas buenas respuestas aquí. Me gustaría unirse a la discusión mediante la adición de los siguientes tres notas

  1. El énfasis de la pregunta en el volumen de datos mientras se hace referencia a Big Data es ciertamente comprensible y válido, sobre todo teniendo en cuenta la problema del crecimiento del volumen de datos superando crecimiento exponencial capacidades tecnológicas por la Ley de Moore ( http://en.wikipedia.org/wiki/Moore%27s_law ).

  2. Una vez dicho esto, es importante recordar acerca de otros aspectos del concepto de grandes volúmenes de datos. Sobre la base de Gartner 's definición (el énfasis es mío - AB): " Big data es alta volumen , de alta velocidad y / o alta variedad los activos de información que requieren nuevas formas de procesamiento para permitir la toma de decisiones mejorada, el descubrimiento de la penetración y la optimización de procesos ". (Por lo general referido como el " 3VS modelo "). Menciono esto, porque obliga a los científicos de datos y otros analistas para buscar y paquetes de uso R que se centran en distintos de volumen los aspectos de grandes volúmenes de datos (habilitado por el riqueza de enorme R ecosistema ).

  3. Si bien las respuestas existentes mencionan algunos paquetes R, en relación con los grandes datos, para una mayor amplia cobertura , lo recomiendo para referirse a CRAN vista de tareas < strong> "de alto rendimiento y computación paralela con R" ( http : //cran.r-project.org/web/views/HighPerformanceComputing.html ), en particular, secciones "computación en paralelo: Hadoop" y "memoria grande y fuera los datos -de-memoria ".

R es grande para los "grandes datos"! Sin embargo, se necesita un flujo de trabajo puesto que R es limitado (con un poco de simplificación) por la cantidad de RAM en el sistema operativo. El enfoque que tomo es para interactuar con una base de datos relacional (véase el paquete RSQLite para crear e interactuar con un DATABSE SQLite), ejecutar consultas SQL de estilo de entender la estructura de los datos, y luego extraer subconjuntos particulares de los datos para computationally- análisis estadístico intensivo.

Esto se utiliza un enfoque, sin embargo: hay paquetes que le permiten interactuar con otras bases de datos (por ejemplo, Monet) o ejecutar análisis en R con menos limitaciones de memoria (por ejemplo, véase pbdR)

.

Teniendo en cuenta otros criterios, creo que en algunos casos utilizando Python puede ser muy superior a R para grandes volúmenes de datos. Sé que el uso generalizado de R en materiales educativos de la ciencia de datos y las bibliotecas de análisis de datos buena para él, pero a veces sólo depende de su equipo.

En mi experiencia, para las personas que ya están familiarizados con la programación, utilizando Python proporciona mucha más flexibilidad y aumentar la productividad en comparación con un lenguaje como R, que no es tan bien diseñado y potente en comparación con Python en términos de un lenguaje de programación. Como prueba, en un curso de minería de datos en mi universidad, el mejor proyecto final fue escrito en Python, aunque los otros tiene acceso a la biblioteca de análisis de datos rica de R. Es decir, a veces la productividad general (teniendo en cuenta los materiales de aprendizaje, documentación, etc.) para Python puede ser mejor que R incluso en la falta de bibliotecas de análisis de datos de propósito especial para Python. Además, hay algunos artículos buenos que explican el rápido ritmo de Python en la ciencia de datos: Python El desplazamiento R y Estructuras de datos Científica rico en Python que luego puede llenar la brecha de bibliotecas disponibles para R.

Otra razón importante para no usar R es cuando se trabaja con el mundo real los problemas de grandes volúmenes de datos, al contrario de sólo los problemas académicos, hay mucha necesidad de otras herramientas y técnicas, como de análisis de datos, limpieza, visualización, desguace web, y mucho de otros que están mucho más fácil utilizando un lenguaje de programación de propósito general. Tal vez por eso el idioma por defecto utilizado en muchos cursos de Hadoop (incluyendo del Udacity curso en línea ) es Python.

Editar

Recientemente DARPA también ha invertido $ 3 millones para ayudar a financiar el procesamiento de Python de datos y capacidades de visualización para los trabajos grandes de datos, que es claramente un signo de futuro de Python en grandes volúmenes de datos. ( )

R es ideal para una gran cantidad de análisis. Como se ha mencionado sobre, hay nuevas adaptaciones para grandes volúmenes de datos como MapR, RHadoop, y las versiones escalables de rstudio.

Sin embargo, si su preocupación es bibliotecas, mantener el ojo en la chispa. Spark fue creado para grandes volúmenes de datos y es mucho más rápido que Hadoop solo. Se ha enormemente creciente de aprendizaje automático, SQL, streaming y bibliotecas de gráficos. Permitiendo así tanto si no todos los análisis a realizar en el marco (con múltiples API del lenguaje, prefiero Scala) sin tener que barajar entre los idiomas / herramientas.

Como han dicho en otras respuestas, R se puede utilizar junto con Hadoop y otras plataformas informáticas distribuidas modificar la escala hasta el nivel "Big Data". Sin embargo, si usted no está casado con R específicamente, pero está dispuesto a utilizar una "R-como" medio ambiente, embrujamiento es un proyecto que podría funcionar bien para usted, ya que es nativa de la JVM (basado en Clojure) y no tiene la "falta de concordancia" entre ella misma y Hadop que R tiene. Es decir, a partir de embrujamiento, puede invocar nativos de Java API HDFS / Hadoop sin necesidad de pasar por un puente JNI ni nada.

Estoy lejos de un experto, pero mi comprensión del tema me dice que R (excelente en las estadísticas) y, por ejemplo, Python (excelente en varias de esas cosas donde R es deficiente) complementa entre sí bastante bien (como en punta a cabo por los mensajes anteriores).

Creo que en realidad hay una pletora de herramientas para trabajar con grandes volúmenes de datos en R. sparklyr habrá un gran jugador en ese campo. sparklyr es una interfaz R a Spark Apache y permite la conexión con los racimos locales y remotas, proporcionando un back-end dplyr. También se puede confiar en las bibliotecas de aprendizaje automático de Apache chispa. Además el procesamiento en paralelo es posible con varios paquetes tales como RMPI y la nieve (controlado por el usuario) o DOMC / foreach (sistema basado).

Licenciado bajo: CC-BY-SA con atribución
scroll top