Domanda

R ha molte librerie che mirano a Analisi dei dati (per esempio JAGS, BUG, ??ARULES ecc ..), ed è menzionato nei libri di testo popolari come: J.Krusche, Praticando bayesiana analisi dei dati; B.Lantz, "Machine Learning con R".

ho visto una linea guida di 5 TB per un set di dati per essere considerata come Big Data.

La mia domanda è: è R adatto per la quantità di dati tipicamente visto in problemi Big Data? Ci sono strategie da impiegare quando si utilizza R con questo formato di set di dati?

È stato utile?

Soluzione

In realtà questo è in arrivo intorno. Nel libro R in breve c'è anche una sezione sull'utilizzo R con Hadoop per grande elaborazione dati. Ci sono alcuni arounds di lavoro che devono essere fatte, perché fa tutto R è un lavoro in memoria, così si sono fondamentalmente limitati alla quantità di RAM che avete a disposizione per voi.

Un progetto maturo per R e Hadoop è RHadoop

RHadoop è stato suddiviso in diversi sottoprogetti, rhdfs, rhbase, rmr2, plyrmr, e quickcheck ( wiki ) .

Altri suggerimenti

Il problema principale con l'utilizzo di R per grandi insiemi di dati è il vincolo RAM. La ragione di mantenere tutti i dati in RAM è che fornisce l'accesso molto più veloce e manipolazioni di dati di quanto sarebbe la memorizzazione sui dischi rigidi. Se siete disposti a prendere un colpo sulle prestazioni, allora sì, è abbastanza pratico per il lavoro con grandi serie di dati in R .

  • RODBC pacchetto: Consente la connessione al DB esterno da R per recuperare e il trattamento dei dati. Quindi, i dati essendo manipolata è limitato al vostro RAM. Il set di dati nel complesso può andare molto più grande.
  • Il pacchetto FF consente di utilizzare più grande di insiemi di dati di RAM utilizzando le pagine di memoria mappati.
  • BigLM: costruisce modelli lineari generalizzati sui dati di grandi dimensioni. Si carica i dati in memoria in blocchi.
  • bigmemory: Un pacchetto R che permette potenti e la memoria efficiente parallelo analisi e data mining di insiemi di dati enormi. Esso consente la memorizzazione di grandi oggetti (matrici etc.) in memoria (nella RAM) utilizzando oggetti puntatore esterni per riferirsi a loro.

alcune buone risposte qui. Vorrei partecipare alla discussione, aggiungendo le seguenti tre nota :

  1. L'enfasi della domanda sul volume di dati facendo riferimento a Big Data è certamente comprensibile e valido, soprattutto considerando la problema di crescita dei volumi di dati superando la crescita esponenziale delle capacità tecnologiche per la legge di Moore ( http://en.wikipedia.org/wiki/Moore%27s_law ).

  2. Detto questo, è importante ricordare su altri aspetti di grande concetto di dati. Sulla base di Gartner 's definizione (sottolineatura mia - AB): " Dati Big è alto Volume , alta velocità , e / o ad alto varietà le risorse informative che richiedono nuove forme di trattamento per consentire una maggiore processo decisionale, la scoperta intuizione e l'ottimizzazione dei processi." (Di solito denominato " modello 3VS "). Dico questo, perché costringe gli scienziati di dati e altri analisti di cercare e pacchetti uso R che si concentrano sulla diversi volumi aspetti di grandi dati (abilitato dal ricchezza di enorme R ecosistema ).

  3. Mentre le risposte esistenti citare alcuni pacchetti R, legati ai grandi di dati, per una più una copertura completa , mi consiglia di fare riferimento a CRAN Task Visualizza < strong> "High-performance Computing e in parallelo con R" ( http : //cran.r-project.org/web/views/HighPerformanceComputing.html ), in particolare, le sezioni "calcolo parallelo: Hadoop" e "Grosse memorie e fuori dati-of-memoria ".

R è ideale per i "grandi dati"! Tuttavia, è necessario un flusso di lavoro dal momento che R è limitata (con qualche semplificazione) dalla quantità di RAM nel sistema operativo. L'approccio che prendo è quello di interagire con un database relazionale (si veda il pacchetto RSQLite per la creazione e l'interazione con un databse SQLite), eseguire le query SQL-stile per capire la struttura dei dati, e quindi estrarre particolari sottoinsiemi di dati per computationally- analisi statistica intensiva.

Questo solo un approccio, però: ci sono pacchetti che consentono di interagire con altri database (ad esempio, Monet) o analisi correre in R con meno limitazioni di memoria (ad esempio, vedere pbdR)

.

In considerazione altri criteri, penso che in alcuni casi utilizzando Python può essere molto superiore a R per Big Data. So che l'uso diffuso di R in materiale didattico di scienze dati e le librerie di analisi dei dati buona disponibili per esso, ma a volte dipende solo sulla squadra.

Nella mia esperienza, per le persone già familiarità con la programmazione, utilizzando Python offre molto di più flessibilità e produttività spinta rispetto ad un linguaggio come R, che non è così ben progettato e potente rispetto a Python in termini di un linguaggio di programmazione. A testimonianza, in un corso di data mining nella mia università, il miglior progetto definitivo è stato scritto in Python, anche se gli altri ha accesso alla libreria di analisi dei dati ricca di R. Cioè, a volte la produttività complessiva (considerando i materiali di apprendimento, documentazione, ecc) per Python può essere migliore di R anche in mancanza di librerie di analisi dei dati per un fine particolare per Python. Inoltre, ci sono alcuni articoli che spiegano bene il rapido ritmo di Python nella scienza dei dati: Python spostando R e Strutture Rich scientifico di dati in Python che presto possa riempimento il divario di librerie disponibili per R.

Un altro motivo importante per non usare R è quando si lavora con reali problemi di Big Data, contrariamente a solo problemi accademici, c'è molto bisogno di altri strumenti e tecniche, come i dati di parsing, la pulizia, la visualizzazione, web rottamazione, e un sacco di altri che sono molto più facile usando un linguaggio di programmazione general purpose. Questo può essere il motivo per cui la lingua predefinita utilizzata in molti corsi Hadoop (tra cui l'Udacity corso online ) è Python.

Modifica

Recentemente DARPA ha anche investito $ 3 milioni di dollari di trasformazione aiuto del fondo di Python dei dati e funzionalità di visualizzazione per i lavori Big Data, che è chiaramente un segno del futuro di Python in Big Data. ( )

R è grande per un sacco di analisi. Come accennato circa, ci sono adattamenti più recenti dati di grandi dimensioni come MAPR, RHadoop, e le versioni scalabili di RStudio.

Tuttavia, se la preoccupazione è librerie, tenere d'occhio Spark. Spark è stato creato per i grandi dati ed è molto più veloce rispetto al solo Hadoop. Si è notevolmente in crescita machine learning, SQL, lo streaming e librerie grafico. Permettendo così tanto se non tutte le analisi da fare nel quadro (con più API lingua, io preferisco Scala) senza dover mischiare tra lingue / strumenti.

Come altre risposte hanno notato, R può essere utilizzato insieme con Hadoop e altre piattaforme informatiche distribuite in scala fino al livello "Big Data". Tuttavia, se non sei sposata a R specifico, ma sono disposti a usare una "R-like" ambiente, Incanter è un progetto che potrebbe funzionare bene per voi, in quanto è nativo della JVM (sulla base di Clojure) e non ha il "disadattamento di impedenza" tra sé e Hadop che R ha. Vale a dire, da Incanter, è possibile richiamare le API Java Native Hadoop / HDFS, senza bisogno di passare attraverso un ponte JNI o ??altro.

Sono lontano da un esperto, ma la mia comprensione del soggetto mi dice che R (superba nelle statistiche) e per esempio Python (superba in molti di quelle cose in cui R è carente) integra l'altro abbastanza bene (come fuori punte da post precedenti).

Credo che ci sia in realtà una pletora di strumenti per lavorare con grandi dati in R. sparklyr sarà un grande giocatore in quel campo. sparklyr è un'interfaccia R per Apache Spark e consente il collegamento con cluster locali e remoti, fornendo un back-end dplyr. Si può anche fare affidamento su librerie di apprendimento automatico di Apache Spark. Inoltre elaborazione parallela è possibile con diversi pacchetti come RMPI e neve (controllato dall'utente) o DOMC / foreach (sistema basato).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top